# Installation et configuration

## Pré-requis

Pour réussir l'intégration avec Netacea, vous aurez besoin de :

1. Un compte AWS avec des privilèges administratifs pour Lambda et CloudFront.
2. Une distribution Amazon CloudFront fonctionnelle.
3. Fichier de code Lambda (.zip) - fourni par Netacea<mark style="color:green;">\*</mark>
4. Les détails des clés API et secrètes pertinentes, ainsi qu'un endpoint Kinesis - fournis par Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>Le fichier .zip que Netacea a partagé avec vous contient les dépendances du code, les trois fonctions Lambda et le fichier de configuration NetaceaConfig.js qui doit être renseigné avec les détails de votre intégration avec Netacea.
{% endhint %}

## Création des Lambdas

Pour commencer à créer les fonctions Lambda, connectez-vous d'abord à la console AWS et accédez à l'application 'Lambda'. Cela peut être effectué en lançant une recherche depuis l'interface utilisateur pour 'Lambda'.

Une fois là, veuillez vérifier que votre emplacement/région est défini sur `us-east-1.` Sinon, veuillez le modifier, les fonctions Lambda doivent être créées dans la région AWS `us-east-1`, sinon elles ne seront pas disponibles pour une utilisation avec CloudFront.

### Créer une Fonction

Netacea nécessite 3 fonctions Lambda pour cette intégration et cela peut être effectué en suivant les étapes décrites ci-dessous. Vous devrez répéter ce processus pour chaque fonction Lambda.

#### Création de la Fonction

Pour commencer à créer la fonction, cliquez sur le bouton créer une fonction, situé dans le coin supérieur droit de l'interface utilisateur

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-1392ab3897c71e301291c828ca22a2658924fbbd%2Fimage%20(128).png?alt=media" alt=""><figcaption></figcaption></figure>

Une fois cela fait, l'écran ci-dessous vous sera présenté.

Veuillez sélectionner 'Créer à partir de zéro' puis nommer la fonction. Netacea suggère que chaque fonction soit nommée d'après chaque type de fonction, préfixée par 'netacea\_'. Des exemples sont présentés ci-dessous :

* netacea\_origin\_response
* netacea\_viewer\_request
* netacea\_viewer\_response

Chaque fonction doit être créée avec les paramètres par défaut sous "Informations de base"

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-0a71ffad38010a1bfe6816e41895946e06d0afd5%2Fimage%20(56).png?alt=media" alt=""><figcaption><p>Create Function Example Screenshot</p></figcaption></figure>

#### Permissions

Lors de la création des Lambdas, il est important de s'assurer qu'elles disposent du bon **rôle d'exécution par défaut**. La politique qu'il doit contenir est **Basic Lambda\@Edge permissions (for CloudFront trigger)**. S'il n'existe pas de rôle avec cette politique, il faudra en créer un. Veuillez voir ci-dessous :

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-ea450178c417c9cd0f6fb53e474b591a15f726fc%2FLambdaPermissions.png?alt=media" alt=""><figcaption><p>Permissions Example Screenshot</p></figcaption></figure>

#### Téléchargement du Fichier Zip

Une fois la fonction Lambda créée, le code Netacea devra être ajouté en téléchargeant le fichier zip fourni. Celui-ci peut être téléchargé depuis le Portail d'Administration Netacea.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-1134026692fb18f30f2ddd0f42b5fb5113bcd42e%2Fimage%20(55).png?alt=media" alt=""><figcaption></figcaption></figure>

Téléchargez le fichier zip fourni par Netacea.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-efc9ec3dac9e7d9ac2df87cdb7a7fe64ed5052d5%2Fimage%20(66).png?alt=media" alt=""><figcaption><p>Upload the zip file</p></figcaption></figure>

Une fois le fichier téléchargé dans la fonction, ouvrez le `NetaceaConfig.json` depuis l'interface utilisateur du code source et renseignez-le avec les détails fournis par Netacea.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-f078b5871303806e4b4f039818c0cfcd0dfa2197%2Fimage%20(58).png?alt=media" alt=""><figcaption></figcaption></figure>

Pour plus d'informations concernant chaque attribut dans le fichier de configuration, veuillez voir ci-dessous :

