設定內容傳遞網路憑證和身份驗證 cdn-credentials-authentication
Adobe提供的CDN具有多項功能和服務,部分功能和服務需仰賴憑證和驗證,以確保適當等級的企業安全性。 透過在使用Cloud Manager 設定管道部署的設定檔案中宣告規則,客戶可以自助方式設定以下專案:
- AdobeCDN用來驗證來自客戶管理CDN之請求的X-AEM-Edge-Key HTTP標題值。
- 用來清除CDN快取中資源的API權杖。
- 透過提交基本驗證表單,可存取受限制內容的使用者名稱/密碼組合清單。
各項(包括設定語法)將於下文其本身的章節中說明。
有一節說明如何旋轉金鑰,這是良好的安全性作法。
客戶管理的CDN HTTP標頭值 CDN-HTTP-value
如AEM as a Cloud Service🔗頁面中的CDN中所述,客戶可以選擇透過自己的CDN路由流量,這稱為「客戶CDN」(有時也稱為BYOCDN)。
在設定過程中,AdobeCDN和客戶CDN必須同意X-AEM-Edge-Key
HTTP標頭的值。 此值是在每個請求中在客戶CDN處設定的,之後再傳送至AdobeCDN,由其驗證值是否如預期般符合,因此它可以信任其他HTTP標頭,包括有助於將請求傳送至適當AEM來源的那些標頭。
X-AEM-Edge-Key 值由名為cdn.yaml
或類似檔案中的edgeKey1
和edgeKey2
屬性參考,位於最上層config
資料夾的某處。 閱讀使用設定管道,以取得資料夾結構以及如何部署設定的詳細資訊。 以下範例說明語法。
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
請參閱「使用設定管道」,取得 data
節點上方屬性的描述。kind
屬性值應該是 CDN,且version
屬性應該設定為1
。
如需詳細資訊,請參閱設定和部署HTTP標頭驗證CDN規則教學課程步驟。
其他屬性包括:
-
包含子
authentication
節點的Data
節點。 -
在
authentication
底下,有一個authenticators
節點和一個rules
節點,兩者都是陣列。 -
驗證者:可讓您宣告權杖或認證的型別,在此例中是邊緣金鑰。 其內容包含下列屬性:
- name — 描述性字串。
- 型別 — 必須是
edge
。 - edgeKey1 - X-AEM-Edge-Key 的值,它必須參考Cloud Manager秘密型別環境變數。 在「已套用服務」欄位中,選取全部。 建議值(例如,
${{CDN_EDGEKEY_052824}}
)反映新增日期。 - edgeKey2 — 用於旋轉機密,如下面的旋轉機密區段所述。 定義方式與edgeKey1類似。 至少必須宣告
edgeKey1
和edgeKey2
其中之一。
-
規則:可讓您宣告應該使用哪一個驗證器,以及它是否用於發佈和/或預覽層。 內容包括:
- name — 描述性字串。
- when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常會包含目前階層的比較(例如publish),以便驗證所有即時流量為透過客戶CDN的路由。
- 動作 — 必須指定「authenticate」,並參考所要的驗證者。
openssl rand -hex 32
來產生隨機金鑰。安全地移轉,以減少流量受阻的風險 migrating-safely
如果您的網站已上線,請謹慎移轉至客戶管理的CDN,因為設定錯誤可能會封鎖公開流量,因為AdobeCDN只會接受具有預期X-AEM-Edge-Key標頭值的請求。 建議您在驗證規則中暫時包含其他條件的情況下,採取此做法,如此一來,只有在包含測試標頭或路徑符合時,才會封鎖請求:
- 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
可以使用下列curl
要求模式:
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"
成功測試後,可移除其他條件並重新部署設定。
清除API Token purge-API-token
客戶可以使用宣告的清除API權杖清除CDN快取。 Token是在名為cdn.yaml
或類似的檔案中宣告的,位於最上層config
資料夾的某處。 閱讀使用設定管道,以取得資料夾結構以及如何部署設定的詳細資訊。
語法如下所述:
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
請參閱「使用設定管道」,取得 data
節點上方屬性的描述。kind
屬性值應該是 CDN,且version
屬性應該設定為1
。
其他屬性包括:
-
包含子
authentication
節點的data
節點。 -
在
authentication
底下,有一個authenticators
節點和一個rules
節點,兩者都是陣列。 -
驗證者:可讓您宣告權杖或認證的型別,在此例中為清除金鑰。 其內容包含下列屬性:
- name — 描述性字串。
- 型別 — 必須是永久刪除。
- purgeKey1 — 其值必須參考Cloud Manager秘密型別的環境變數。 在「已套用服務」欄位中,選取全部。 建議值(例如
${{CDN_PURGEKEY_031224}}
)反映新增日期。 - purgeKey2 — 用於輪換密碼,如下面的輪換密碼區段部分所述。 至少必須宣告
purgeKey1
和purgeKey2
其中之一。
-
規則:可讓您宣告應該使用哪一個驗證器,以及它是否用於發佈和/或預覽層。 內容包括:
- 名稱 — 描述性字串
- when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常包括目前階層的比較(例如,發佈)。
- 動作 — 必須指定「authenticate」,並參考所要的驗證者。
您可以參考以設定清除金鑰和執行CDN快取清除為重點的教學課程。
基本驗證 basic-auth
透過彈出要求使用者名稱和密碼的基本驗證對話方塊來保護某些內容資源。此功能主要用於輕度驗證使用案例(例如業務利害關係人審查內容),而不是作為一般使用者存取權的完整解決方案。
一般使用者會看到基本驗證對話方塊突然出現,如下所示:
語法如下:
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
請參閱「使用設定管道」,取得 data
節點上方屬性的描述。kind
屬性值應該是 CDN,且version
屬性應該設定為1
。
此外,語法包括:
-
包含
authentication
節點的data
節點。 -
在
authentication
底下,有一個authenticators
節點和一個rules
節點,兩者都是陣列。 -
驗證者:在此案例中,會宣告基本驗證者,其結構如下:
-
名稱 — 描述性字串
-
型別 — 必須是
basic
-
最多10個憑證的陣列,每個憑證都包含以下名稱/值組,一般使用者可在基本驗證對話方塊中輸入這些名稱/值組:
- user — 使用者的名稱
- 密碼 — 其值必須參考Cloud Manager密碼型別環境變數,並選取 全部 做為服務欄位。
-
-
規則:可讓您宣告應使用哪些驗證者,以及應保護哪些資源。 每個規則包含:
- 名稱 — 描述性字串
- when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常會包含發佈層級或特定路徑的比較。
- 動作 — 必須指定「authenticate」,並參考所要的驗證者,這是此情境的基本驗證
旋轉密碼 rotating-secrets
-
不定期變更認證是很好的安全性做法。 雖然清除金鑰使用相同的策略,但還是可以透過邊緣金鑰的範例來達到此目的。
-
一開始只定義了
edgeKey1
,在此案例中是參考為${{CDN_EDGEKEY_052824}}
,這作為建議的慣例,會反映其建立日期。code language-none authentication: authenticators: - name: edge-auth type: edge edgeKey1: ${{CDN_EDGEKEY_052824}}
-
輪換金鑰時,請建立新的Cloud Manager密碼,例如
${{CDN_EDGEKEY_041425}}
。 -
在設定中,從
edgeKey2
參照並部署。code language-none authentication: authenticators: - name: edge-auth type: edge edgeKey1: ${{CDN_EDGEKEY_052824}} edgeKey2: ${{CDN_EDGEKEY_041425}}
-
一旦確定不再使用舊的Edge金鑰,請從設定中移除
edgeKey1
以將其移除。code language-none authentication: authenticators: - name: edge-auth type: edge edgeKey2: ${{CDN_EDGEKEY_041425}}
-
從Cloud Manager刪除舊密碼參考(
${{CDN_EDGEKEY_052824}}
)並進行部署。 -
準備好進行下一次輪換時,請遵循相同的程式,不過這次您會新增
edgeKey1
至組態,並參考名為的新Cloud Manager環境密碼,例如${{CDN_EDGEKEY_031426}}
。code language-none authentication: authenticators: - name: edge-auth type: edge edgeKey2: ${{CDN_EDGEKEY_041425}} edgeKey1: ${{CDN_EDGEKEY_031426}}