我想限制對 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。
建立可信金鑰群組
- 開啟 CloudFront console (CloudFront 主控台)。
- 在導覽窗格中的 Key management (金鑰管理) 下,選擇 Key groups (金鑰群組)。
- 選擇 Create key group (建立金鑰群組)。
- 在 Name (名稱) 中,輸入金鑰群組的名稱。
- 在 Public keys (公有金鑰),選擇一個金鑰。
- 選擇 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 來實作您的驗證邏輯。
請完成下列步驟:
- 建立 AWS Lambda 函式來處理檢視器請求的驗證。
- 在函式的程式碼中,檢查請求標頭、驗證憑證,並決定是否允許或拒絕該請求。有關範例函式,請參閱範例: 將未經驗證的使用者重新導向到登入頁面。
- 使用觸發程序將函式與發佈的行為建立關聯。
使用 CloudFront Functions 設定基本驗證
**注意:**您必須建立自訂程式碼才能使用 CloudFront Functions 來實作您的驗證邏輯。
請完成下列步驟:
- 建立 CloudFront Function 來驗證檢視者請求。
- 在函式的程式碼中,檢查標題、驗證憑證,並決定是否允許或拒絕請求。有關範例函式,請參閱驗證 CloudFront Functions 檢視器請求中的簡單權杖。
- 將函式與您的發佈行為建立關聯。
設定 CloudFront,根據用戶端 IP 位址或地理位置來允許或封鎖請求
請採取下列其中一個動作:
**注意:**AWS WAF 和地理限制僅適用於發佈層級,而不適用於快取行為。
使用 Lambda@Edge 將 CloudFront 與 OIDC 整合
**注意:**若要進行整合,您必須在應用程式中實作 OIDC 驗證流程,並取得 ID 權杖,將其包含在發送給 CloudFront 的請求中。
請完成下列步驟:
- 建立 Lambda 函式來驗證檢視器請求中的 OIDC ID 權杖。
- 在函式的程式碼中,檢查授權標頭、驗證 ID 權杖,並決定是否允許或拒絕該請求。
- 將函式與您的發佈行為建立關聯。
相關資訊
Authorization@Edge – 如何使用 Lambda@Edge 和 JSON Web 權杖來增強 Web 應用程式安全性
使用 Lambda@Edge 進行外部伺服器授權
使用 OpenID Connect 和 AWS Secrets Manager 保護 CloudFront 發佈項目