

# Amazon S3：S3 存储桶访问，但在最近未进行 MFA 的情况下拒绝生产存储桶
S3：在最近进行了 MFA 的情况下提供完全访问

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

该策略从不允许使用长期用户访问密钥以编程方式访问 `amzn-s3-demo-bucket` 存储桶。这是将 `aws:MultiFactorAuthAge` 条件键与 `NumericGreaterThanIfExists` 条件运算符结合使用来实现的。如果 MFA 不存在或 MFA 的使用期限超过 30 分钟，则此策略条件将返回 `true`。在这些情况下，访问将被拒绝。要以编程方式访问 `amzn-s3-demo-bucket-production` 存储桶，S3 管理员必须使用通过 [GetSessionToken](id_credentials_temp_request.md#api_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"}
            }
        }
    ]
}
```

------