Amazon web services 切换角色可以从控制台(AWS GUI)工作,但不能从Ansible脚本工作

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}}"

问题:我需要通过脚本切换角色。sts:AssumeRole权限足够吗

阐述: 我通过控制台登录到启用MFA的AWS帐户。默认情况下,我登录的这个角色没有执行任何操作的权限。 为了旋转EC2,我需要切换角色。 我转到“切换角色”,并使用帐户和角色,切换到具有创建EC2实例权限的其他角色。 我想通过Ansible脚本实现同样的功能

我的yml脚本的一个片段如下所示:

    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代码证明了权限不是问题所在,但一些插件被破坏,导致了这一发现。()