Amazon S3 操作 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3 操作

Amazon S3 定义了可在策略中指定的一组权限。这些是关键字,每个关键字都映射到特定的 Amazon S3 操作。有关 Amazon S3 操作的更多信息,请参阅 Amazon Simple Storage Service API 参考中的操作

要了解如何在 Amazon S3 策略中指定权限,请查看以下示例策略。有关策略中使用的 Amazon S3 操作、资源和条件键的列表,请参阅 Amazon S3 的操作、资源和条件键。有关 Amazon S3 操作的完整列表,请参阅操作

以下存储桶策略示例授予用户(Dave)s3:PutObjects3: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:CreateBuckets3:ListAllMyBucketss3: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:::*" ] } ] }
控制台访问策略

如果用户想要使用 Amazon Web Services Management Console查看存储桶和这些存储桶中的内容,用户必须具有 s3:ListAllMyBucketss3:GetBucketLocation 权限。有关示例,请参阅博客文章编写 IAM 策略:如何授予对 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:DeleteObjects3:DeleteObjectVersions3:PutLifecycleConfiguration 权限。

显式拒绝

默认状态下,用户没有权限。但在创建用户、将用户添加到组以及授予他们权限时,用户可能获得您并不打算授予的某些权限。为避免这些权限漏洞,可通过添加显式拒绝编写更严格的访问策略。

前面的存储桶策略授予 s3:GetBucketAcl 权限 DOC-EXAMPLE-BUCKET1 将存储桶传送给用户 Dave。在此示例中,您显式拒绝用户 Dave 删除对象权限。显式拒绝始终取代授予的其他任何权限。以下是添加了显式拒绝的经修订的访问策略示例。

{ "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:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] } ] }

以下用户策略示例向用户授予 s3:GetAccountPublicAccessBlock 权限。对于这些权限,请将 Resource 值设置为 "*"。有关更多信息,请参阅Amazon S3 资源

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }