# Asennus ja määritys

## Ennakkovaatimukset

Netacea-integraation onnistuneeseen käyttöönottoon tarvitset:

1. AWS-tilin, jolla on järjestelmänvalvojan oikeudet Lambda- ja CloudFront-palveluihin.
2. Toimivan Amazon CloudFront -jakelun.
3. Lambda-kooditiedoston (.zip) - toimittaa Netacea<mark style="color:green;">\*</mark>
4. Tiedot asiaankuuluvista API- ja salaisista avaimista sekä Kinesis-päätepisteen - toimittaa Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>Netacean kanssasi jakama .zip-tiedosto sisältää koodiriippuvuudet, kolme Lambda-funktiota sekä NetaceaConfig.js-määritystiedoston, joka tulee täyttää Netacea-integraatiosi tiedoilla.
{% endhint %}

## Lambda-funktioiden luominen

Aloita Lambda-funktioiden luominen kirjautumalla ensin AWS-konsoliin ja siirtymällä Lambda-sovellukseen. Tämä onnistuu etsimällä käyttöliittymässä hakusanalla "Lambda".

Kun olet perillä, tarkista että sijaintisi/alueesi on asetettu arvoon `us-east-1.` Jos ei ole, vaihda se tähän, sillä Lambda-funktiot on luotava `us-east-1` AWS-alueelle, muuten ne eivät ole käytettävissä CloudFrontin kanssa.

### Funktion luominen

Netacea edellyttää tähän integraatioon 3 Lambda-funktiota, ja tämä voidaan toteuttaa noudattamalla alla kuvattuja vaiheita. Sinun on toistettava tämä prosessi jokaisen Lambda-funktion osalta.

#### Funktion luominen

Aloita funktion luominen napsauttamalla Luo funktio -painiketta, joka sijaitsee käyttöliittymän oikeassa yläkulmassa

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

Tämän jälkeen sinulle esitetään alla oleva näkymä.

Valitse "Author from scratch" ja anna funktiolle nimi. Netacea suosittelee, että jokainen funktio nimetään funktiotyypin mukaan "netacea\_"-etuliitteellä. Esimerkkejä näistä alla:

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

Jokainen funktio tulee luoda "Basic Information" -kohdan oletusasetuksilla

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

#### Käyttöoikeudet

Lambda-funktioita luotaessa on tärkeää varmistaa, että niillä on oikea **oletussuoritusrooli**. Käytännön, joka sen tulisi sisältää, on **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Jos tällä käytännöllä ei ole roolia, sellainen on luotava. Katso alla:

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

#### Zip-tiedoston lataaminen

Kun Lambda-funktio on luotu, Netacea-koodi on lisättävä lataamalla toimitettu zip-tiedosto. Tämä on ladattavissa Netacea Admin Portalista.

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

Lataa Netacean toimittama zip-tiedosto.

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

Kun tiedosto on ladattu funktioon, avaa `NetaceaConfig.json` koodilähdekäyttöliittymästä ja täytä se Netacean sinulle toimittamilla tiedoilla.

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

Lisätietoja määritystiedoston kustakin attribuutista löytyy alla:

Alla oleva koodinpätkä näyttää edellä käsitellyn `NetaceaConfig.json`-tiedoston. Tämä on täytettävä Netacean organisaatiollesi toimittamilla tiedoilla. Tämä voidaan kopioida ja liittää kaikkine asiaankuuluvine tietoineen Netacea Admin -portaalista.

<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" %}
Attribuuttia `mitigationType` käytetään integraation tilan määrittämiseen. Tämä voi olla yksi kolmesta arvosta:

* "**INGEST**" - Tämä integraatiotila on vain seurantaa varten, mikä tarkoittaa, ettei mitään torjuntatoimia suoriteta. Tätä suositellaan POC-vaiheiden aikana.
* "**MITIGATE**" - Tämä on "normaali" integraatiotila, mikä tarkoittaa, että Netacea-ratkaisu seuraa ja torjuu aktiivisesti pyyntöjä.
* "**INJECT**" - Tätä tilaa käytetään mukautetuissa ratkaisuissa, joissa Netacean torjuntatoiminto on vain suositus pyyntöön lisättyjen HTTP-otsikoiden avulla.
  {% endhint %}

