Konfigurieren der CDN-Anmeldeinformationen und der Authentifizierung cdn-credentials-authentication

Das von Adobe bereitgestellte CDN verfügt über mehrere Funktionen und Dienste, von denen einige auf Anmeldeinformationen und eine Authentifizierung angewiesen sind, um ein angemessenes Maß an Unternehmenssicherheit zu gewährleisten. Durch Deklarieren von Regeln in einer Konfigurationsdatei, die mithilfe der Cloud Manager-Konfigurations-Pipeline bereitgestellt wird, können Kundinnen und Kunden per Self-Service Folgendes konfigurieren:

  • Den HTTP-Header-Wert des X-AEM-Edge-Key, der vom Adobe-CDN verwendet wird, um Anforderungen zu überprüfen, die von einem kundenseitig verwalteten CDN stammen.
  • Das API-Token, mit dem Ressourcen im CDN-Cache gelöscht werden.
  • Liste mit Benutzernamen-/Passwortkombinationen, mit denen durch Übermitteln eines einfachen Authentifizierungsformulars auf beschränkte Inhalte zugegriffen werden kann.

Jede dieser Optionen, einschließlich der Konfigurationssyntax, wird in einem eigenen Abschnitt unten beschrieben.

Es gibt einen Abschnitt über das Rotieren von Schlüsseln, welches eine gute Sicherheitspraxis ist.

HTTP-Header-Wert des kundenseitig verwalteten CDN CDN-HTTP-value

Wie auf der Seite CDN in AEM as a Cloud Service beschrieben, können Kundinnen und Kunden Traffic über ihr eigenes CDN weiterleiten, das als Kunden-CDN (manchmal auch als BYOCDN) bezeichnet wird.

Im Rahmen der Einrichtung müssen sich das Adobe-CDN und das Kunden-CDN auf einen Wert des HTTP-Headers X-AEM-Edge-Key einigen. Dieser Wert wird bei jeder Anfrage im Kunden-CDN festgelegt, bevor er an das Adobe-CDN weitergeleitet wird. Dieses überprüft dann, ob der Wert erwartungsgemäß ist, damit anderen HTTP-Headern vertraut werden kann, einschließlich derer, die dazu beitragen, die Anfrage an den entsprechenden AEM-Ursprung weiterzuleiten.

Der Wert X-AEM-Edge-Key wird durch die Eigenschaften edgeKey1 und edgeKey2 in einer Datei mit dem Namen cdn.yaml oder ähnlich referenziert, die sich unter einem config-Ordner der obersten Ebene befindet. Weitere Informationen zur Ordnerstruktur und zur Bereitstellung der Konfiguration finden Sie unter Verwenden von Konfigurations-Pipelines . Die Syntax wird im folgenden Beispiel beschrieben.

WARNING
Direkter Zugriff ohne korrekten X-AEM-Edge-Schlüssel wird für alle Anforderungen verweigert, die mit der Bedingung übereinstimmen (im Beispiel unten bedeutet dies alle Anforderungen an die Veröffentlichungsstufe). Wenn Sie die Authentifizierung schrittweise einführen müssen, lesen Sie den Abschnitt Sichere Migration, um das Risiko von blockiertem Traffic zu verringern .
kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  authentication:
    authenticators:
      - name: edge-auth
        type: edge
        edgeKey1: ${{CDN_EDGEKEY_052824}}
        edgeKey2: ${{CDN_EDGEKEY_041425}}
    rules:
      - name: edge-auth-rule
        when: { reqProperty: tier, equals: "publish" }
        action:
          type: authenticate
          authenticator: edge-auth

Eine Beschreibung der Eigenschaften oberhalb des Knotens data finden Sie unter Verwenden von Konfigurations-Pipelines. Der Wert der Eigenschaft kind sollte CDN sein, und die Eigenschaft version sollte auf 1 festgelegt werden.

Weitere Informationen finden Sie im Tutorial-Schritt Konfigurieren und Bereitstellen der CDN-Regel für die HTTP-Header-Validierung.

