# Installation und Konfiguration

## Voraussetzungen

Für eine erfolgreiche Integration mit Netacea benötigen Sie:

1. Ein AWS-Konto mit Administratorrechten für Lambda und CloudFront.
2. Eine funktionierende Amazon CloudFront-Distribution.
3. Lambda-Codedatei (.zip) – bereitgestellt von Netacea<mark style="color:green;">\*</mark>
4. Details zu den relevanten API- und Secret-Keys sowie einen Kinesis-Endpunkt – bereitgestellt von Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>Die .zip-Datei, die Netacea Ihnen zur Verfügung gestellt hat, enthält die Code-Abhängigkeiten, die drei Lambda-Funktionen und die Konfigurationsdatei NetaceaConfig.js, die mit den Details Ihrer Integration mit Netacea ausgefüllt werden muss.
{% endhint %}

## Erstellen der Lambdas

Um mit dem Erstellen der Lambda-Funktionen zu beginnen, melden Sie sich zunächst bei der AWS-Konsole an und navigieren Sie zur Anwendung „Lambda". Dies kann durch eine Suche nach „Lambda" innerhalb der Benutzeroberfläche erfolgen.

Überprüfen Sie dort bitte, ob Ihr Standort/Ihre Region auf `us-east-1.` eingestellt ist. Falls nicht, ändern Sie dies bitte entsprechend. Lambda-Funktionen müssen in der AWS-Region `us-east-1` erstellt werden, da sie sonst nicht für die Verwendung mit CloudFront verfügbar sind.

### Funktion erstellen

Netacea benötigt 3 Lambda-Funktionen für diese Integration. Dies kann durch Befolgen der unten beschriebenen Schritte abgeschlossen werden. Sie müssen diesen Vorgang für jede Lambda-Funktion wiederholen.

#### Erstellen der Funktion

Um mit dem Erstellen der Funktion zu beginnen, klicken Sie auf die Schaltfläche „Create function" in der oberen rechten Ecke der Benutzeroberfläche.

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

Nachdem Sie dies getan haben, wird Ihnen der untenstehende Bildschirm angezeigt.

Bitte wählen Sie „Author from scratch" und benennen Sie dann die Funktion. Netacea empfiehlt, jede Funktion nach dem jeweiligen Funktionstyp zu benennen, mit dem Präfix „netacea\_". Beispiele hierfür finden Sie unten:

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

Jede Funktion sollte mit den Standardeinstellungen unter „Basic Information" erstellt werden.

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

#### Berechtigungen

Beim Erstellen der Lambdas ist es wichtig sicherzustellen, dass sie die korrekte **Standard-Ausführungsrolle** haben. Die Richtlinie, die sie enthalten sollte, ist **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Falls keine Rolle mit dieser Richtlinie existiert, muss eine erstellt werden. Siehe unten:

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

#### Hochladen der Zip-Datei

Nachdem die Lambda-Funktion erstellt wurde, muss der Netacea-Code durch Hochladen der bereitgestellten Zip-Datei hinzugefügt werden. Diese kann vom Netacea Admin Portal heruntergeladen werden.

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

Laden Sie die von Netacea bereitgestellte Zip-Datei hoch.

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

Nachdem die Datei in die Funktion hochgeladen wurde, öffnen Sie die `NetaceaConfig.json` über die Code-Source-Benutzeroberfläche und füllen Sie sie mit den von Netacea bereitgestellten Details aus.

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

Weitere Informationen zu jedem Attribut in der Konfigurationsdatei finden Sie unten:

Der folgende Code-Ausschnitt zeigt die oben besprochene Datei `NetaceaConfig.json`. Diese muss mit den Details ausgefüllt werden, die Netacea für Ihre Organisation bereitgestellt hat. Dies kann mit allen relevanten Details vom Netacea Admin Portal kopiert und eingefügt werden.

<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" %}
Das Attribut `mitigationType` wird verwendet, um den Modus der Integration zu bestimmen. Dies kann einer von drei Werten sein:

* „**INGEST**" – Dieser Integrationsmodus dient nur zur Überwachung, d. h. es werden keine Mitigationsmaßnahmen ausgeführt. Dies wird während POCs empfohlen.
* „**MITIGATE**" – Dies ist der „normale" Integrationsmodus, d. h. die Netacea-Lösung wird Anfragen überwachen und aktiv mitigieren.
* „**INJECT**" – Dieser Modus wird in kundenspezifischen Lösungen verwendet, bei denen die Mitigationsmaßnahme von Netacea nur eine Empfehlung ist, die über HTTP-Header zur Anfrage hinzugefügt wird.
  {% endhint %}

