簡體   English   中英

AWS S3 服務器端加密訪問被拒絕錯誤

[英]AWS S3 Server side encryption Access denied error

  • 我有 A 和 B AWS 賬戶,我正在將 S3 存儲桶從 A 賬戶 SoruceS3Bucket 同步到 B 賬戶 DestinationS3Bucket。
  • 以下是應用於目標存儲桶的存儲桶策略,它允許源 AWS 賬戶將內容與 DestinationS3Bucket 同步。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PermissionsToAAccount",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXXX:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::DestinationS3Bucket",
                "arn:aws:s3:::DestinationS3Bucket/*"
            ]
        }
    ]
}
  • 在這里,同步運行很長時間以來一直運行良好,並且仍在運行,但從最近幾天開始,DestinationS3Bucket 文件無法通過服務器端加密訪問被拒絕錯誤訪問。
  • 我已驗證 SourceS3Bucket 和 DestinationS3Bucket 上沒有加密(默認加密,無),我正在使用 Source AWS 帳戶密碼和訪問密鑰來同步內容。 提前致謝。

當您使用帳戶A的憑據將帳戶A中的一個S3存儲桶中的文件復制到帳戶B中的存儲桶時,目標存儲桶中文件的所有者將是帳戶A.(帳戶A是在帳戶B中創建文件的主體桶)。

在從源到目標存儲區的文件復制期間,添加--acl bucket-owner-full-control選項,以便帳戶B可以控制文件。 否則,您可能在帳戶B的存儲桶中有文件B無法訪問或控制的文件。

另一種選擇是使用帳戶B的憑據從源復制到目標存儲桶。 這樣,復制文件的所有者是帳戶B.

John Hanely提供的解決方案有效,但不會立即改變所有權。 您需要執行單獨的命令來更改它

第一步:

aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control

第二步:

aws s3 cp s3://yourbucket s3://yourbucket --recursive --metadata-directive REPLACE

注意--meta-directive REPLACE

您應該以這種方式一起替換文件和元數據 -

aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control --metadata-directive REPLACE

你不需要cp它。

假設:您有權訪問違規帳戶並且該帳戶具有 putobjectacl 策略權限。

告訴您誰放了文件以及誰有權訪問:

$ aws s3api get-object-acl --bucket yourbucket --key path/to/file
{
    "Owner": {
        "DisplayName": "the-account-putting-the-thing",
        "ID": "offendingaccountrandomidstringthatisntrelaventhere"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "the-account-putting-the-thing",
                "ID": "offendingaccountrandomidstringthatisntrelaventhere",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

要解決此問題,以便目標所有者現在控制文件:

$ aws s3api put-object-acl --bucket yourbucket --key path/to/file --acl bucket-owner-full-control
$ aws s3api get-object-acl --bucket yourbucket --key path/to/file
{
    "Owner": {
        "DisplayName": "the-account-putting-the-thing",
        "ID": "offendingaccountrandomidstringthatisntrelaventhere"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "the-account-putting-the-thing",
                "ID": "offendingaccountrandomidstringthatisntrelaventhere",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "DisplayName": "the-account-recieving-the-thing",
                "ID": "destinationaccountrandomidstringthatisntrelaventhere",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

從目標/所有者帳戶角色更改 acl vi s3api 后,我在操作文件時沒有遇到任何問題。

特別感謝前面的回答者。 沒有你,我不可能改正我的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM