gpt4 book ai didi

python - Boto3 STS AssumeRole 与 MFA 工作示例

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:44 27 4
gpt4 key购买 nike

我在这里做错了什么?如果我使用,我可以通过 aws cli 和 boto 担任角色:

boto3.setup_default_session(profile_name="ROLE_TO_ASSUME")

我正在尝试做的事情:我有许多 AWS 账户,我的脚本需要在其中运行。每次我需要在不同的配置文件/角色上运行脚本时,我都厌倦了输入我的 mfa。

我收到以下代码的错误消息:

 User: arn:aws:iam::<management account>:user/Ops/<my user> is not authorized to perform: sts:AssumeRole on resource

我们的 AWS 是这样设置的:我是一个用户,是管理帐户上的一个组的一部分。该组与每个帐户上的 ROLE_TO_ASSUME 角色建立了信任关系。

这是我的 python :

import boto3

def main():
boto3.setup_default_session(profile_name="default")
ec2 = boto3.client('ec2')
get_assumerole_credentials('arn:aws:iam::<REPLACE WITH ACCOUNTID>:role/ROLE_TO_ASSUME')

def get_assumerole_credentials(arn):
sts_client = boto3.client('sts')
# Use client object and pass the role ARN
assumedRoleObject = sts_client.assume_role(RoleArn=arn,

RoleSessionName="AssumeRoleCredstashSession1")
credentials = assumedRoleObject['Credentials']
return dict(aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'])

if __name__ == "__main__":
main()

这是我的 ~/.aws/config

[profile default]
region = us-west-2
output = json
aws_access_key_id=<censored>
aws_secret_access_key=<censored>

[profile ROLE_TO_ASSUME]
region = us-west-2
source_profile = default
role_arn = arn:aws:iam::<accountid>:role/ROLE_TO_ASSUME
mfa_serial = arn:aws:iam::<accountid>:mfa/<my_user>

根据第一个回复编辑:
需要明确的是,如果我在以下示例中指定“配置文件”参数,我就可以担任角色:

boto3.setup_default_session(profile_name='ROLE_TO_ASSUME')
ec2 = boto3.resource('ec2', region_name='us-west-1')

但我需要承担一个角色,并在脚本中使用 boto3 的 STS 获取临时凭证。
我注意到当我使用 boto3 STS assume role 连接方法时没有 MFA 提示。

最佳答案

我假设以下内容适合您

boto3.setup_default_session(profile_name='ROLE_TO_ASSUME')
ec2 = boto3.resource('ec2', region_name='us-west-1')

因此,要获取 STS 临时凭证,请执行以下操作

boto3.setup_default_session(profile_name='ROLE_TO_ASSUME')
session = boto3.session.Session()
temp_credentials = session.get_credentials().get_frozen_credentials()

注意:如果第一个假设工作正常,这与 MFA 无关。

如果您正在寻找 assume role with MFA,请参阅 assume role with MFA http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role

关于python - Boto3 STS AssumeRole 与 MFA 工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com