# Installazione e configurazione

## Prerequisiti

Per integrare con successo utilizzando Netacea, sarà necessario disporre di:

1. Un account AWS con privilegi amministrativi per Lambda e CloudFront.
2. Una distribuzione Amazon CloudFront funzionante.
3. File di codice Lambda (.zip) - fornito da Netacea<mark style="color:green;">\*</mark>
4. Dettagli relativi alle chiavi API e Secret pertinenti e un endpoint Kinesis - forniti da Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>Il file .zip che Netacea ha condiviso con voi contiene le dipendenze del codice, le tre funzioni Lambda e il file di configurazione NetaceaConfig.js che deve essere compilato con i dettagli della vostra integrazione con Netacea.
{% endhint %}

## Creazione delle Lambda

Per iniziare a creare le funzioni Lambda, accedere prima alla console AWS e navigare all'applicazione 'Lambda'. Questa operazione può essere completata eseguendo una ricerca per 'Lambda' dall'interfaccia utente.

Una volta lì, verificare che la propria posizione/regione sia impostata su `us-east-1.` In caso contrario, modificarla di conseguenza; le funzioni Lambda devono essere create nella regione AWS `us-east-1`, altrimenti non saranno disponibili per l'utilizzo con CloudFront.

### Creazione della Funzione

Netacea richiede 3 funzioni Lambda per questa integrazione e ciò può essere completato seguendo i passaggi descritti di seguito. Sarà necessario ripetere questo processo per ciascuna funzione Lambda.

#### Creazione della Funzione

Per iniziare a creare la funzione, fare clic sul pulsante di creazione funzione, situato nell'angolo in alto a destra dell'interfaccia utente

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

Una volta completata questa operazione, verrà visualizzata la schermata seguente.

Selezionare 'Author from scratch' e quindi assegnare un nome alla funzione. Netacea suggerisce di denominare ciascuna funzione in base al tipo di funzione, con prefisso 'netacea\_'. Di seguito sono riportati alcuni esempi:

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

Ciascuna funzione deve essere creata con le impostazioni predefinite nella sezione "Basic Information"

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

#### Permessi

Durante la creazione delle Lambda, è importante assicurarsi che dispongano del corretto **ruolo di esecuzione predefinito**. La policy che deve contenere è **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Se non esiste un ruolo con questa policy, sarà necessario crearne uno. Vedere di seguito:

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

#### Caricamento del File Zip

Una volta creata la funzione Lambda, sarà necessario aggiungere il codice Netacea caricando il file zip fornito. Questo può essere scaricato dal Netacea Admin Portal.

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

Caricare il file zip fornito da Netacea.

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

Una volta caricato il file nella funzione, aprire il file `NetaceaConfig.json` dall'interfaccia utente del codice sorgente e compilarlo con i dettagli forniti da Netacea.

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

Per ulteriori informazioni su ciascun attributo nel file di configurazione, vedere di seguito:

Il frammento di codice seguente mostra il file `NetaceaConfig.json` discusso in precedenza. Questo deve essere compilato con i dettagli che Netacea ha fornito per la vostra organizzazione. Può essere copiato e incollato con tutti i dettagli pertinenti dal 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" %}
L'attributo `mitigationType` viene utilizzato per determinare la modalità dell'integrazione. Può assumere uno dei tre valori seguenti:

* "**INGEST**" - Questa modalità di integrazione è solo di monitoraggio, il che significa che non verranno eseguite azioni di mitigazione. È consigliata durante i POC.
* "**MITIGATE**" - Questa è la modalità di integrazione "normale", il che significa che la soluzione Netacea monitorerà e mitigherà attivamente le richieste.
* "**INJECT**" - Questa modalità viene utilizzata in soluzioni personalizzate in cui l'azione di mitigazione da parte di Netacea sarà solo una raccomandazione tramite intestazioni HTTP aggiunte alla richiesta.
  {% endhint %}

