跳至內容

如何使用存取控制和身分驗證來限制 CloudFront 發佈項目的內容傳送?

2 分的閱讀內容
0

我想限制對 Amazon CloudFront 發佈項目中內容的存取權。

簡短描述

若要限制對 CloudFront 發佈項目中私有內容的存取權,請使用簽署網址或簽署 Cookie。

如果您只需要使用者名稱和密碼進行基本驗證,請使用 Lambda@Edge 或 CloudFront Functions 來設定基本驗證。

若要根據 IP 位址或地理位置限制存取權,請設定 CloudFront 以允許或封鎖請求。

若要使用身分識別提供者建立安全的使用者驗證,請使用 Lambda@Edge 將 CloudFront 與 OpenID Connect (OIDC) 整合。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用簽署網址或簽署 Cookie

簽署網址會在網址中嵌入加密簽章,以提供對個別檔案的臨時存取權。使用簽署網址來保護對特定資源的存取權。

CloudFront 會向用戶端簽發簽署 Cookie,以允許其存取某個路徑下的多個檔案。使用簽署 Cookie 來實現更廣泛的存取控制。

注意:簽署網址和簽署 Cookie 會使用您建立並與您的發佈項目關聯的加密金鑰對。

若要使用簽署網址或簽署 Cookie,請完成下列步驟:

建立金鑰對

建立金鑰對並將其上傳到 CloudFront

建立可信金鑰群組

  1. 開啟 CloudFront console (CloudFront 主控台)。
  2. 在導覽窗格中的 Key management (金鑰管理) 下,選擇 Key groups (金鑰群組)。
  3. 選擇 Create key group (建立金鑰群組)。
  4. Name (名稱) 中,輸入金鑰群組的名稱。
  5. Public keys (公有金鑰),選擇一個金鑰。
  6. 選擇 Create key group (建立金鑰群組)。

設定您的發佈項目

更新您的發佈項目,以使用您信任的金鑰群組來支援簽署網址或簽署 Cookie。有關如何設定發佈項目的詳細資訊,請參閱快取行為設定

產生簽署網址或簽署 Cookie

若要產生簽署 URL,請執行以下 sign AWS CLI 命令:

aws cloudfront sign \
    --url "https://your-distribution-domain.cloudfront.net/path/to/file.pdf" \
    --key-pair-id "YOUR_KEY_PAIR_ID" \
    --private-key file://path/to/your/private-key.pem \
    --date-less-than "2024-12-31T23:59:59"

有關 IP 限制等其他選項,請參閱 AWS CLI 命令參考中的選項

**注意:**您也可以為第三方工具建立簽署網址。

若要產生簽署 Cookie,請使用適合您語言的 AWS SDK。有關程式碼範例,請參閱使用 PHP 建立簽署 Cookie使用 AWS SDK 建立簽署網址和 Cookie

使用簽署網址或簽署 Cookie

在對 CloudFront 的請求中包含簽署網址或簽署 Cookie。

使用 Lambda@Edge 設定基本驗證

**注意:**您必須建立自訂程式碼才能使用 Lambda@Edge 來實作您的驗證邏輯。

請完成下列步驟:

  1. 建立 AWS Lambda 函式來處理檢視器請求的驗證。
  2. 在函式的程式碼中,檢查請求標頭、驗證憑證,並決定是否允許或拒絕該請求。有關範例函式,請參閱範例: 將未經驗證的使用者重新導向到登入頁面
  3. 使用觸發程序將函式與發佈的行為建立關聯。

使用 CloudFront Functions 設定基本驗證

**注意:**您必須建立自訂程式碼才能使用 CloudFront Functions 來實作您的驗證邏輯。

請完成下列步驟:

  1. 建立 CloudFront Function 來驗證檢視者請求。
  2. 在函式的程式碼中,檢查標題、驗證憑證,並決定是否允許或拒絕請求。有關範例函式,請參閱驗證 CloudFront Functions 檢視器請求中的簡單權杖
  3. 將函式與您的發佈行為建立關聯。

設定 CloudFront,根據用戶端 IP 位址或地理位置來允許或封鎖請求

請採取下列其中一個動作:

  • 若要根據 IP 存取控制建立限制,請使用 AWS WAF 為您的發佈項目定義 IP 位址允許清單和拒絕清單。
  • 若要根據地理位置建立限制,請根據請求來源的國家/地區限制對您內容的存取權

**注意:**AWS WAF 和地理限制僅適用於發佈層級,而不適用於快取行為。

使用 Lambda@Edge 將 CloudFront 與 OIDC 整合

**注意:**若要進行整合,您必須在應用程式中實作 OIDC 驗證流程,並取得 ID 權杖,將其包含在發送給 CloudFront 的請求中。

請完成下列步驟:

  1. 建立 Lambda 函式來驗證檢視器請求中的 OIDC ID 權杖。
  2. 在函式的程式碼中,檢查授權標頭、驗證 ID 權杖,並決定是否允許或拒絕該請求。
  3. 將函式與您的發佈行為建立關聯。

相關資訊

Authorization@Edge – 如何使用 Lambda@Edge 和 JSON Web 權杖來增強 Web 應用程式安全性

使用 Lambda@Edge 進行外部伺服器授權

使用 OpenID Connect 和 AWS Secrets Manager 保護 CloudFront 發佈項目

AWS 官方已更新 7 個月前