python - 如何使用 boto3 轮换我的 AWS IAM 用户访问权限和密钥?
问题描述
我们正在使用 Python AWS SDK ( boto3
) 连接到 S3。
我们有一个静态访问和秘密令牌,但是我的网络并不安全。
我不能使用另一个网络发送请求,所以有没有办法在每次请求后更改访问密钥和密钥?
我可以将新令牌保存在安全数据库中以发送另一个请求,但重要的是使用令牌后它会过期。
我在找什么:
send: curl https://aws.endpoint/refresh/token
response: {“new_access_token”:”blablabla”, “new_secret_token”:”blablablabla”}
解决方案
如果必须iam.create_access_key
,您可以使用、iam.get_access_key_last_used
和API 操作的组合来轮换您的密钥iam.update_access_key
。iam.delete_access_key
请记住,每个用户最多只能拥有 2 个访问密钥,因此您必须使用 创建一个新的create_access_key
,禁用/使当前(旧)一个(get_access_key_last_used
& update_access_key
)无效,将访问密钥更改为下一个应用程序代码,然后最后删除当前的delete_access_key
.
但是,AWS 访问密钥是 IAM 用户或 AWS 账户根用户的长期凭证;您可以定期轮换它们,但在这种情况下我不会首先这样做。
您的最佳解决方案将取决于您使用的服务。
例如,如果使用 EC2 实例调用 S3,请不要使用/嵌入/传递/读取访问密钥,而是使用短暂的临时安全凭证,该凭证将通过启动具有 S3 访问角色的 EC2 实例来提供。
如果您在本地使用此脚本,则可以使用AWS Security Token Service (AWS STS),它使您能够为 AWS IAM 用户/联合用户(单点登录等)请求临时的、有限权限的凭证。您会寻找API 操作(此处GetSessionToken
为Boto3 SDK 文档)。
在这两种情况下,凭证都包含一个安全令牌,用于指示凭证何时到期并且它们是短暂的,以帮助降低您在凭证意外暴露时的风险。
推荐阅读
- excel - 计算带有空格的excel列中的唯一值
- python - pandas.DataFrame.cumsum 函数的问题
- javascript - 单击表格单元格目标子元素
- sql - SQL Server - 对一列进行分组并根据该列从另一列中选择Top 1值,该列不包含在T-Sql中
- java - 迭代器Java如何在XML文件中迭代?
- python - Scikit-Learn (TypeError: ufunc 'subtract' 不包含签名匹配类型 dtype('
我为已下载为 csv 的 Iris 数据集创建了一个小的 MLPRegressor 代码。虽然我可以将 load_iris() 模块用于我的代码,但我的大学希望我用老式的方式来做。
from sklearn.neural_n
- sql - SQL Query 为每组以 5 个为一组进行分块数据
- javascript - 为什么 promise.then() 的行为是异步的?
- javascript - 反应改变网站网址的滑动侧边栏
- mysql - NameError:启动rails服务器时未初始化的常量ActiveRecord::ConnectionAdapters::MysqlAdapter