在某些AWS Cli操作上提示MFA代码

问题描述 投票:0回答:2

我们强制MFA用于AWS Web控制台访问。但是我也想要一些aws动作提示输入MFA代码。

aws iam delete-users --user-name theusername
Enter MFA: *********

这可能吗?

amazon-web-services amazon-iam aws-cli
2个回答
1
投票

您应该能够在相关API操作上添加MFA条件。例如,这是一个允许承载者自由调用EC2操作的IAM策略,但在调用StopInstances或TerminateInstances时需要MFA。

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

有关更详细的示例,请参阅here


1
投票

确切的用例是不可能的。但是,您可以提供必要的许可,例如StopInstances到IAM角色并仅授予IAM用户权限以承担角色if and only if the user uses MFA。角色的信任政策如下:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
    "Action": "sts:AssumeRole",
    "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
  }
}

因此,在使用控制台时,IAM用户将使用凭据和MFA令牌登录,并且可以承担停止实例的角色。

使用CLI时,您可以使用named profiles with "mfa_serial"变量,当用户尝试使用命名的profile参数停止实例时,CLI将询问MFA代码(请注意,返回的凭据将在CLI中缓存)。

或者,您可以使用jarmod提供的建议并使用自定义脚本,因为您需要调用GetSessionToken并传递MFA令牌。有一个示例Python和C#脚本here

© www.soinside.com 2019 - 2024. All rights reserved.