因为AWS CLI不存在控制台直接打开MFA功能,然后生活中遇见了,那么就记录一下吧

给IAM用户开启MFA

首先需要在IAM用户-安全证书,点击开启MFA

1.png

这里选择虚拟MFA应用程序,需要在手机上安装相应的软件。这里我选择了Authenticator,其他的可以去AWS文档查看。

打开软件,选择添加账户,选择其他账号,扫描二维码,然后就可以将虚拟MFA应用程序和该用户绑定了。然后输入软件中两个连续的认证代码即可激活该MFA功能。

2.png

这时候打开一个无痕浏览器验证一下,进入登陆页面

3.png

可以发现出现了MFA代码输入框,只有输入提交MFA代码,才能够正常登录。

4.png

做到这里,已经成功实现了MFA控制aws控制台登录的功能。

AWS CLI开启MFA

回到IAM的用户界面,选择权限,点击添加权限。

5.png

选择直接附加现有策略下的创建策略

6.png

将相关的策略填入json下即可

7.png

其中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"}
            }
        }
    ]
}

或者也可以通过可视化编辑器编辑策略。然后将创建好的策略附加给用户即可。

8.png

这时候登录到安装了AWS CLI以及配置好AWS configure的服务器上,这时候使用aws s3 ls命令会发现是没有权限来列出S3中的内容的。

9.png

运行下方命令来获取临时凭证,然后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

10.png

这时候再aws s3 ls即可获取到相应的桶列表了

11.png

如果想取消凭证可以unset配置,想要重新配置凭证,也需要unset配置

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

12.png

Last modification:July 31, 2021
如果觉得我的文章对你有用,请随意赞赏