Weitere Eigenschaften sind:

  • Data-Knoten, der einen untergeordneten authentication-Knoten enthält.

  • Unter authentication ist ein authenticators-Knoten und ein rules-Knoten vorhanden, bei denen es sich jeweils um Arrays handelt.

  • Authentifizierer: Hiermit können Sie einen Typ von Token oder Anmeldeinformationen deklarieren. In diesem Fall handelt es sich dabei um einen Edge-Schlüssel.  Dieser umfasst die folgenden Eigenschaften:

    • name – eine beschreibende Zeichenfolge.
    • type – muss edge sein.
    • edgeKey1 – der Wert von X-AEM-Edge-Key, der auf eine Cloud Manager-Umgebungsvariable vom Typ „secret“ verweisen muss. Wählen Sie für das Feld „Angewendeter Service“ die Option „Alle“ aus. Es wird empfohlen, dass der Wert (z. B.${{CDN_EDGEKEY_052824}}) den Tag widerspiegelt, an dem er hinzugefügt wurde.
    • edgeKey2 – wird für die Rotation von Geheimnissen verwendet, die unten im Abschnitt Rotieren von Geheimnissen beschrieben ist. Definieren Sie den Wert ähnlich wie „edgeKey1“. Von edgeKey1 und edgeKey2 muss mindestens einer deklariert werden.
  • Regeln: Hier können Sie angeben, welche der Authentifizierer verwendet werden sollen, und ob es sich um die Veröffentlichungs- und/oder die Vorschaustufe handelt.  Folgendes ist enthalten:

    • name – eine beschreibende Zeichenfolge.
    • when – eine Bedingung, die bestimmt, wann die Regel gemäß der Syntax im Artikel Traffic-Filterregeln beurteilt werden soll. Typischerweise umfasst dies einen Vergleich der aktuellen Stufe (z. B. die Veröffentlichungsstufe), sodass der gesamte Live-Traffic beim Routing über das Kunden-CDN validiert wird.
    • action – muss „authenticate“ angeben, wobei auf den vorgesehenen Authentifizierer verwiesen wird.
NOTE
Der Edge-Schlüssel muss als Cloud Manager-Umgebungsvariable vom Typ „secret“ konfiguriert werden, bevor die Konfiguration, die auf ihn verweist, bereitgestellt wird. Es wird empfohlen, einen eindeutigen zufälligen Schlüssel mit einer Mindestlänge von 32 Byte zu verwenden. Beispielsweise kann die kryptografische Open SSL-Bibliothek einen zufälligen Schlüssel generieren, indem der Befehl openssl rand -hex 32 ausgeführt wird.

Sichere Migration zur Verringerung des Risikos von blockiertem Traffic migrating-safely

Wenn Ihre Site bereits live ist, sollten Sie bei der Migration zu einem kundenseitig verwaltetem CDN Vorsicht walten lassen, da eine Fehlkonfiguration öffentlichen Traffic blockieren kann. Dies liegt daran, dass nur Anforderungen mit dem erwarteten Header-Wert X-AEM-Edge-Key vom Adobe CDN akzeptiert werden. Ein Ansatz wird empfohlen, wenn eine zusätzliche Bedingung vorübergehend in die Authentifizierungsregel aufgenommen wird, wodurch die Anfrage nur blockiert wird, wenn eine Testkopfzeile enthalten ist oder ein Pfad übereinstimmt:

    - name: edge-auth-rule
        when:
          allOf:
            - { reqProperty: tier, equals: "publish" }
            - { reqHeader: x-edge-test, equals: "test" }
        action:
          type: authenticate
          authenticator: edge-auth
    - name: edge-auth-rule
        when:
          allOf:
            - { reqProperty: tier, equals: "publish" }
            - { reqProperty: path, like: "/test*" }
        action:
          type: authenticate
          authenticator: edge-auth

Das folgende curl-Anfragemuster kann verwendet werden:

curl https://publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com -H "X-Forwarded-Host: example.com" -H "X-AEM-Edge-Key: <CONFIGURED_EDGE_KEY>" -H "x-edge-test: test"

Nach erfolgreichem Testen kann die zusätzliche Bedingung entfernt und die Konfiguration neu bereitgestellt werden.

API-Bereinigungs-Token purge-API-token

