# Installation og konfiguration

## Forudsætninger

For at integrere succesfuldt med Netacea skal du have:

1. En AWS-konto med administrative rettigheder til Lambda og CloudFront.
2. En fungerende Amazon CloudFront-distribution.
3. Lambda-kodefil (.zip) - leveret af Netacea<mark style="color:green;">\*</mark>
4. Oplysninger om de relevante API- og hemmelige nøgler samt et Kinesis-endpoint - leveret af Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>.zip-filen, som Netacea har delt med dig, indeholder kodeafhængighederne, de tre Lambda-funktioner og konfigurationsfilen NetaceaConfig.js, som skal udfyldes med oplysningerne om din integration med Netacea.
{% endhint %}

## Oprettelse af Lambda-funktionerne

For at begynde at oprette Lambda-funktionerne skal du først logge ind på AWS-konsollen og navigere til 'Lambda'-applikationen. Dette kan gøres ved at søge efter 'Lambda' i brugergrænsefladen.

Når du er der, skal du kontrollere, at din placering/region er sat til `us-east-1.` Hvis ikke, skal du ændre den til dette. Lambda-funktioner skal oprettes i `us-east-1` AWS-regionen, ellers vil de ikke være tilgængelige til brug med CloudFront.

### Opret funktion

Netacea kræver 3 Lambda-funktioner til denne integration, og dette kan gennemføres ved at følge trinene beskrevet nedenfor. Du skal gentage denne proces for hver Lambda-funktion.

#### Oprettelse af funktionen

For at begynde at oprette funktionen skal du klikke på knappen Opret funktion, som er placeret i øverste højre hjørne af brugergrænsefladen

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

Når du har gjort dette, vil du se nedenstående skærmbillede.

Vælg venligst 'Author from scratch' og navngiv derefter funktionen. Netacea anbefaler, at hver funktion navngives efter funktionstypen med præfikset 'netacea\_'. Eksempler på disse kan findes nedenfor:

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

Hver funktion skal oprettes med standardindstillingerne under "Basic Information"

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

#### Tilladelser

Når du opretter Lambda-funktionerne, er det vigtigt at sikre, at de har den korrekte **standard udførelsesrolle**. Politikken, den skal indeholde, er **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Hvis der ikke findes en rolle med denne politik, skal der oprettes en. Se venligst nedenfor:

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

#### Upload af zip-filen

Når Lambda-funktionen er oprettet, skal Netacea-koden tilføjes ved at uploade den medfølgende zip-fil. Denne kan downloades fra Netacea Admin Portal.

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

Upload den af Netacea leverede zip-fil.

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

Når filen er uploadet til funktionen, skal du åbne `NetaceaConfig.json` fra Code Source-brugergrænsefladen og udfylde den med de oplysninger, Netacea har givet dig.

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

For mere information om hver attribut i konfigurationsfilen, se venligst nedenfor:

Kodestykket nedenfor viser `NetaceaConfig.json`-filen omtalt ovenfor. Denne skal udfyldes med de oplysninger, Netacea har leveret til din organisation. Dette kan kopieres og indsættes med alle relevante oplysninger fra Netacea Admin-portalen.

<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" %}
Attributten `mitigationType` bruges til at bestemme integrationstypen. Denne kan være en af tre værdier:

* "**INGEST**" - Denne integrationstilstand er kun overvågning, hvilket betyder, at ingen afhjælpningshandlinger vil blive udført. Dette anbefales under POC'er.
* "**MITIGATE**" - Dette er den "normale" integrationstilstand, hvilket betyder, at Netacea-løsningen vil overvåge og aktivt afhjælpe forespørgsler.
* "**INJECT**" - Denne tilstand bruges i tilpassede løsninger, hvor afhjælpningshandlingen fra Netacea kun vil være en anbefaling ved hjælp af HTTP-headers tilføjet til forespørgslen.
  {% endhint %}

{% hint style="danger" %}
De sidste tre konfigurationsvariabler bruges til at øge sikkerheden ved at skjule Netaceas standard cookienavne og værdier fra offentlig visning.
{% endhint %}

Når `NetaceaConfig.json`-koden er opdateret, skal du klikke på knappen **Deploy** for at gemme dine ændringer.

#### Rediger Runtime-indstillinger

Runtime-indstillingerne skal opdateres.

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

Rul ned under Code Source til sektionen Runtime settings, og klik på knappen **Edit**.

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

Her skal du ændre standardhandleren fra `index.handler` til det relevante funktionsnavn, du opretter (f.eks. brug `OriginResponse.handler` til funktionen *netacea\_origin\_response*). Brug nedenstående liste til at korrelere funktionsnavnet med den korrekte handler-funktion:

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

Når den korrekte handler er specificeret, skal du klikke på **Save**.

#### Tilføjelse af triggere

Når ændringerne er gemt og deployet, skal der tilføjes en CloudFront-trigger til Lambda-funktionen. Dette gør det muligt for CloudFront-distributionen at udføre Lambda-funktionen.\
\
Nederst til venstre i sektionen **Function overview** skal du klikke på Add Trigger.

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

En **Trigger configuration**-side vil blive vist, hvor muligheden for at vælge en trigger fra rullelisten præsenteres for brugeren. Som kilde skal du vælge CloudFront.

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

Vælg **Deploy to Lambda\@Edge**, og vælg den korrekte distribution og CloudFront Event, som vil have **samme navn som den funktion, du lige har oprettet** (f.eks. Viewer Request).

{% hint style="info" %}
For den **Netacea\_Viewer\_Request**-baserede hændelse er det påkrævet, at du vælger muligheden **Include Body**.
{% endhint %}

Vælg **Confirm deploy to Lambda\@Edge**, og klik derefter på **Deploy.**

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

Når den er deployet, vil dette oprette en ny version af funktionen og tilknytte CloudFront-triggeren. Denne funktion vil blive replikeret på tværs af alle regioner, og den tilknyttede distribution vil også blive opdateret.

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

{% hint style="warning" %}
Sørg venligst for, at ovenstående trin for oprettelse af funktionen og tilføjelse af en trigger er gennemført for hver Lambda\@Edge-funktion (**netacea\_viewer\_response**, **netacea\_viewer\_request** og **netacea\_origin\_response**)
{% endhint %}

### POST-metode

Netacea Lambda-funktionerne kræver også muligheden for at udføre POST-metoder som en del af vores Captcha-udfordring. For at aktivere dette skal du navigere til CloudFront i brugergrænsefladen. Dette kan gøres ved at søge efter 'CloudFront' i brugergrænsefladen

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

Når du er i CloudFront-applikationen, skal du vælge den distribution, som Lambda-funktionerne skal bruges med. Vælg derefter 'Behaviors'

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

Vælg derefter standardadfærden, og klik på 'Edit'. På denne side vil der være en sektion med titlen 'Allowed HTTP methods'. Hvis det ikke allerede er valgt, skal du klikke på radioknappen ved siden af 'GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE'

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

Du bør også kunne se **Function associations** nederst på denne side. Dette viser funktionstypen (Viewer request, Viewer response, Origin request) og deres tilknyttede Lambda\@Edge-funktion. Sørg venligst for, at 'Include body' er markeret for 'Viewer request'-funktionen.

Vælg derefter 'Save changes'

### Test

For at teste Lambda-funktionerne skal du vælge fanen **Test** og oprette en ny hændelse.

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

### Afslutning

Når ovenstående trin er gennemført, og funktionerne er deployet, vil Netacea-pluginet være aktivt.

Kontakt venligst Netacea for at diskutere de næste trin og sikre, at implementeringen af integrationen med Netacea er lykkedes.
