Amazon web services 切换角色可以从控制台(AWS GUI)工作,但不能从Ansible脚本工作
问题:我需要通过脚本切换角色。sts:AssumeRole权限足够吗 阐述: 我通过控制台登录到启用MFA的AWS帐户。默认情况下,我登录的这个角色没有执行任何操作的权限。 为了旋转EC2,我需要切换角色。 我转到“切换角色”,并使用帐户和角色,切换到具有创建EC2实例权限的其他角色。 我想通过Ansible脚本实现同样的功能 我的yml脚本的一个片段如下所示:Amazon web services 切换角色可以从控制台(AWS GUI)工作,但不能从Ansible脚本工作,amazon-web-services,ansible,Amazon Web Services,Ansible,问题:我需要通过脚本切换角色。sts:AssumeRole权限足够吗 阐述: 我通过控制台登录到启用MFA的AWS帐户。默认情况下,我登录的这个角色没有执行任何操作的权限。 为了旋转EC2,我需要切换角色。 我转到“切换角色”,并使用帐户和角色,切换到具有创建EC2实例权限的其他角色。 我想通过Ansible脚本实现同样的功能 我的yml脚本的一个片段如下所示: tasks: - sts_assume_role: role_arn: "{{role_arn}}"
tasks:
- sts_assume_role:
role_arn: "{{role_arn}}"
role_session_name: "{{role_session_name}}"
region: "{{app_region}}"
aws_access_key: "{{ aws_access_key_id }}"
aws_secret_key: "{{ aws_secret_access_key }}"
register: assumed_role
- debug:
msg: "aws_access_key: {{ assumed_role.sts_creds.access_key }} ,
aws_secret_key: {{ assumed_role.sts_creds.secret_key }},
security_token: {{ assumed_role.sts_creds.session_token }}"
但是,这会导致类似以下情况的错误:
调用AssumeRole时发生客户端错误(AccessDenied)
操作:用户:arn:aws:iam:::用户/不是
授权在资源上执行:sts:假定角色:
arn:aws:iam::角色/
这也是我从aws cli得到的相同错误
虽然我知道我没有sts:AssumeRole权限来完成这项工作,但我已经向公司的内部团队提出了这一点。然而,由于一些未知的原因,即使进行了多次随访,他们也花了太长的时间
我只想知道得到这个许可就足够了,还是我需要更多的特权?当然,这是假设sts:AssumeRole是这个角色的正确特权。
另外,当我通过脚本进行操作时,是否需要MFA?我只有在第一次从控制台登录到默认帐户时才手动使用MFA
提前感谢您的帮助,如果这听起来太简单,我表示歉意,但我只是想在严重的时间紧迫情况下启动和运行。如果没有角色的信任策略或IAM用户的权限策略,我只能猜测,IAM用户有一个附件,即拒绝任何内容,除非MFAed或您试图承担的角色需要
因此,您可以通过传递MFA令牌来获取临时凭据并生成AssumeRole API,也可以通过传递MFA令牌来获取临时凭据。因此,我猜问题不在于权限,而在于boto2()存在问题 我必须为sts_假设_角色添加额外参数:
tasks:
- sts_assume_role:
role_arn: "{{role_arn}}"
mfa_serial_number: "{{mfa_serial}}"
mfa_token: "{{ lookup('env', 'MFA') }}"
role_session_name: "{{role_session_name}}"
region: "{{app_region}}"
aws_access_key: "{{ aws_access_key_id }}"
aws_secret_key: "{{ aws_secret_access_key }}"
@Sudo在强制执行MFA策略的意义上是正确的,但损坏的boto2插件是造成痛苦的主要原因,因为即使在输入MFA详细信息后,CLI仍然不适合我(没有尝试修复它,因为我的最终目标是通过ansible切换角色)
我从aws文档中获得的python代码证明了权限不是问题所在,但一些插件被破坏,导致了这一发现。()