Kundinnen und Kunden können den CDN-Cache mithilfe eines deklarierten API-Bereinigungs-Tokens bereinigen. Das Token wird in einer Datei mit dem Namen cdn.yaml oder ähnlich unter einem config-Ordner der obersten Ebene deklariert. Unter Verwenden von Konfigurations-Pipelines finden Sie weitere Informationen zur Ordnerstruktur und Bereitstellung der Konfiguration.

Die Syntax ist unten beschrieben:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  authentication:
    authenticators:
       - name: purge-auth
         type: purge
         purgeKey1: ${{CDN_PURGEKEY_031224}}
         purgeKey2: ${{CDN_PURGEKEY_021225}}
    rules:
       - name: purge-auth-rule
         when: { reqProperty: tier, equals: "publish" }
         action:
           type: authenticate
           authenticator: purge-auth

Eine Beschreibung der Eigenschaften oberhalb des Knotens data finden Sie unter Verwenden von Konfigurations-Pipelines. Der Wert der Eigenschaft kind sollte CDN sein, und die Eigenschaft version sollte auf 1 festgelegt werden.

Weitere Eigenschaften sind:

  • data-Knoten, der einen untergeordneten authentication-Knoten enthält.

  • Unter authentication ist ein authenticators-Knoten und ein rules-Knoten vorhanden, bei denen es sich jeweils um Arrays handelt.

  • Authentifizierer: Hiermit können Sie einen Token-Typ oder Anmeldeinformationen deklarieren. In diesem Fall handelt es sich hierbei um einen Bereinigungsschlüssel. Dieser umfasst die folgenden Eigenschaften:

    • name – eine beschreibende Zeichenfolge.
    • type – muss „purge“ sein.
    • purgeKey1 – sein Wert muss auf eine Cloud Manager-Umgebungsvariable vom Typ „secret“ verweisen. Wählen Sie für das Feld „Angewendeter Service“ die Option „Alle“ aus. Es wird empfohlen, dass der Wert (z. B.${{CDN_PURGEKEY_031224}}) den Tag widerspiegelt, an dem er hinzugefügt wurde.
    • purgeKey2 – wird für die Rotation von Geheimnissen verwendet, die unten im Abschnitt Rotieren von Geheimnissen beschrieben wird. Von purgeKey1 und purgeKey2 muss mindestens einer deklariert werden.
  • Regeln: Hier können Sie angeben, welche der Authentifizierer verwendet werden sollen, und ob es sich um die Veröffentlichungs- und/oder die Vorschaustufe handelt.  Folgendes ist enthalten:

    • name – eine beschreibende Zeichenfolge
    • when – eine Bedingung, die bestimmt, wann die Regel gemäß der Syntax im Artikel Traffic-Filterregeln beurteilt werden soll. Typischerweise umfasst dies einen Vergleich der aktuellen Stufe (z. B. die Veröffentlichungsstufe).
    • action – muss „authenticate“ angeben, wobei auf den vorgesehenen Authentifizierer verwiesen wird.
NOTE
Der Purge Key muss als Cloud Manager-Umgebungsvariable vom Typ „secret“ konfiguriert werden, bevor die Konfiguration, die auf ihn verweist, bereitgestellt wird. Es wird empfohlen, einen eindeutigen zufälligen Schlüssel mit einer Mindestlänge von 32 Byte zu verwenden. Beispielsweise kann die kryptografische Open SSL-Bibliothek einen zufälligen Schlüssel generieren, indem der Befehl „openssl rand -hex 32“ ausgeführt wird.

Sie können ein Tutorial durchlaufen, das sich auf die Konfiguration von Bereinigungsschlüsseln und die Durchführung der CDN-Cache-Bereinigung konzentriert.

Standardauthentifizierung basic-auth

Schützen Sie bestimmte Inhaltsressourcen mithilfe eines einfachen Authentifizierungsdialogfelds als Popup, das einen Benutzernamen und ein Passwort erforderlich macht. Diese Funktion ist in erster Linie für leichte Authentifizierungsfälle wie die Überprüfung von Inhalten durch geschäftliche Stakeholder und nicht als vollständige Lösung für Zugriffsrechte von Endbenutzenden gedacht.

Endbenutzenden wird ein einfaches Authentifizierungsdialogfeld wie das folgende angezeigt:

basicauth-dialog

