Amazon S3 操作
Amazon S3 定义了可在策略中指定的一组权限。这些是关键字,每个关键字都映射到特定的 Amazon S3 操作。有关 Amazon S3 操作的更多信息,请参阅 Amazon Simple Storage Service API 参考中的操作。
要了解如何在 Amazon S3 策略中指定权限,请查看以下示例策略。有关策略中使用的 Amazon S3 操作、资源和条件键的列表,请参阅 Amazon S3 的操作、资源和条件键。有关 Amazon S3 操作的完整列表,请参阅操作。
示例 — 对象操作
以下桶策略示例授予用户(Dave)s3:PutObject
和 s3:PutObjectAcl
权限。如果移除 Principal
元素,则可将此策略附加到用户。这些是对象操作。相应地,relative-id
ARN 的 Resource
部分标识对象 (awsexamplebucket1/*
)。有关更多信息,请参阅Amazon S3 资源。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Dave" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
awsexamplebucket1
/*" } ] }
所有 Amazon S3 操作的权限
您可使用通配符来授予对所有 Amazon S3 操作的权限。
"Action": "*"
示例 — 桶操作
以下用户策略示例授予用户 s3:CreateBucket
、s3:ListAllMyBuckets
和 s3:GetBucketLocation
权限。对于所有这些权限,您将 Resource
ARN 的 relative-id
部分设置为“*”。对于其他所有桶操作,必须指定桶名称。有关更多信息,请参阅Amazon S3 资源。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:CreateBucket", "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::*" ] } ] }
控制台访问策略
如果用户想要使用 AWS Management Console查看桶和这些桶中的内容,用户必须具有 s3:ListAllMyBuckets
和 s3:GetBucketLocation
权限。有关示例,请参阅博客文章编写 IAM policy:如何授予对 S3 桶的访问权限
示例 — 桶子资源操作
以下用户策略授予用户 Dave 对 s3:GetBucketAcl
桶的
权限。DOC-EXAMPLE-BUCKET1
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": [ "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::" ] } ] }
DOC-EXAMPLE-BUCKET1
DELETE 对象权限
可通过显式调用 DELETE Object API 或配置其生命周期来删除对象(请参阅 管理存储生命周期),以便 Amazon S3 能够在对象生命周期已过时将它们删除。要显式阻止用户或账户删除对象,必须显式拒绝授予他们 s3:DeleteObject
、s3:DeleteObjectVersion
和 s3:PutLifecycleConfiguration
权限。
显式拒绝
默认状态下,用户没有权限。但在创建用户、将用户添加到组以及授予他们权限时,用户可能获得您并不打算授予的某些权限。为避免这些权限漏洞,可通过添加显式拒绝编写更严格的访问策略。
前面的桶策略授予 s3:GetBucketAcl
权限
将桶传送给用户 Dave。在此示例中,您显式拒绝用户 Dave 删除对象权限。显式拒绝始终取代授予的其他任何权限。以下是添加了显式拒绝的经修订的访问策略示例。DOC-EXAMPLE-BUCKET1
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
DOC-EXAMPLE-BUCKET1
/*123456789012
:user/Dave" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
" ] } ] }
DOC-EXAMPLE-BUCKET1
/*
示例 — 账户操作
以下用户策略示例向用户授予 s3:GetAccountPublicAccessBlock
权限。对于这些权限,请将 Resource
值设置为 "*"
。有关更多信息,请参阅Amazon S3 资源。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }