Amazon S3:S3 存储桶访问,但在最近未进行 MFA 的情况下拒绝生产存储桶 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3:S3 存储桶访问,但在最近未进行 MFA 的情况下拒绝生产存储桶

此示例说明如何创建基于身份的策略以允许 Amazon S3 管理员访问任何存储桶(包括更新、添加和删除对象)。不过,如果用户在过去 30 分钟内未使用多重身份验证 (MFA)在 Amazon 中使用多重身份验证 (MFA) 登录,则显式拒绝访问 Production 存储桶。该策略授予所需的权限以在控制台中执行该操作,或者以编程方式使用 Amazon CLI 或 Amazon API 执行该操作。要使用此策略,请将示例策略中的斜体占位符文本替换为您自己的信息。然后,按照创建策略编辑策略中的说明操作。

该策略从不允许使用长期用户访问密钥以编程方式访问 Production 存储桶。这是将 aws:MultiFactorAuthAge 条件键与 NumericGreaterThanIfExists 条件运算符结合使用来实现的。如果 MFA 不存在或 MFA 的使用期限超过 30 分钟,则此策略条件将返回 true。在这些情况下,访问将被拒绝。要以编程方式访问 Production 存储桶,S3 管理员必须使用通过 GetSessionToken API 操作在过去 30 分钟内生成的临时凭证。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListAllS3Buckets", "Effect": "Allow", "Action": ["s3:ListAllMyBuckets"], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowBucketLevelActions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowBucketObjectActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::*/*" }, { "Sid": "RequireMFAForProductionBucket", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::Production/*", "arn:aws:s3:::Production" ], "Condition": { "NumericGreaterThanIfExists": {"aws:MultiFactorAuthAge": "1800"} } } ] }