{% hint style="danger" %}
Die letzten drei Konfigurationsvariablen werden verwendet, um die Sicherheit zu erhöhen, indem die Standard-Cookie-Namen und -Werte von Netacea vor der öffentlichen Ansicht verborgen werden.
{% endhint %}

Nachdem der `NetaceaConfig.json`-Code aktualisiert wurde, klicken Sie auf die Schaltfläche **Deploy**, um Ihre Änderungen zu speichern.

#### Laufzeiteinstellungen bearbeiten

Die Laufzeiteinstellungen müssen aktualisiert werden.

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

Scrollen Sie unterhalb von Code Source zum Abschnitt Runtime settings und klicken Sie auf die Schaltfläche **Edit**.

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

Ändern Sie hier den Standard-Handler von `index.handler` auf den Namen der entsprechenden Funktion, die Sie erstellen (z. B. verwenden Sie `OriginResponse.handler` für die Funktion *netacea\_origin\_response*). Verwenden Sie die untenstehende Liste, um den Funktionsnamen mit der korrekten Handler-Funktion zu verknüpfen:

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

Nachdem der korrekte Handler angegeben wurde, klicken Sie auf **Save**.

#### Hinzufügen der Trigger

Nachdem die Änderungen gespeichert und bereitgestellt wurden, muss ein CloudFront-Trigger zur Lambda-Funktion hinzugefügt werden. Dies ermöglicht es der CloudFront-Distribution, die Lambda-Funktion auszuführen.\
\
Klicken Sie unten links im Abschnitt **Function overview** auf Add Trigger.

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

Eine Seite zur **Trigger-Konfiguration** wird angezeigt, auf der dem Benutzer die Option zur Auswahl eines Triggers aus dem Dropdown-Menü präsentiert wird. Wählen Sie als Quelle CloudFront aus.

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

Wählen Sie **Deploy to Lambda\@Edge** und wählen Sie die korrekte Distribution sowie das CloudFront-Event aus, das **denselben Namen wie die gerade erstellte Funktion** trägt (z. B. Viewer Request).

{% hint style="info" %}
Für das **Netacea\_Viewer\_Request**-basierte Event ist es erforderlich, dass Sie die Option **Include Body** auswählen.
{% endhint %}

Wählen Sie **Confirm deploy to Lambda\@Edge** und klicken Sie dann auf **Deploy.**

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

Nach der Bereitstellung wird eine neue Version der Funktion erstellt und der CloudFront-Trigger zugeordnet. Diese Funktion wird in allen Regionen repliziert und die zugehörige Distribution wird ebenfalls aktualisiert.

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

{% hint style="warning" %}
Bitte stellen Sie sicher, dass die obigen Schritte zum Erstellen der Funktion und Hinzufügen eines Triggers für jede Lambda\@Edge-Funktion abgeschlossen wurden (**netacea\_viewer\_response**, **netacea\_viewer\_request** und **netacea\_origin\_response**)
{% endhint %}

### POST-Methode

Die Netacea-Lambdas benötigen außerdem die Fähigkeit, POST-Methoden als Teil unserer Captcha-Challenge auszuführen. Um dies zu aktivieren, navigieren Sie bitte innerhalb der Benutzeroberfläche zu CloudFront. Dies kann durch eine Suche nach „CloudFront" innerhalb der Benutzeroberfläche erfolgen.

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

Wählen Sie innerhalb der CloudFront-Anwendung die Distribution aus, mit der die Lambdas verwendet werden sollen. Wählen Sie dann bitte „Behaviors" aus.

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

Wählen Sie dann das Standardverhalten aus und klicken Sie auf „Edit". Auf dieser Seite gibt es einen Abschnitt mit dem Titel „Allowed HTTP methods". Falls nicht bereits ausgewählt, klicken Sie bitte auf den Radiobutton neben „GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE".

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

Sie sollten auch die **Function associations** am Ende dieser Seite sehen können. Dies zeigt den Funktionstyp (Viewer request, Viewer response, Origin request) und ihre zugehörige Lambda\@Edge-Funktion. Bitte stellen Sie sicher, dass „Include body" für die Funktion „Viewer request" aktiviert ist.

Wählen Sie dann bitte „Save changes".

### Testen

Um die Lambdas zu testen, wählen Sie den Tab **Test** und erstellen Sie ein neues Event.

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

### Abschluss

Nachdem die oben genannten Schritte abgeschlossen und die Funktionen bereitgestellt wurden, ist das Netacea-Plugin aktiv.

Bitte kontaktieren Sie Netacea, um die nächsten Schritte zu besprechen und sicherzustellen, dass die Implementierung der Integration mit Netacea erfolgreich war.
