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.
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 untergeordnetenauthentication
-Knoten enthält. -
Unter
authentication
ist einauthenticators
-Knoten und einrules
-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
undedgeKey2
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.
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 untergeordnetenauthentication
-Knoten enthält. -
Unter
authentication
ist einauthenticators
-Knoten und einrules
-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
undpurgeKey2
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.
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:
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 einenauthentication
-Knoten enthält. -
Unter
authentication
, einen Knotenauthenticators
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:
- user – der Name der Benutzerin oder des Benutzers
- password – Der Wert muss auf eine Cloud Manager-Umgebungsvariable vom Typ „secret“verweisen, wobei Alle als Dienstfeld ausgewählt ist.
-
-
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.
Rotieren von Geheimnissen rotating-secrets
-
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.
-
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}}
-
Wenn Sie den Schlüssel rotieren müssen, erstellen Sie ein neues Cloud Manager-Geheimnis, z. B.
${{CDN_EDGEKEY_041425}}
. -
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}}
-
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}}
-
Löschen Sie die Referenz des alten Geheimnisses (
${{CDN_EDGEKEY_052824}}
) aus Cloud Manager aus und nehmen Sie die Bereitstellung vor. -
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}}