Amazon S3:S3 存储桶访问,但在最近未进行 MFA 的情况下拒绝生产存储桶
此示例说明如何创建基于身份的策略以允许 Amazon S3 管理员访问任何存储桶(包括更新、添加和删除对象)。不过,如果用户在过去 30 分钟内未使用多重身份验证 (MFA)IAM 中的 AWS 多重身份验证 登录,则显式拒绝访问 amzn-s3-demo-bucket-production
存储桶。该策略授予所需的权限以在控制台中执行该操作,或者以编程方式使用 AWS CLI 或 AWS API 执行该操作。要使用此策略,请将示例策略中的斜体占位符文本
替换为您自己的信息。然后,按照创建策略或编辑策略中的说明操作。
该策略从不允许使用长期用户访问密钥以编程方式访问 amzn-s3-demo-bucket
存储桶。这是将 aws:MultiFactorAuthAge
条件键与 NumericGreaterThanIfExists
条件运算符结合使用来实现的。如果 MFA 不存在或 MFA 的使用期限超过 30 分钟,则此策略条件将返回 true
。在这些情况下,访问将被拒绝。要以编程方式访问 amzn-s3-demo-bucket-production
存储桶,S3 管理员必须使用通过 GetSessionToken API 操作在过去 30 分钟内生成的临时凭证。
- JSON
-
-
{
"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:::amzn-s3-demo-bucket-production/*",
"arn:aws:s3:::amzn-s3-demo-bucket-production"
],
"Condition": {
"NumericGreaterThanIfExists": {"aws:MultiFactorAuthAge": "1800"}
}
}
]
}