因为AWS CLI不存在控制台直接打开MFA功能,然后生活中遇见了,那么就记录一下吧
给IAM用户开启MFA
首先需要在IAM用户-安全证书,点击开启MFA
这里选择虚拟MFA应用程序,需要在手机上安装相应的软件。这里我选择了Authenticator
,其他的可以去AWS文档查看。
打开软件,选择添加账户,选择其他账号,扫描二维码,然后就可以将虚拟MFA应用程序和该用户绑定了。然后输入软件中两个连续的认证代码即可激活该MFA功能。
这时候打开一个无痕浏览器验证一下,进入登陆页面
可以发现出现了MFA代码输入框,只有输入提交MFA代码,才能够正常登录。
做到这里,已经成功实现了MFA控制aws控制台登录的功能。
AWS CLI开启MFA
回到IAM的用户界面,选择权限,点击添加权限。
选择直接附加现有策略下的创建策略
将相关的策略填入json下即可
其中arn:aws:iam::
需要替换成符合中国区规范的arn地址 arn:aws-cn:iam::
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowViewAccountInfo",
"Effect": "Allow",
"Action": "iam:ListVirtualMFADevices",
"Resource": "*"
},
{
"Sid": "AllowManageOwnVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/${aws:username}"
},
{
"Sid": "AllowManageOwnUserMFA",
"Effect": "Allow",
"Action": [
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}
}
}
]
}
或者也可以通过可视化编辑器编辑策略。然后将创建好的策略附加给用户即可。
这时候登录到安装了AWS CLI以及配置好AWS configure的服务器上,这时候使用aws s3 ls命令会发现是没有权限来列出S3中的内容的。
运行下方命令来获取临时凭证,然后export导入即可
aws sts get-session-token --serial-number 用户ARN --token-code MFA码
export AWS_ACCESS_KEY_ID=333
export AWS_SECRET_ACCESS_KEY=222
export AWS_SESSION_TOKEN=111
这时候再aws s3 ls即可获取到相应的桶列表了
如果想取消凭证可以unset配置,想要重新配置凭证,也需要unset配置
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN