[英]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.