我想限制對我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體的存取,以便使用者只能通過我的 Amazon CloudFront 分佈存取物件。
解決方法
**重要事項:**在開始之前,請確定 CloudFront 分佈的 Amazon S3 原始伺服器已設定為 REST API 端點。例如,AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com。此解決方法不適用於設定為網站端點的 S3 原始伺服器。例如,AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com。如需詳細資訊,請參閱如何使用 CloudFront 提供託管在 Amazon S3 上的靜態網站?
選項 1 (最佳實務): 建立 CloudFront 原始存取控制 (OAC)
- 開啟CloudFront 主控台。
- 從分佈清單中,選擇您要限制存取權限的 S3 儲存貯體提供內容的分佈。
- 選擇原始伺服器索引標籤。
- 選取 S3 原始伺服器,然後選擇編輯。
- 在原始伺服器存取權限下,請選取**原始伺服器存取控制設定 (建議使用) **。
- 在原始伺服器存取控制,選取現有的 OAC,或選擇建立控制設定。
- 在對話方塊中,命名您的控制設定。最佳實務是將預設設定保留為簽署請求 (建議使用)。然後,選擇 建立。
- 針對S3 儲存貯體存取,請套用在 S3 儲存貯體上的儲存貯體政策。選取複製政策,然後選取儲存。
- 選取前往 S3 儲存貯體許可,將您帶到 S3 儲存貯體主控台。
- 選取儲存變更。
- 在Amazon S3 主控台中,從儲存貯體清單中選擇作為 CloudFront 分佈原始伺服器的儲存貯體。
- 選擇許可索引標籤。
- 在儲存貯體政策下,確認您看到類似下列內容的陳述式:
{
"Version": "2012-10-17",
"Statement": {
"Sid": "AllowCloudFrontServicePrincipalReadOnly",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE"
}
}
}
}
您必須新增上述陳述式,才能讓 CloudFront OAC 讀取儲存貯體中的物件。
**注意:**在您使用 CloudFront OAC 限制儲存貯體的存取之後,您可以選擇透過整合 AWS WAF 來新增另一層安全性。
選項 2: 建立舊版 CloudFront 原始存取身分 (OAI)
- 開啟CloudFront 主控台。
- 從分佈清單中,選擇您要限制存取權限的 S3 儲存貯體提供內容的分佈。
- 選擇原始伺服器索引標籤。
- 選取S3 原始伺服器,然後選擇編輯。
- 在原始伺服器存取下,選取舊版存取身分。
- 在原始伺服器存取身分下拉式清單中,選取原始伺服器存取身分名稱,或選擇建立新的 OAI。
- 在對話方塊中,命名新的原始伺服器存取身分,然後選擇建立。
- 在儲存貯體政策下,請選取是,更新儲存貯體政策。
- 選擇儲存變更。
- 在Amazon S3 主控台中,從儲存貯體清單中選擇作為 CloudFront 分佈原始伺服器的儲存貯體。
- 選擇許可索引標籤。
- 在儲存貯體政策下,確認您看到類似下列內容的陳述式:
{{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
}
**注意:查看儲存貯體政策是否有任何含有「生效」的陳述式: 「拒絕」**以防止從 CloudFront OAI 存取儲存貯體。修改這些陳述式,讓 CloudFront OAI 可以存取儲存貯體中的物件。
另外,請查看您的儲存貯體政策是否有任何含有**「生效」的陳述式: 「允許」**以允許從任何不是 CloudFront OAI 的原始伺服器存取儲存貯體。根據您的使用案例的要求修改這些陳述式。
相關資訊
建立分佈
Amazon S3 中的身分和存取管理