L'extrait de code ci-dessous montre le fichier `NetaceaConfig.json` discuté ci-dessus. Celui-ci doit être renseigné avec les détails que Netacea a fournis pour votre organisation. Cela peut être copié et collé avec tous les détails pertinents depuis le portail d'administration Netacea.

<pre class="language-json"><code class="lang-json">{
    "mitigationType": "CHOSEN-MITIGATION-TYPE",
    "apiKey": "API-KEY-PROVIDED-BY-NETACEA",
    "cookieEncryptionKey": "ENCRYPTION-KEY-PROVIDED-BY-NETACEA",
    "secretKey": "SECRET-KEY-PROVIDED-BY-NETACEA",
    "mitigationServiceUrl": "PROVIDED-BY-NETACEA",
    "ingestType": "KINESIS",
    "kinesis": {
<strong>        "kinesisStreamName": "NAME-PROVIDED-BY-NETACEA",
</strong>        "kinesisAccessKey": "KEY-PROVIDED-BY-NETACEA",
        "kinesisSecretKey": "KEY-PROVIDED-BY-NETACEA",
        "logBatchSize": 20,
        "maxLogAgeSeconds": 5
    },
    "netaceaCookieName": "_cookieName",
    "netaceaCookieAttributes": "HttpOnly; Secure",
    "netaceaCaptchaCookieName": "_captchaCookieName",
    "netaceaCaptchaCookieAttributes": "HttpOnly; Secure"
} 
</code></pre>

{% hint style="info" %}
L'attribut `mitigationType` est utilisé pour déterminer le mode de l'intégration. Il peut avoir l'une des trois valeurs suivantes :

* "**INGEST**" - Ce mode d'intégration est uniquement pour la surveillance, ce qui signifie qu'aucune action d'atténuation ne sera exécutée. Ceci est recommandé pendant les POCs.
* "**MITIGATE**" - Il s'agit du mode d'intégration "normal", ce qui signifie que la solution Netacea surveillera et atténuera activement les requêtes.
* "**INJECT**" - Ce mode est utilisé dans les solutions personnalisées dans lesquelles l'action d'atténuation par Netacea ne sera qu'une recommandation utilisant des en-têtes HTTP ajoutés à la requête.
  {% endhint %}

{% hint style="danger" %}
Les trois dernières variables de configuration sont utilisées pour renforcer la sécurité en masquant les noms et valeurs des cookies par défaut de Netacea du public.
{% endhint %}

Une fois le code `NetaceaConfig.json` mis à jour, cliquez sur le bouton **Déployer** pour enregistrer vos modifications.

#### Modifier les Paramètres d'Exécution

Les paramètres d'exécution devront être mis à jour.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-51845614bf736420753eb773c15e92f5fc7c7ccf%2Fimage%20(65).png?alt=media" alt=""><figcaption><p>Edit Runtime Settings</p></figcaption></figure>

Faites défiler sous Code Source jusqu'à la section Paramètres d'exécution et cliquez sur le bouton **Modifier**.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-263680f56b0a813f2dea33f116341eba7d7fec2f%2Fimage%20(62).png?alt=media" alt=""><figcaption></figcaption></figure>

Ici, changez le gestionnaire par défaut de `index.handler` vers le nom de la fonction pertinente que vous créez (par exemple, utilisez `OriginResponse.handler` pour la fonction *netacea\_origin\_response*). Utilisez la liste ci-dessous pour faire correspondre le nom de la fonction avec la fonction de gestionnaire correcte :

* netacea\_origin\_response -> `OriginResponse.handler`
* netacea\_viewer\_request -> `ViewerRequest.handler`
* netacea\_viewer\_response -> `ViewerResponse.handler`

Une fois le gestionnaire correct spécifié, cliquez sur **Enregistrer**.

#### Ajout des Déclencheurs

Une fois les modifications enregistrées et déployées, un déclencheur CloudFront doit être ajouté à la fonction Lambda. Cela permet à la distribution CloudFront d'exécuter la Lambda.\
\
En bas à gauche de la section **Vue d'ensemble de la fonction**, cliquez sur Ajouter un déclencheur.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-098b656b17d674bacf00535c3cfabb102138afc1%2FFunction.png?alt=media" alt=""><figcaption></figcaption></figure>

