python 做软件授权代理_使用AWS跨账户授权的程序访问(Python)

本文介绍了如何使用Python的boto3库,通过STS服务获取跨账户的临时AK/SK,以实现程序访问外部用户资源。内容包括设置角色、会话名以及定期刷新授权文件,确保12小时有效期的连续访问。
摘要由CSDN通过智能技术生成

上一篇文章已经说过可以创建跨用户授权,但是我们获取到的AK/SK是针对当前用户的,如果要通过程序访问外部用户,就必须使用STS请求临时AK/SK.

获取到的临时AK/SK有效期是12小时(最长,可调节),所以如果想一直用,就必须保留自己的AK/SK,定期刷新短期AK/SK.

之前说到生产账号的事情,这个依然是分开发账号和生产账号.

import boto3

client = boto3.client('sts',region_name='us-east-1',aws_access_key_id=[开发账号AK],aws_secret_access_key=[开发账号SK])

response = client.assume_role(

RoleArn = 'arn:aws:iam::[生产账号ID]:role/[生产账号交叉角色名]',

RoleSessionName = '[会话名]',

DurationSeconds = 43200

)['Credentials']

s3client = boto3.client('s3',region_name='us-east-1',aws_access_key_id=response['AccessKeyId'],aws_secret_access_key=response['SecretAccessKey'],aws_session_token=response['SessionToken'])

response = s3client.list_buckets()

print(response['Buckets'])

然后就可以按照正常Client操作了,上述操作我的返回是这样的,列出了我的Bucket.

[{'Name': '2e728ce88125', 'CreationDate': datetime.datetime(2020, 1, 8, 5, 45, 41, tzinfo=tzutc())}]

当然也可以按照Cron方式定期更新授权文件啦~

credentials = '''

[default]

aws_access_key_id=%s

aws_secret_access_key=%s

aws_session_token=%s

''' % ( response['AccessKeyId'] , response['SecretAccessKey'] , response['SessionToken'] )

fo = open("/root/.aws/credentials", "w")

fo.write(credentials)

fo.close()

这样就可以实现,让AWS Education Starter Account拥有一个看起来是长授权(其实是每12小时自动刷新)的Token了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值