{% hint style="danger" %}
Le ultime tre variabili di configurazione vengono utilizzate per aumentare la sicurezza nascondendo alla vista pubblica i nomi e i valori predefiniti dei cookie di Netacea.
{% endhint %}

Una volta aggiornato il codice `NetaceaConfig.json`, fare clic sul pulsante **Deploy** per salvare le modifiche.

#### Modifica delle Impostazioni di Runtime

Le impostazioni di Runtime dovranno essere aggiornate.

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

Scorrere sotto Code Source fino alla sezione Runtime settings e fare clic sul pulsante **Edit**.

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

Qui, modificare l'handler predefinito da `index.handler` al nome della funzione pertinente che si sta creando (ad esempio, utilizzare `OriginResponse.handler` per la funzione *netacea\_origin\_response*). Utilizzare l'elenco seguente per correlare il nome della funzione con la funzione handler corretta:

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

Una volta specificato l'handler corretto, fare clic su **Save**.

#### Aggiunta dei Trigger

Una volta salvate e distribuite le modifiche, è necessario aggiungere un trigger CloudFront alla funzione Lambda. Questo consente alla distribuzione CloudFront di eseguire la Lambda.\
\
In basso a sinistra nella sezione **Function overview**, fare clic su Add Trigger.

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

Verrà visualizzata una pagina di **Trigger configuration**, dove all'utente verrà presentata l'opzione per selezionare un trigger dal menu a discesa. Per la sorgente, selezionare CloudFront.

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

Selezionare **Deploy to Lambda\@Edge** e selezionare la distribuzione corretta e l'Evento CloudFront, che avrà lo **stesso nome della funzione appena creata** (ad esempio, Viewer Request).

{% hint style="info" %}
Per l'evento basato su **Netacea\_Viewer\_Request**, è necessario selezionare l'opzione **Include Body**.
{% endhint %}

Selezionare **Confirm deploy to Lambda\@Edge** e quindi fare clic su **Deploy.**

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

Una volta distribuita, verrà creata una nuova versione della funzione e verrà associato il trigger CloudFront. Questa funzione verrà replicata in tutte le regioni e anche la distribuzione associata verrà aggiornata.

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

{% hint style="warning" %}
Assicurarsi che i passaggi precedenti per la creazione della funzione e l'aggiunta di un trigger siano stati completati per ciascuna funzione Lambda\@Edge (**netacea\_viewer\_response**, **netacea\_viewer\_request** e **netacea\_origin\_response**)
{% endhint %}

### Metodo POST

Le Lambda Netacea richiedono anche la possibilità di eseguire metodi POST come parte della nostra verifica Captcha. Per abilitare questa funzionalità, navigare a CloudFront dall'interfaccia utente. Questo può essere fatto eseguendo una ricerca per 'CloudFront' nell'interfaccia utente

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

Una volta nell'applicazione CloudFront, selezionare la distribuzione con cui verranno utilizzate le Lambda. Quindi selezionare 'Behaviors'

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

Quindi selezionare il comportamento predefinito e fare clic su 'Edit'. All'interno di questa pagina ci sarà una sezione intitolata 'Allowed HTTP methods'; se non già selezionato, fare clic sul pulsante radiale accanto a 'GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE'

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

Si dovrebbero anche poter vedere le **Function associations** nella parte inferiore di questa pagina. Questo mostra il Tipo di Funzione (Viewer request, Viewer response, Origin request) e la relativa funzione Lambda\@Edge associata. Assicurarsi che 'Include body' sia selezionato per la funzione 'Viewer request'.

Quindi selezionare 'Save changes'

### Test

Per testare le Lambda, selezionare la scheda **Test** e creare un nuovo evento.

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

### Completamento

Una volta completati i passaggi precedenti e distribuite le funzioni, il plugin Netacea sarà attivo.

Contattare Netacea per discutere i passaggi successivi e assicurarsi che l'implementazione dell'integrazione con Netacea sia stata completata con successo.
