如何使用我的 CloudFront 分佈限制對 Amazon S3 儲存貯體的存取?

2 分的閱讀內容
0

我想限制對我的 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)

  1. 開啟CloudFront 主控台
  2. 從分佈清單中,選擇您要限制存取權限的 S3 儲存貯體提供內容的分佈。
  3. 選擇原始伺服器索引標籤。
  4. 選取 S3 原始伺服器,然後選擇編輯
  5. 原始伺服器存取權限下,請選取**原始伺服器存取控制設定 (建議使用) **。
  6. 原始伺服器存取控制,選取現有的 OAC,或選擇建立控制設定。
  7. 在對話方塊中,命名您的控制設定。最佳實務是將預設設定保留為簽署請求 (建議使用)。然後,選擇 建立
  8. 針對S3 儲存貯體存取,請套用在 S3 儲存貯體上的儲存貯體政策。選取複製政策,然後選取儲存
  9. 選取前往 S3 儲存貯體許可,將您帶到 S3 儲存貯體主控台。
  10. 選取儲存變更
  11. Amazon S3 主控台中,從儲存貯體清單中選擇作為 CloudFront 分佈原始伺服器的儲存貯體。
  12. 選擇許可索引標籤。
  13. 在儲存貯體政策下,確認您看到類似下列內容的陳述式:
{
    "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)

  1. 開啟CloudFront 主控台
  2. 從分佈清單中,選擇您要限制存取權限的 S3 儲存貯體提供內容的分佈。
  3. 選擇原始伺服器索引標籤。
  4. 選取S3 原始伺服器,然後選擇編輯
  5. 在原始伺服器存取下,選取舊版存取身分
  6. 在原始伺服器存取身分下拉式清單中,選取原始伺服器存取身分名稱,或選擇建立新的 OAI
  7. 在對話方塊中,命名新的原始伺服器存取身分,然後選擇建立
  8. 在儲存貯體政策下,請選取是,更新儲存貯體政策
  9. 選擇儲存變更
  10. Amazon S3 主控台中,從儲存貯體清單中選擇作為 CloudFront 分佈原始伺服器的儲存貯體。
  11. 選擇許可索引標籤。
  12. 儲存貯體政策下,確認您看到類似下列內容的陳述式:
{{

"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 中的身分和存取管理

AWS 官方
AWS 官方已更新 1 年前