amazon-web-services - boto3 s3角色arn
问题描述
我不能使用 boto3 以编程方式提供 100% 的角色 arn 连接到 S3。
session = boto3.Session(role_arn="arn:aws:iam::****:role/*****",
RoleSessionName="****")
s3_client = boto3.client('s3',
aws_access_key_id="****",
aws_secret_access_key="****")
for b in s3_client.list_buckets()["Buckets"]:
print (b["Name"])
我无法向 Session 和客户端提供 arn 信息,并且基于 s3 的客户端上没有假设角色()。
我找到了一种使用 sts 临时令牌的方法,但我不喜欢那样。
sess = boto3.Session(aws_access_key_id="*****",
aws_secret_access_key="*****")
sts_connection = sess.client('sts')
assume_role_object = sts_connection.assume_role(RoleArn="arn:aws:iam::***:role/******",
RoleSessionName="**",
DurationSeconds=3600)
session = boto3.Session(
aws_access_key_id=assume_role_object['Credentials']['AccessKeyId'],
aws_secret_access_key=assume_role_object['Credentials']['SecretAccessKey'],
aws_session_token=assume_role_object['Credentials']['SessionToken'])
s3_client = session.client('s3')
for b in s3_client.list_buckets()["Buckets"]:
print (b["Name"])
你有什么主意吗 ?
解决方案
您需要了解如何创建临时凭证。
首先,您需要使用您当前的访问密钥创建一个客户端。然后,这些凭证将用于验证您是否有权调用 assume_role 并有权从 IAM 角色颁发凭证。
如果有人可以按照您的方式进行操作,那么假设角色将存在巨大的安全漏洞。必须首先验证您的权利,然后才能颁发临时凭证。
推荐阅读
- node.js - 无法解析 api 服务器容器的 /usr/src/app 中的 sequelize 包?
- python - 如何根据Django中的属性值将模型实例复制到另一个模型
- swagger-2.0 - 从 OpenAPI 3 中的模式部分检索多个对象
- python - 定义地图
> 返回类型在每次运行时给出随机值 - c# - 如何在 LiveCharts 中使用 ObservableValue 的 AddRange?
- android - 使用 loadDataWithBaseURL 禁用 webview 中的链接
- javascript - 通过获取对象的总和来减少 SQL 查询结果
- javascript - Boostrap 验证器 1000Hz v0_11_9 更多自定义验证
- reactjs - 作为道具传递的函数不是函数
- python - 是否可以在不修复的情况下为 Widget 设置宽度?