本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
停用 ACLs 的先決條件
如果您的儲存貯體 ACL 授予您外部的存取權 AWS 帳戶,則在您停用 ACLs 之前,必須將儲存貯體 ACL 許可遷移至儲存貯體政策,並將儲存貯體 ACL 重設為預設私有 ACL。如果您未遷移這些儲存貯體 ACLs,則套用儲存貯體擁有者強制執行設定以停用 ACLs 的請求會失敗,並傳回 InvalidBucketAclWithObjectOwnership 錯誤碼。我們也建議您檢閱物件 ACL 許可,並將其遷移至儲存貯體政策。如需有關建議先決條件的詳細資訊,請參閱 停用 ACLs 的先決條件。
您現有的每個儲存貯體和物件 ACLs 在 IAM 政策中具有同等的 。下列儲存貯體政策範例示範儲存貯體READ
和物件 ACLs 映射到 IAM WRITE
許可的方式和許可。如需有關每個 ACL 如何轉換為 IAM 許可的詳細資訊,請參閱 ACL 許可和存取政策許可的映射。
若要檢閱並遷移 ACL 許可至儲存貯體政策,請參閱下列主題。
儲存貯體政策範例
這些儲存貯體政策範例示範如何將第三方的 ACL 許可遷移READ
和WRITE
儲存貯體和物件 Word 許可 AWS 帳戶 至儲存貯體政策。 READ_ACP
和 WRITE_ACP
ACLs 與政策的相關性較低s3:GetObjectAcl
,因為他們授予 ACL 相關許可 (s3:GetBucketAcl
、s3:PutBucketAcl
、 和 s3:PutObjectAcl
)。
範例 – READ
儲存貯體的 ACL
如果您的儲存貯體有 AWS 帳戶 ACL READ
授予許可,以列出儲存貯體的內容,您可以撰寫儲存貯體政策來授予 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:::" } ] }
amzn-s3-demo-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:::/*" } ] }
amzn-s3-demo-bucket
此範例資源元素會授予特定物件的存取權。
"Resource": "arn:aws:s3:::
/
amzn-s3-demo-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:::/*" } ] }
amzn-s3-demo-bucket
使用 S3 主控台檢閱和遷移 ACL 許可
若要檢閱儲存貯體的 ACL 許可
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在 Buckets (儲存貯體) 清單中,選擇您的儲存貯體名稱。
-
選擇許可索引標籤標籤。
-
在存取控制清單 (ACL) 下,檢閱您的儲存貯體 ACL 許可。
若要檢閱物件的 ACL 許可
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在 Buckets (儲存貯體) 清單中,選擇包含您物件的儲存貯體名稱。
-
在 Object (物件) 清單中,選擇您的物件名稱。
-
選擇許可索引標籤標籤。
-
在存取控制清單 (ACL) 下,檢閱您的物件 ACL 許可。
遷移 ACL 許可並更新您的儲存貯體 ACL
登入 AWS Management Console 並在 Word 開啟 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 帳戶 ID () 識別
。111122223333
aws s3api put-bucket-policy --bucket
--policyamzn-s3-demo-bucket
file://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:::
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }amzn-s3-demo-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 會授予 S3 日誌交付群組的 WRITE
和 READ_ACP
存取權:
{ "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:::
/amzn-s3-demo-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 (Redis OSS) 存取 S3 儲存貯體的權限
您可以將 ElastiCache (Redis OSS) 備份匯出至 S3 儲存貯體,讓您從 outside ElastiCache 存取備份。若要將備份匯出至 S3 儲存貯體,您必須授予 ElastiCache 許可,才能將快照複製到儲存貯體。如果您已在儲存貯體 ElastiCache 中授予 ACL 的許可,您必須先將這些許可遷移至儲存貯體政策,才能套用儲存貯體擁有者強制執行設定以停用 ACLs。如需詳細資訊,請參閱 Amazon ElastiCache 使用者指南中的 GrantWord 存取您的 Amazon S3 儲存貯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" } ] }
將儲存貯體 ACL for ElastiCache (Redis OSS) 的許可遷移至儲存貯體政策
-
將以下儲存貯體政策新增至您的儲存貯體,替換範例值。
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 -
針對物件擁有權套用「儲存貯體擁有者強制執行」設定。