AWS中国云配置强制MFA策略后导致AWS CLI和IDEA中无法使用问题

问题

之前的文章《AWS中国IAM用户强制使用MFA》,启用必须使用MFA策略才能使用AWS服务。但是,开启之后,遇到了本地开发环境的IDEA和AWS CLI不能正常调用ssm的配置中心问题。

解决思路

在本地配置文件中,配置使用能够正常使用ssm配置中心的ec2角色。也就是说,我本地的IAM用户代理使用ec2的角色,来访问ssm配置中心。

解决步骤

假设已经存在一个test-ec2角色,我们需要将这里test-ec2角色给本地mac开发环境的AWS CLI和IDEA使用。

设置ec2角色信任关系

给test-ec2角色设置一个信任关系,许可123456789012账号下面所有IAM用户都可以使用test-ec2角色,具体配置步骤如下图:

编辑信任策略,内容如下:

json 复制代码
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": {
				"Service": "ec2.amazonaws.com.cn",
				"AWS": "arn:aws-cn:iam::123456789012:root"
			},
			"Action": "sts:AssumeRole"
		}
	]
}

这里最关键的就是添加了一行:"AWS": "arn:aws-cn:iam::123456789012:root",这代表123456789012下面所有IAM用户都可以代理使用这个角色。这个步骤必须这样显示配置在角色这边,不然,不能代理使用这个角色。最后配置好后,结果如下:

创建代理使用角色策略

创建一种策略,策略表示IAM用户能够代理使用的角色有哪些?找到策略创建入口页面,如下图:

开始创建策略,如下图:

具体策略内容如下:

json 复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws-cn:iam::123456789012:role/test-ec2"
        }
    ]
}

这代表只能使用arn:aws-cn:iam::123456789012:role/test-ec2角色。接下来,设置策略名称,如下图:

然后,将这个策略设置给需要的IAM用户或用户组。

配置本地aws文件

找到本地配置文件:~/.aws/config。具体内容如下:

bash 复制代码
[default]
aws_access_key_id = xxxxxx
aws_secret_access_key = xcvasdgtsdbsdfhdsgh
region = cn-north-1
output = json

[profile test-ec2]
role_arn = arn:aws-cn:iam::123456789012:role/test-ec2
source_profile = default
mfa_serial= arn:aws-cn:iam::123456789012:mfa/yalin
region = cn-north-1
output = json

其中default部分,可以使用aws configure配置默认的IAM用户。关键就在于[profile test-ec2]部分中的如下三行:

bash 复制代码
role_arn = arn:aws-cn:iam::123456789012:role/test-ec2
source_profile = default
mfa_serial= arn:aws-cn:iam::123456789012:mfa/yalin

其中role_arn就是被代理的角色;source_profile使用IAM用户,mfa_serialIAM用户使用的MFA设备验证码。

测试

AWS CLI

bash 复制代码
aws ssm describe-parameters --profile test-ec2
Enter MFA code for arn:aws-cn:iam::123456789012:mfa/yalin:

输入IAM用户的MFA验证码即可。具体结果效果如下:

IDEA

在IDEA中安装AWS Toolkit插件,如下图:

具体地址:https://plugins.jetbrains.com/plugin/11349-aws-toolkit

安装好这个插件之后,再尝试连AWS云,具体如下图:

点击Retry后,出现如下对话框,如图:

填入MFA授权码,点击OK。如果没有错误,则表示IDEA插件使用成功。具体效果如下图:

总结

这样我们就可以使用自己的IAM用户代理各个环境的不同角色了。

参考

相关推荐
桦说编程3 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen3 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研3 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员4 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国5 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~5 小时前
《设计模式》装饰模式
java·设计模式
A尘埃5 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交5 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_026 小时前
【Java基础面试题】Java基础概念
java·开发语言