{% hint style="danger" %}
Kolmea viimeistä määritysmuuttujaa käytetään tietoturvan parantamiseen piilottamalla Netacean oletusevästenimet ja -arvot julkiselta näkyvyydeltä.
{% endhint %}

Kun `NetaceaConfig.json`-koodi on päivitetty, napsauta **Deploy**-painiketta tallentaaksesi muutokset.

#### Suoritusympäristön asetusten muokkaaminen

Suoritusympäristön asetukset on päivitettävä.

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

Vieritä Code Source -kohdan alapuolelle Runtime settings -osioon ja napsauta **Edit**-painiketta.

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

Vaihda tässä oletuskäsittelijä arvosta `index.handler` luotavan funktion asiaankuuluvaan nimeen (esim. käytä `OriginResponse.handler` *netacea\_origin\_response*-funktiolle). Käytä alla olevaa luetteloa yhdistääksesi funktion nimen oikeaan käsittelijäfunktioon:

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

Kun oikea käsittelijä on määritetty, napsauta **Save**.

#### Triggereiden lisääminen

Kun muutokset on tallennettu ja otettu käyttöön, Lambda-funktioon on lisättävä CloudFront-triggeri. Tämä mahdollistaa CloudFront-jakelun suorittaa Lambda-funktion.\
\
Napsauta **Function overview** -osion vasemmassa alakulmassa Add Trigger.

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

**Trigger configuration** -sivu tulee näkyviin, jossa käyttäjälle esitetään mahdollisuus valita triggeri pudotusvalikosta. Valitse lähteeksi CloudFront.

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

Valitse **Deploy to Lambda\@Edge** ja valitse oikea jakelu sekä CloudFront Event, joka on **sama nimi kuin juuri luomasi funktio** (esim. Viewer Request).

{% hint style="info" %}
**Netacea\_Viewer\_Request**-pohjaiselle tapahtumalle on pakollista valita **Include Body** -vaihtoehto.
{% endhint %}

Valitse **Confirm deploy to Lambda\@Edge** ja napsauta sitten **Deploy.**

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

Käyttöönoton jälkeen tämä luo uuden version funktiosta ja liittää CloudFront-triggerin. Tämä funktio replikoidaan kaikkiin alueisiin ja siihen liitetty jakelu päivitetään myös.

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

{% hint style="warning" %}
Varmista, että yllä olevat vaiheet funktion luomiseksi ja triggerin lisäämiseksi on suoritettu jokaiselle Lambda\@Edge-funktiolle (**netacea\_viewer\_response**, **netacea\_viewer\_request** ja **netacea\_origin\_response**)
{% endhint %}

### POST-metodi

Netacea-Lambda-funktiot vaativat myös mahdollisuuden suorittaa POST-metodeja osana Captcha-haastettamme. Tämän mahdollistamiseksi siirry CloudFrontiin käyttöliittymässä. Tämä onnistuu etsimällä käyttöliittymässä hakusanalla "CloudFront"

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

Kun olet CloudFront-sovelluksessa, valitse jakelu, jonka kanssa Lambda-funktioita käytetään. Valitse sitten "Behaviors"

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

Valitse sitten oletuskäyttäytyminen ja napsauta "Edit". Tällä sivulla on osio nimeltä "Allowed HTTP methods" - jos ei ole jo valittuna, napsauta valintanappia kohdan "GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE" vieressä

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

Sinun tulisi myös nähdä **Function associations** tämän sivun alaosassa. Tämä näyttää funktiotyypin (Viewer request, Viewer response, Origin request) ja niihin liitetyt Lambda\@Edge-funktiot. Varmista, että "Include body" on valittuna "Viewer request" -funktiolle.

Valitse sitten "Save changes"

### Testaus

Testataksesi Lambda-funktioita, valitse **Test**-välilehti ja luo uusi tapahtuma.

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

### Viimeistely

Kun yllä olevat vaiheet on suoritettu ja funktiot on otettu käyttöön, Netacea-laajennus on aktiivinen.

Ota yhteyttä Netaceaan keskustellaksesi seuraavista vaiheista ja varmistaaksesi, että Netacea-integraation käyttöönotto on onnistunut.
