# Installasjon og konfigurasjon

## Forutsetninger

For å kunne integrere med Netacea, trenger du:

1. En AWS-konto med administratorrettigheter for Lambda og CloudFront.
2. En fungerende Amazon CloudFront-distribusjon.
3. Lambda-kodefil (.zip) - leveres av Netacea<mark style="color:green;">\*</mark>
4. Detaljer om relevante API- og hemmelige nøkler, samt et Kinesis-endepunkt - leveres av Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>.zip-filen som Netacea har delt med deg inneholder kodeavhengighetene, de tre Lambda-funksjonene og konfigurasjonsfilen NetaceaConfig.js som skal fylles ut med detaljene for din integrasjon med Netacea.
{% endhint %}

## Opprette Lambda-funksjonene

For å begynne å opprette Lambda-funksjonene, logg først inn på AWS-konsollen og naviger til «Lambda»-applikasjonen. Dette kan gjøres ved å søke etter «Lambda» i brukergrensesnittet.

Når du er der, kontroller at din lokasjon/region er satt til `us-east-1.` Hvis ikke, vennligst endre den til dette. Lambda-funksjoner må opprettes i `us-east-1` AWS-regionen, ellers vil de ikke være tilgjengelige for bruk med CloudFront.

### Opprett funksjon

Netacea krever 3 Lambda-funksjoner for denne integrasjonen, og dette kan gjøres ved å følge trinnene beskrevet nedenfor. Du må gjenta denne prosessen for hver Lambda-funksjon.

#### Opprette funksjonen

For å begynne å opprette funksjonen, klikk på knappen «Create function» øverst i høyre hjørne av brukergrensesnittet

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

Når du har gjort dette, vil du bli presentert med skjermbildet nedenfor.

Velg «Author from scratch» og gi funksjonen et navn. Netacea anbefaler at hver funksjon navngis etter funksjonstypen, med prefikset «netacea\_». Eksempler på dette finner du nedenfor:

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

Hver funksjon bør opprettes med standardinnstillingene under «Basic Information»

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

#### Tillatelser

Når du oppretter Lambda-funksjonene, er det viktig å sikre at de har riktig **standard utførelsesrolle**. Policyen den skal inneholde er **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Hvis det ikke finnes en rolle med denne policyen, må en opprettes. Se nedenfor:

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

#### Laste opp zip-filen

Når Lambda-funksjonen er opprettet, må Netacea-koden legges til ved å laste opp den medfølgende zip-filen. Denne kan lastes ned fra Netacea Admin Portal.

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

Last opp zip-filen levert av Netacea.

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

Når filen er lastet opp til funksjonen, åpne `NetaceaConfig.json` fra kodekilden i brukergrensesnittet og fyll den ut med detaljene du har mottatt fra Netacea.

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

For mer informasjon om hvert attributt i konfigurasjonsfilen, se nedenfor:

Kodebiten nedenfor viser `NetaceaConfig.json`-filen som er omtalt ovenfor. Denne må fylles ut med detaljene Netacea har gitt for din organisasjon. Dette kan kopieres og limes inn med alle relevante detaljer 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" %}
Attributtet `mitigationType` brukes til å bestemme integrasjonens modus. Dette kan være én av tre verdier:

* «**INGEST**» - Denne integrasjonsmodusen er kun for overvåking, noe som betyr at ingen mitigeringshandlinger vil bli utført. Dette anbefales under POC-er.
* «**MITIGATE**» - Dette er den «normale» integrasjonsmodusen, noe som betyr at Netacea-løsningen vil overvåke og aktivt mitigere forespørsler.
* «**INJECT**» - Denne modusen brukes i tilpassede løsninger der mitigeringshandlingen fra Netacea kun vil være en anbefaling ved bruk av HTTP-hoder lagt til forespørselen.
  {% endhint %}

{% hint style="danger" %}
De tre siste konfigurasjonsvariablene brukes til å øke sikkerheten ved å skjule Netaceas standard informasjonskapselnavn og -verdier fra offentlig innsyn.
{% endhint %}

Når `NetaceaConfig.json`-koden er oppdatert, klikk på **Deploy**-knappen for å lagre endringene dine.

#### Rediger kjøretidsinnstillinger

Kjøretidsinnstillingene må oppdateres.

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

Bla ned under Code Source til seksjonen Runtime settings og klikk på **Edit**-knappen.

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

Her endrer du standard handler fra `index.handler` til det relevante funksjonsnavnet du oppretter (f.eks. bruk `OriginResponse.handler` for *netacea\_origin\_response*-funksjonen). Bruk listen nedenfor for å korrelere funksjonsnavnet med riktig handler-funksjon:

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

Når riktig handler er spesifisert, klikk **Save**.

#### Legge til triggere

Når endringene er lagret og distribuert, må en CloudFront-trigger legges til Lambda-funksjonen. Dette tillater CloudFront-distribusjonen å kjøre Lambda-funksjonen.\
\
Nederst til venstre i **Function overview**-seksjonen, klikk Add Trigger.

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

En **Trigger configuration**-side vil vises, hvor brukeren får mulighet til å velge en trigger fra rullegardinmenyen. For kilden, velg CloudFront.

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

Velg **Deploy to Lambda\@Edge** og velg riktig distribusjon og CloudFront Event, som vil ha **samme navn som funksjonen du nettopp opprettet** (f.eks. Viewer Request).

{% hint style="info" %}
For **Netacea\_Viewer\_Request**-baserte hendelser er det påkrevd at du velger alternativet **Include Body**.
{% endhint %}

Velg **Confirm deploy to Lambda\@Edge** og klikk deretter **Deploy.**

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

Når den er distribuert, vil dette opprette en ny versjon av funksjonen og tilknytte CloudFront-triggeren. Denne funksjonen vil bli replikert på tvers av alle regioner, og den tilknyttede distribusjonen vil også bli oppdatert.

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

{% hint style="warning" %}
Vennligst sørg for at trinnene ovenfor for å opprette funksjonen og legge til en trigger er fullført for hver Lambda\@Edge-funksjon (**netacea\_viewer\_response**, **netacea\_viewer\_request** og **netacea\_origin\_response**)
{% endhint %}

### POST-metode

Netacea Lambda-funksjonene krever også muligheten til å utføre POST-metoder som en del av vår Captcha-utfordring. For å aktivere dette, naviger til CloudFront i brukergrensesnittet. Dette kan gjøres ved å søke etter «CloudFront» i brukergrensesnittet

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

Når du er inne i CloudFront-applikasjonen, velg distribusjonen som Lambda-funksjonene skal brukes med. Velg deretter «Behaviors»

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

Velg deretter standardoppførselen og klikk «Edit». På denne siden vil det være en seksjon med tittelen «Allowed HTTP methods». Hvis ikke allerede valgt, klikk på radioknappen ved siden av «GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE»

<figure><img src="https://1593596135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDPjN4x7oK4SzQBOlw6MQ%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 siden. Dette viser funksjonstypen (Viewer request, Viewer response, Origin request) og deres tilknyttede Lambda\@Edge-funksjon. Sørg for at «Include body» er avkrysset for «Viewer request»-funksjonen.

Velg deretter «Save changes»

### Testing

For å teste Lambda-funksjonene, velg **Test**-fanen og opprett en ny hendelse.

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

### Avslutning

Når trinnene ovenfor er fullført og funksjonene er distribuert, vil Netacea-pluginen være aktiv.

Vennligst ta kontakt med Netacea for å diskutere de neste trinnene og sikre at implementeringen av integrasjonen med Netacea har vært vellykket.
