从控制台终止EC2实例时是否可以触发MFA

时间:2019-07-14 07:18:19

标签: amazon-web-services amazon-ec2 amazon-iam mfa

我的IAM用户已使用MFA成功验证到AWS控制台。我想防止用户意外删除EC2资源。我希望经过身份验证的用户在尝试从控制台删除EC2实例时提示输入MFA。我尝试将内联策略与已设置操作的操作一起使用,以允许停止/终止实例,并为需要MFA设置条件许可。但是,一旦用户登录到控制台,就不会提示用户MFA停止/终止实例操作。以下是我的政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}

2 个答案:

答案 0 :(得分:0)

在用户进行API调用时,您无法触发其他身份验证。 您创建的策略将确保只有 个MFA用户可以终止EC2实例。

答案 1 :(得分:0)

我认为确保(几乎)每个API调用都输入mfa代码的唯一方法是:

  1. 创建一个新角色,该角色由要执行任何受MFA保护的操作(终止或停止实例)的用户承担。
  2. 授予被允许执行操作权限的用户承担角色。
  3. 创建角色并将策略附加到该角色,该角色可以访问操作 ec2:TerminateInstances ec2:StopInstances
  4. 在新创建的策略上设置aws:MultiFactorAuthPresent条件。
  5. 在新创建的策略上用非常短的秒数(例如10)设置另一个条件键 aws:MultiFactorAuthAge [1]。这样可以确保用户必须每隔10秒使用新的令牌代码来担任该角色。
  6. 创建一个脚本,用户可以调用该脚本来触发受mfa保护的操作。该脚本提示输入令牌代码,并将其传递给aws cli操作 aws sts假定角色 [2],并将参数 role-arn 设置为您所创建角色的arn在步骤(1)中,将 role-session-name 设置为任意值,将 serial-number 设置为您的mfa设备的序列号和令牌代码设置为您提示用户输入的值。

参考文献

[1] https://aws.amazon.com/de/blogs/security/how-to-enable-mfa-protection-on-your-aws-api-calls/(第2部分第2号)
[2] https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html(“在AssumeRole中使用MFA”一节)