我們強制MFA用於AWS Web控制檯訪問。但是我也想要一些aws動作來提示MFA代碼。提示某些AWS Cli操作上的MFA代碼
aws iam delete-users --user-name theusername
Enter MFA: *********
這可能嗎?
我們強制MFA用於AWS Web控制檯訪問。但是我也想要一些aws動作來提示MFA代碼。提示某些AWS Cli操作上的MFA代碼
aws iam delete-users --user-name theusername
Enter MFA: *********
這可能嗎?
您應該可以在相關API操作中添加MFA條件。例如,以下是一個IAM策略,允許承載者自由調用EC2操作,但在調用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。
確切的用例是不可能的。但是,您可以提供必要的權限,例如將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"變量,並且當用戶嘗試使用指定的配置文件參數停止實例時,CLI會詢問MFA代碼(請注意返回的憑據將緩存在CLI中)。
或者,您可以使用由jarmod提供的建議,並使用自定義腳本,因爲您需要調用GetSessionToken並傳遞MFA令牌。有一個示例Python和C#腳本here。