AWS STS担任角色:获取会话令牌

问题描述

我试图在邮递员中获取给定IAM的会话令牌,但无法接收令牌。

如果我使用boto3.client('sts'),则可以获取令牌。

用例:我试图从运行ServiceNow中服务器实例的EC2实例调用VPC休息端点。由于我们在EC2实例上运行了ServiceNow中服务器代理,因此我想使用附加到EC2上的IAM角色来验证部署在同一AWS账户中的其他VPC终端节点。

我在IAM角色上附加了权限策略,以允许使用角色角色策略。如果还有其他方法,请提出建议。

此处HTML邮递员中的HTML响应。邮递员重定向到IAM文档

enter image description here

client = boto3.client('sts')
response = client.assume_role(
    RoleArn='arn:aws:iam::**************:role/ServiceNow-midserver-Role',RoleSessionName='Session1',DurationSeconds=3600
    )
print(response)

邮递员请求正文或端点有任何错误。 没有邮递员身份验证。

enter image description here

解决方法

您需要使用IAM用户或IAM角色的凭据来调用AssumeRole。 boto3必须从其要查找的标准位置获取凭据(例如〜/ .aws / config)[参考:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html]。也许您可以尝试在Postman的“授权”选项卡中提供AWS凭证,将类型选择为AWS Signature,然后调用承担角色。

,

要从Postman(或curl等)调用AssumeRole(而不是使用受支持的AWS开发工具包),请遵循AssumeRole API documentation。您还需要使用AWS凭证进行身份验证。

具体来说,该请求是HTTP GET,并且参数作为查询字符串传递,例如:

GET https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=stackoverflow-64706420
&RoleArn=arn:aws:iam::123456781234:role/myrole
&DurationSeconds=3600

这就是邮递员的样子:

enter image description here

您将需要添加AWS凭证,以便正确签名您的API请求,例如:

enter image description here

点击“发送”,响应将如下所示:

<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <AssumeRoleResult>
    <AssumedRoleUser>
      <Arn>arn:aws:sts::123456781234:assumed-role/123456781234/stackoverflow-64706420</Arn>
      <AssumedRoleId>ARO123EXAMPLE123:stackoverflow-64706420</AssumedRoleId>
    </AssumedRoleUser>
    <Credentials>
      <AccessKeyId>ASIAIOSFODNN7EXAMPLE</AccessKeyId>
      <SecretAccessKey>wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY</SecretAccessKey>
      <SessionToken>
       AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
       LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
       QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
       9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
       +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
      </SessionToken>
      <Expiration>2020-12-09T13:34:41Z</Expiration>
    </Credentials>
    <PackedPolicySize>6</PackedPolicySize>
  </AssumeRoleResult>
  <ResponseMetadata>
    <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
  </ResponseMetadata>
</AssumeRoleResponse>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...