設定內容傳遞網路憑證和身份驗證 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或類似檔案中的edgeKey1edgeKey2屬性參考,位於最上層config資料夾的某處。 閱讀使用設定管道,以取得資料夾結構以及如何部署設定的詳細資訊。 以下範例說明語法。

WARNING
不符合條件的所有要求(在以下範例中,代表對發佈層級的所有要求)將會拒絕沒有正確X-AEM-Edge-Key的直接存取。 如果您需要逐步引入驗證,請參閱安全移轉以降低封鎖流量的風險區段。
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類似。 至少必須宣告edgeKey1edgeKey2其中之一。
  • 規則:可讓您宣告應該使用哪一個驗證器,以及它是否用於發佈和/或預覽層。 內容包括:

    • name — 描述性字串。
    • when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常會包含目前階層的比較(例如publish),以便驗證所有即時流量為透過客戶CDN的路由。
    • 動作 — 必須指定「authenticate」,並參考所要的驗證者。
NOTE
在部署參考Edge金鑰的組態之前,必須將其設定為密碼型別Cloud Manager環境變數。 建議使用至少32個位元組長度的唯一隨機金鑰;例如,Open SSL密碼編譯程式庫可以透過執行命令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 — 用於輪換密碼,如下面的輪換密碼區段部分所述。 至少必須宣告purgeKey1purgeKey2其中之一。
  • 規則:可讓您宣告應該使用哪一個驗證器,以及它是否用於發佈和/或預覽層。 內容包括:

    • 名稱 — 描述性字串
    • when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常包括目前階層的比較(例如,發佈)。
    • 動作 — 必須指定「authenticate」,並參考所要的驗證者。
NOTE
在部署參考清除金鑰的組態之前,必須將清除金鑰設定為機密型別Cloud Manager環境變數。 建議使用至少32個位元組長度的唯一隨機金鑰;例如,Open SSL密碼編譯程式庫可以透過執行命令openssl rand -hex 32來產生隨機金鑰

您可以參考以設定清除金鑰和執行CDN快取清除為重點的教學課程

基本驗證 basic-auth

透過彈出要求使用者名稱和密碼的基本驗證對話方塊來保護某些內容資源。此功能主要用於輕度驗證使用案例(例如業務利害關係人審查內容),而不是作為一般使用者存取權的完整解決方案。

一般使用者會看到基本驗證對話方塊突然出現,如下所示:

basicauth-dialog

語法如下:

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個憑證的陣列,每個憑證都包含以下名稱/值組,一般使用者可在基本驗證對話方塊中輸入這些名稱/值組:

  • 規則:可讓您宣告應使用哪些驗證者,以及應保護哪些資源。 每個規則包含:

    • 名稱 — 描述性字串
    • when — 根據流量篩選規則文章中的語法,決定何時應該評估規則的條件。 通常會包含發佈層級或特定路徑的比較。
    • 動作 — 必須指定「authenticate」,並參考所要的驗證者,這是此情境的基本驗證
NOTE
在部署參考密碼的組態之前,必須將密碼設定為機密型別Cloud Manager環境變數

旋轉密碼 rotating-secrets

  1. 不定期變更認證是很好的安全性做法。 雖然清除金鑰使用相同的策略,但還是可以透過邊緣金鑰的範例來達到此目的。

  2. 一開始只定義了edgeKey1,在此案例中是參考為${{CDN_EDGEKEY_052824}},這作為建議的慣例,會反映其建立日期。

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey1: ${{CDN_EDGEKEY_052824}}
    
  3. 輪換金鑰時,請建立新的Cloud Manager密碼,例如${{CDN_EDGEKEY_041425}}

  4. 在設定中,從edgeKey2參照並部署。

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey1: ${{CDN_EDGEKEY_052824}}
          edgeKey2: ${{CDN_EDGEKEY_041425}}
    
  5. 一旦確定不再使用舊的Edge金鑰,請從設定中移除edgeKey1以將其移除。

    code language-none
    authentication:
      authenticators:
        - name: edge-auth
          type: edge
          edgeKey2: ${{CDN_EDGEKEY_041425}}
    
  6. 從Cloud Manager刪除舊密碼參考(${{CDN_EDGEKEY_052824}})並進行部署。

  7. 準備好進行下一次輪換時,請遵循相同的程式,不過這次您會新增edgeKey1至組態,並參考名為的新Cloud Manager環境密碼,例如${{CDN_EDGEKEY_031426}}

    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