Frank 向您演示如何
保护 AWS S3 存储桶
使用 MFA 设备

frank_enforce_mfa_other_account_access_bucket

为了提高安全性,我希望要求其他 AWS 账户的用户使用多重验证 (MFA) 设备来获取对我的 Amazon Simple Storage Service (Amazon S3) 存储桶的访问权限。该怎样做?

将与 MFA 相关的条件添加到您的存储桶策略中,要求其他 AWS 账户的用户使用 MFA 设备进行身份验证。

在开始之前,其他 AWS 账户的用户必须满足以下要求:

  • 他们必须有权访问 Amazon S3。例如,如果用户在其 AWS Identity and Access Management (IAM) 策略中包括 AmazonS3FullAccess AWS 托管策略,则满足此要求。
  • 他们必须附加了 IAM 策略以允许他们调用 GetSessionToken
  • 他们必须已配置 MFA 设备与其 IAM 身份配合使用。

接下来,创建存储桶策略并使用 aws:MultiFactorAuthPresentaws:MultiFactorAuthAge 条件。这些条件确定用户是否使用 MFA 设备进行身份验证。

例如,假设您希望除非其他账户的用户使用 MFA 设备进行身份验证,否则拒绝这些用户执行 s3:PutObject、s3:PutObjectAcl 或 s3:DeleteObject 操作的权限。您可以分两个部分编写存储桶策略

1.    第一部分在用户未使用 MFA(满足条件 "aws:MultiFactorAuthPresent": "false")进行身份验证时明确拒绝这些操作,类似于下文:

{
    "Version": "2012-10-17",
    "Id": "Policy201612130001aa",
    "Statement": [
        {
            "Sid": "Stmt201612130001ab",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::example.accounta.bucket/*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
...

2.    第二部分在用户使用 MFA(未满足条件 "aws:MultiFactorAuthPresent": "false")进行身份验证时明确允许这些操作,类似于以下内容:

...
        {
            "Sid": "Stmt201612130001ac",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::example.accounta.bucket",
                "arn:aws:s3:::example.accounta.bucket/*"
            ]
        }
    ]
}

在您将类似的存储桶策略添加到存储桶之后,用户可运行 get-session-token AWS 命令行界面 (AWS CLI) 命令来获取访问存储桶中资源所需的凭证。此命令需要用户提供:

  • 由 MFA 设备生成的临时代码
  • 硬件 MFA 设备的设备序列号,或者软件 MFA 设备的 Amazon 资源名称 (ARN)

注意:作为获取凭证的另一种选项,用户可以选择导出临时凭证作为环境变量


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 1 月 27 日

更新时间:2018 年 10 月 25 日