# Installatie en Configuratie

## Vereisten

Voor een succesvolle integratie met Netacea heeft u het volgende nodig:

1. Een AWS-account met beheerdersrechten voor Lambda en CloudFront.
2. Een werkende Amazon CloudFront-distributie.
3. Lambda-codebestand (.zip) - verstrekt door Netacea<mark style="color:green;">\*</mark>
4. Gegevens van de relevante API- en geheime sleutels, en een Kinesis-eindpunt - verstrekt door Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>Het .zip-bestand dat Netacea met u heeft gedeeld bevat de code-afhankelijkheden, de drie Lambda-functies en het configuratiebestand NetaceaConfig.js dat moet worden ingevuld met de gegevens van uw integratie met Netacea.
{% endhint %}

## De Lambdas aanmaken

Om te beginnen met het aanmaken van de Lambda-functies, logt u eerst in op de AWS-console en navigeert u naar de 'Lambda'-applicatie. Dit kan worden gedaan door binnen de UI te zoeken naar 'Lambda'.

Controleer vervolgens of uw locatie/regio is ingesteld op `us-east-1.` Zo niet, wijzig dit dan naar deze instelling. Lambda-functies moeten worden aangemaakt in de `us-east-1` AWS-regio, anders zijn ze niet beschikbaar voor gebruik met CloudFront.

### Functie aanmaken

Netacea vereist 3 Lambda-functies voor deze integratie en dit kan worden voltooid door de onderstaande stappen te volgen. U dient dit proces te herhalen voor elke Lambda-functie.

#### De functie aanmaken

Om te beginnen met het aanmaken van de functie, klikt u op de knop 'create function', rechtsboven in de UI.

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

Nadat u dit heeft gedaan, krijgt u het onderstaande scherm te zien.

Selecteer 'Author from scratch' en geef de functie een naam. Netacea adviseert om elke functie te noemen naar het functietype, voorafgegaan door 'netacea\_'. Voorbeelden hiervan vindt u hieronder:

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

Elke functie dient te worden aangemaakt met de standaardinstellingen onder "Basic Information"

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

#### Machtigingen

Bij het aanmaken van de Lambdas is het belangrijk om te zorgen dat ze de juiste **default execution role** hebben. Het beleid dat deze moet bevatten is **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Als er geen rol met dit beleid bestaat, moet er een worden aangemaakt. Zie hieronder:

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

#### Het Zip-bestand uploaden

Nadat de Lambda-functie is aangemaakt, moet de Netacea-code worden toegevoegd door het meegeleverde zip-bestand te uploaden. Dit kan worden gedownload via het Netacea Admin Portal.

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

Upload het door Netacea verstrekte zip-bestand.

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

Nadat het bestand naar de functie is geüpload, opent u het `NetaceaConfig.json` vanuit de code source UI en vult u het in met de gegevens die u van Netacea heeft ontvangen.

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

Voor meer informatie over elk attribuut in het configuratiebestand, zie hieronder:

Het onderstaande codefragment toont het `NetaceaConfig.json`-bestand dat hierboven is besproken. Dit moet worden ingevuld met de gegevens die Netacea voor uw organisatie heeft verstrekt. Dit kan worden gekopieerd en geplakt met alle relevante gegevens vanuit het Netacea Admin portal.

<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" %}
Het attribuut `mitigationType` wordt gebruikt om de modus van de integratie te bepalen. Dit kan een van drie waarden zijn:

* "**INGEST**" - Deze integratiemodus is alleen monitoring, wat betekent dat er geen mitigatie-acties worden uitgevoerd. Dit wordt aanbevolen tijdens POC's.
* "**MITIGATE**" - Dit is de "normale" integratiemodus, wat betekent dat de Netacea-oplossing verzoeken zal monitoren en actief mitigeren.
* "**INJECT**" - Deze modus wordt gebruikt in aangepaste oplossingen waarbij de mitigatie-actie door Netacea slechts een aanbeveling is met behulp van HTTP-headers die aan het verzoek worden toegevoegd.
  {% endhint %}

