繁体   English   中英

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

[英]AWS STS Assume Role: Get session token

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

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

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

我将权限策略附加到 IAM 角色以允许承担角色策略。 如果有其他方法,请提出建议。

这里是邮递员中的 HTML HTML 响应。 邮递员重定向到 IAM 文档

在此处输入图片说明

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

邮递员请求正文或端点有任何问题。 邮递员的身份验证是无。

在此处输入图片说明

要从 Postman(或 curl 等)调用 AssumeRole,而不是使用受支持的 AWS 开发工具包,您应该遵循AssumeRole API 文档 您还需要使用 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

这是 Postman 中的样子:

在此处输入图片说明

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

在此处输入图片说明

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

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

您需要使用 IAM 用户或 IAM 角色的凭证来调用 AssumeRole。 boto3 必须从它寻找的标准位置获取凭据(如 ~/.aws/config)[ref:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html]。 也许您可以尝试在 Postman 的 Authorization 选项卡中提供 AWS 凭证,选择类型作为 AWS Signature,然后调用assumeRole。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM