本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
停用的先決條件 ACLs
如果您的儲存貯體ACL授予您以外的存取權 AWS 帳戶,在停用之前ACLs,您必須將儲存貯體ACL權限移轉至儲存貯體政策,並將值區重設ACL為預設的私有值區ACL。如果您沒有遷移這些值區ACLs,則套用值區擁有者強制執行設定以停用的請求ACLs會失敗,並傳回 InvalidBucketAclWithObjectOwnership錯誤代碼。我們也建議您檢閱物件ACL權限,並將其移轉至儲存貯體政策。如需有關建議先決條件的詳細資訊,請參閱 停用的先決條件 ACLs。
您現有的每個值區和物件在IAM政策中都ACLs具有對等值區。下列值區政策範例說明值區READ
和物件ACLs對應至WRITE
權限的方式和IAM權限。如需每個權限如何ACL轉換成IAM權限的詳細資訊,請參閱ACL權限與存取原則權限的對應。
若要檢閱值區政策並將ACL權限移轉至值區政策,請參閱下列主題。
儲存貯體政策範例
以下值區政策範例說明如何遷移第三方的WRITE
值區READ
和物件ACL權限 AWS 帳戶 到存儲桶策略。 READ_ACP
和WRITE_ACP
ACLs與原則相關性較低,因為它們授ACL與相關權限 (s3:GetBucketAcl
s3:GetObjectAcl
s3:PutBucketAcl
、、和s3:PutObjectAcl
)。
範例 -READ
ACL 對於桶
如果你的桶有一READ
ACL個補助金 AWS 帳戶
列出存儲桶內容的權限,您可以編寫一個存儲桶政策 111122223333
s3:ListBucket
s3:ListBucketVersions
,授予您存儲桶的s3:ListBucketMultipartUploads
權限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to list the objects in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
" } ] }
範例 -對READ
ACLs於值區中的每個物件
如果值區中的每個物件都有授予READ
ACL存取權的物件 AWS 帳戶
,您可以撰寫值區政策,針對值區中的每個物件授予此帳戶111122223333
s3:GetObject
和s3:GetObjectVersion
權限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Read permission for every object in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] }
此範例資源元素會授予特定物件的存取權。
"Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/OBJECT-KEY
"
範例 — 授WRITE
ACL予將物件寫入值區的權限
如果你的存儲桶有一WRITE
ACL個補助 AWS 帳戶
將物件寫入值區的權限,您可以撰寫值區政策來授與值區的111122223333
s3:PutObject
權限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to write objects to a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] }
使用 S3 主控台檢閱和遷移ACL許可
若要檢閱值區的ACL權限
登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇您的儲存貯體名稱。
-
選擇許可索引標籤標籤。
-
在 [存取控制清單 (ACL)] 下方,檢閱您的值區ACL權限。
若要檢閱物件的ACL權限
登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇包含您物件的儲存貯體名稱。
-
在 Object (物件) 清單中,選擇您的物件名稱。
-
選擇許可索引標籤標籤。
-
在存取控制清單 (ACL) 下,檢閱您的物件ACL權限。
移轉ACL權限並更新值區 ACL
登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇您的儲存貯體名稱。
-
在 Permissions (許可) 索引標籤上,Bucket policy (儲存貯體政策) 下,選擇 Edit (編輯)。
-
在 Policy (政策) 方塊中,新增或更新儲存貯體政策。
-
選擇 Save changes (儲存變更)。
-
更新值區ACL以移除其他群組的ACL授權,或 AWS 帳戶.
-
針對物件擁有權套用儲存貯體擁有者強制執行設定。
使用 AWS CLI 檢閱和移轉ACL權限
-
若要退回值區ACL的值區,請使用 get-bucket-acl
AWS CLI 命令: aws s3api get-bucket-acl --bucket
amzn-s3-demo-bucket
例如,此值區ACL會授予第三方帳戶
WRITE
並READ
存取權。在這種情況下ACL,第三方帳戶由規範用戶 ID 識別。若要套用值區擁有者強制執行的設定並停用ACLs,您必須將第三方帳戶的這些權限移轉至值區政策。{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT
", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT
", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }如需其他範例ACLs,請參閱範例演練。
-
將值區ACL權限遷移至值區政策:
此範例儲存貯體政策會為第三方帳戶授予
s3:PutObject
和s3:ListBucket
許可。在值區策略中,第三方帳戶由 AWS 帳戶 識別碼 (
)。111122223333
aws s3api put-bucket-policy --bucket
DOC-EXAMPLE-BUCKET
--policyfile://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyForCrossAccountAllowUpload", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:root" ] }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] } -
若要傳回ACL特定物件的,請使用 get-object-acl
AWS CLI 指令。 aws s3api get-object-acl --bucket
amzn-s3-demo-bucket
--keyEXAMPLE-OBJECT-KEY
-
如有必要,請將物件ACL權限移轉至儲存貯體政策。
此範例資源元素會授予儲存貯體政策中特定物件的存取權。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/EXAMPLE-OBJECT-KEY
" -
將值區ACL的值區重設為預設值ACL。
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
針對物件擁有權套用「儲存貯體擁有者強制執行」設定。
範例演練
下列範例說明如何針對特定使用案例將ACL權限移轉至儲存貯體政策。
授予 S3 日誌交付群組的存取權以進行伺服器存取日誌記錄
如果您想要ACLs針對伺服器存取記錄目的地儲存貯體 (也稱為目標儲存貯體) 套用「儲存貯體擁有者強制執行」設定,則必須將 S3 日誌傳遞群組的儲存貯體ACL許可移轉至儲存貯體政策中的記錄服務主體 (logging.s3.amazonaws.com
)。如需有關日誌交付許可的詳細資訊,請參閱 日誌交付許可。
此儲存貯體ACL授予WRITE
和READ_ACP
存取 S3 日誌傳遞群組:
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "WRITE" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "READ_ACP" } ] }
將 S3 日誌傳遞群組的儲存貯體ACL許可移轉至儲存貯體政策中的記錄服務主體
-
將以下儲存貯體政策新增至您的目的地儲存貯體,取代範例值。
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policyfile://policy.json
policy.json: { { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/EXAMPLE-LOGGING-PREFIX
*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID
" } } } ] } -
將目ACL的地值區的值區重設為預設值ACL。
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
針對物件擁有權套用「儲存貯體擁有者強制執行」設定至您的目的地儲存貯體。
對儲存貯體中的物件授予公用讀取存取權。
如果您的物件ACLs授與值區中所有物件的公開讀取權限,您可以將這些ACL權限移轉至值區政策。
此物件ACL會授與值區中物件的公開讀取權限:
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
將公用讀取ACL權限移轉至值區政策
-
若要授予儲存貯體中所有物件的公用讀取存取權,請新增下列儲存貯體政策,取代範例值。
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policy file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }若要授予儲存貯體政策中特定物件的公用存取權,請使用
Resource
元素的下列格式。"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/OBJECT-KEY
"若要授予具有特定字首之所有物件的公用存取權,請使用
Resource
元素的下列格式。"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/PREFIX/
*" -
針對物件擁有權套用「儲存貯體擁有者強制執行」設定。
授予 Amazon ElastiCache (RedisOSS)訪問您的 S3 存儲桶
您可以將 ElastiCache (RedisOSS) 備份匯出到 S3 儲存貯體,讓您可以從外部 ElastiCache存取備份。若要將備份匯出到 S3 儲存貯體,您必須授 ElastiCache予將快照複製到儲存貯體的許可。如果您已授與值區ElastiCache 中的權限ACL,您必須將這些權限移轉至值區政策,然後才能將值區擁有者強制執行的設定套用為停用ACLs。如需詳細資訊,請參閱 Amazon ElastiCache 使用者指南中的授予對 Amazon S3 儲 ElastiCache 存貯體的存取權限。
下列範例顯示授與ACL權限的值區權限 ElastiCache。
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
若要將 ElastiCache (RedisOSS) 的值區ACL權限遷移至儲存貯體政策
-
將以下儲存貯體政策新增至您的儲存貯體,替換範例值。
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policy file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "Region
.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] } -
將值區ACL的值區重設為預設值ACL:
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
針對物件擁有權套用「儲存貯體擁有者強制執行」設定。