{% hint style="danger" %}
De laatste drie configuratievariabelen worden gebruikt om de beveiliging te verhogen door de standaard cookienamen en -waarden van Netacea te verbergen voor publieke weergave.
{% endhint %}

Nadat de `NetaceaConfig.json`-code is bijgewerkt, klikt u op de knop **Deploy** om uw wijzigingen op te slaan.

#### Runtime-instellingen bewerken

De Runtime-instellingen moeten worden bijgewerkt.

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

Scroll onder Code Source naar de sectie Runtime settings en klik op de knop **Edit**.

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

Wijzig hier de standaard handler van `index.handler` naar de naam van de relevante functie die u aanmaakt (gebruik bijvoorbeeld `OriginResponse.handler` voor de *netacea\_origin\_response*-functie). Gebruik de onderstaande lijst om de functienaam te koppelen aan de juiste handler-functie:

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

Nadat de juiste handler is opgegeven, klikt u op **Save**.

#### De triggers toevoegen

Nadat de wijzigingen zijn opgeslagen en gedeployed, moet er een CloudFront-trigger worden toegevoegd aan de Lambda-functie. Dit stelt de CloudFront-distributie in staat om de Lambda uit te voeren.\
\
Klik linksonder in de sectie **Function overview** op Add Trigger.

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

Er wordt een **Trigger configuration**-pagina weergegeven, waar de gebruiker de optie krijgt om een trigger te selecteren uit de dropdown. Selecteer voor de bron CloudFront.

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

Selecteer **Deploy to Lambda\@Edge** en selecteer de juiste distributie en CloudFront Event, die **dezelfde naam heeft als de functie die u zojuist heeft aangemaakt** (bijv. Viewer Request).

{% hint style="info" %}
Voor het **Netacea\_Viewer\_Request**-gebaseerde event is het vereist dat u de optie **Include Body** selecteert.
{% endhint %}

Selecteer **Confirm deploy to Lambda\@Edge** en klik vervolgens op **Deploy.**

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

Na deployment wordt er een nieuwe versie van de functie aangemaakt en wordt de CloudFront-trigger gekoppeld. Deze functie wordt gerepliceerd naar alle regio's en de gekoppelde distributie wordt eveneens bijgewerkt.

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

{% hint style="warning" %}
Zorg ervoor dat de bovenstaande stappen voor het aanmaken van de functie en het toevoegen van een trigger zijn voltooid voor elke Lambda\@Edge-functie (**netacea\_viewer\_response**, **netacea\_viewer\_request**, en **netacea\_origin\_response**)
{% endhint %}

### POST-methode

De Netacea Lambdas vereisen ook de mogelijkheid om POST-methodes uit te voeren als onderdeel van onze Captcha-challenge. Om dit in te schakelen, navigeert u naar CloudFront binnen de UI. Dit kan worden gedaan door te zoeken naar 'CloudFront' binnen de UI

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

Binnen de CloudFront-applicatie selecteert u de distributie waarmee de Lambdas worden gebruikt. Selecteer vervolgens 'Behaviors'

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

Selecteer vervolgens het standaardgedrag en klik op 'Edit'. Op deze pagina is er een sectie met de titel 'Allowed HTTP methods'. Als deze nog niet is geselecteerd, klik dan op de radioknop naast 'GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE'

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

U zou ook de **Function associations** onderaan deze pagina moeten kunnen zien. Dit toont het Function Type (Viewer request, Viewer response, Origin request) en hun gekoppelde Lambda\@Edge-functie. Zorg ervoor dat 'Include body' is aangevinkt voor de 'Viewer request'-functie.

Selecteer vervolgens 'Save changes'

### Testen

Om de Lambdas te testen, selecteert u het tabblad **Test** en maakt u een nieuw event aan.

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

### Afronden

Nadat de bovenstaande stappen zijn voltooid en de functies zijn gedeployed, is de Netacea-plugin actief.

Neem contact op met Netacea om de volgende stappen te bespreken en te verzekeren dat de implementatie van de integratie met Netacea succesvol is geweest.