Une page de **Configuration du déclencheur** sera affichée, où l'option de sélectionner un déclencheur depuis le menu déroulant sera présentée à l'utilisateur. Pour la source, sélectionnez CloudFront.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-659e8b7f8a4cd463683e6b65af38d511ac817d70%2Fimage%20(61).png?alt=media" alt=""><figcaption></figcaption></figure>

Sélectionnez **Déployer vers Lambda\@Edge** et sélectionnez la distribution correcte, ainsi que l'Événement CloudFront, qui sera le **même nom que la fonction que vous venez de créer** (par exemple Viewer Request).

{% hint style="info" %}
Pour l'événement basé sur **Netacea\_Viewer\_Request**, il est requis de sélectionner l'option **Inclure le corps**.
{% endhint %}

Sélectionnez **Confirmer le déploiement vers Lambda\@Edge** puis cliquez sur **Déployer.**

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-143e709ab2c747740389d21d3d98917f8baf39fb%2Fimage%20(60).png?alt=media" alt=""><figcaption></figcaption></figure>

Une fois déployé, cela créera une nouvelle version de la fonction et associera le déclencheur CloudFront. Cette fonction sera répliquée dans toutes les régions et la distribution associée sera également mise à jour.

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-4286ca1cfbad7e8e0a2de50c91daeab940605133%2FFunctionOverview.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Veuillez vous assurer que les étapes ci-dessus pour créer la fonction et ajouter un déclencheur ont été complétées pour chaque fonction Lambda\@Edge (**netacea\_viewer\_response**, **netacea\_viewer\_request**, et **netacea\_origin\_response**)
{% endhint %}

### Méthode POST

Les Lambdas Netacea nécessitent également la capacité d'effectuer des méthodes POST dans le cadre de notre challenge Captcha. Pour activer cela, veuillez naviguer vers CloudFront dans l'interface utilisateur. Cela peut être fait en lançant une recherche pour 'CloudFront' dans l'interface utilisateur

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-a0a881d21ece8aabf7eda8df6e75a5840d6f3f2e%2Fimage%20(129).png?alt=media" alt=""><figcaption><p>Search for CloudFront</p></figcaption></figure>

Une fois dans l'application CloudFront, sélectionnez la distribution avec laquelle les Lambdas vont être utilisées. Puis veuillez sélectionner 'Comportements'

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-2c66be7feaad4b690dd54f3e6871b533f629695c%2Fimage%20(130).png?alt=media" alt=""><figcaption><p>Behaviors</p></figcaption></figure>

Ensuite, sélectionnez le comportement par défaut et cliquez sur 'Modifier'. Dans cette page, il y aura une section intitulée 'Méthodes HTTP autorisées'. Si ce n'est pas déjà sélectionné, veuillez cliquer sur le bouton radio à côté de 'GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE'

<figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-47b0618974f18b45a1a42bdde0d16d06b429ad75%2Fimage%20(131).png?alt=media" alt=""><figcaption><p>HTTP Methods</p></figcaption></figure>

Vous devriez également pouvoir voir les **Associations de fonctions** en bas de cette page. Cela montre le Type de fonction (Viewer request, Viewer response, Origin request) et leur fonction Lambda\@Edge associée. Veuillez vous assurer que 'Inclure le corps' est coché pour la fonction 'Viewer request'.

Veuillez ensuite sélectionner 'Enregistrer les modifications'

### Tests

Pour tester les Lambdas, sélectionnez l'onglet **Test** et créez un nouvel événement.

<div align="left"><figure><img src="https://899558619-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaRSpZrGcUHd5EHGjrrO5%2Fuploads%2Fgit-blob-e020cb855a03ec3d2430e537a3f9bc6d8e8b32ea%2FTesting.png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Finalisation

Une fois les étapes ci-dessus complétées et les fonctions déployées, le plugin Netacea sera actif.

Veuillez contacter Netacea pour discuter des prochaines étapes et vous assurer que la mise en œuvre de l'intégration avec Netacea a été réussie.