Es gilt folgende Syntax:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  authentication:
    authenticators:
       - name: my-basic-authenticator
         type: basic
         credentials:
           - user: johndoe
             password: ${{JOHN_DOE_PASSWORD}}
           - user: janedoe
             password: ${{JANE_DOE_PASSWORD}}
    rules:
       - name: basic-auth-rule
         when: { reqProperty: path, like: "/summercampaign" }
         action:
           type: authenticate
           authenticator: my-basic-authenticator

Eine Beschreibung der Eigenschaften oberhalb des Knotens data finden Sie unter Verwenden von Konfigurations-Pipelines. Der Wert der Eigenschaft kind sollte CDN sein, und die Eigenschaft version sollte auf 1 festgelegt werden.

Darüber hinaus enthält die Syntax Folgendes:

  • ein data-Knoten, der einen authentication-Knoten enthält.

  • Unter authentication, einen Knoten authenticators und einen Knotenrules, die beide Arrays sind.

  • Authentifizierer: Deklarieren Sie in diesem Szenario einen einfachen Authentifizierer mit der folgenden Struktur:

    • name – eine beschreibende Zeichenfolge

    • type – muss basic sein.

    • ein Array von bis zu 10 Anmeldeinformationen, die jeweils die folgenden Name/Wert-Paare enthalten, die Endbenutzende im Dialogfeld der einfachen Authentifizierung eingeben können:

  • Regeln: Hier können Sie angeben, welche der Authentifizierer verwendet und welche Ressourcen geschützt werden sollen. Jede Regel umfasst:

    • name – eine beschreibende Zeichenfolge
    • when – eine Bedingung, die bestimmt, wann die Regel gemäß der Syntax im Artikel Traffic-Filterregeln beurteilt werden soll. Typischerweise umfasst dies einen Vergleich der Veröffentlichungsstufe oder bestimmter Pfade.
    • action – muss „authenticate“ angeben, wobei auf den vorgesehenen Authentifizierer verwiesen wird. In diesem Fall ist dies der einfache Authentifizierer.
NOTE
Die Kennwörter müssen als Cloud Manager-Umgebungsvariablen vom Typ „secret“ konfiguriert werden, bevor die Konfiguration, die auf sie verweist, bereitgestellt wird.

Rotieren von Geheimnissen rotating-secrets

  1. Es gilt als gute Sicherheitspraxis, die Anmeldeinformationen gelegentlich zu ändern. Dies kann wie unten dargestellt mithilfe des Beispiels eines Edge Keys erreicht werden, wobei dieselbe Strategie auch für Bereinigungsschlüssel verwendet wird.

  2. Zunächst wurde nur edgeKey1 definiert, der in diesem Fall als ${{CDN_EDGEKEY_052824}} referenziert wird, was als empfohlene Konvention das Erstellungsdatum widerspiegelt.

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey1: ${{CDN_EDGEKEY_052824}}
    
  3. Wenn Sie den Schlüssel rotieren müssen, erstellen Sie ein neues Cloud Manager-Geheimnis, z. B. ${{CDN_EDGEKEY_041425}}.

  4. Verweisen Sie in der Konfiguration von edgeKey2 darauf und stellen Sie es bereit.

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey1: ${{CDN_EDGEKEY_052824}}
          edgeKey2: ${{CDN_EDGEKEY_041425}}
    
  5. Sobald Sie sicher sind, dass der alte Edge Key nicht mehr verwendet wird, entfernen Sie ihn, indem Sie edgeKey1 aus der Konfiguration entfernen.

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey2: ${{CDN_EDGEKEY_041425}}
    
  6. Löschen Sie die Referenz des alten Geheimnisses (${{CDN_EDGEKEY_052824}}) aus Cloud Manager aus und nehmen Sie die Bereitstellung vor.

  7. Wenn Sie für die nächste Rotation bereit sind, gehen Sie analog vor. Diesmal fügen Sie jedoch edgeKey1 zu der Konfiguration hinzu, indem Sie auf ein neues Cloud Manager-Umgebungsgeheimnis verweisen, das beispielsweise den Namen ${{CDN_EDGEKEY_031426}} hat.

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey2: ${{CDN_EDGEKEY_041425}}
          edgeKey1: ${{CDN_EDGEKEY_031426}}
    
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab