首页 > 解决方案 > 如何使用 boto3 轮换我的 AWS IAM 用户访问权限和密钥?

问题描述

我们正在使用 Python AWS SDK ( boto3) 连接到 S3。

我们有一个静态访问和秘密令牌,但是我的网络并不安全。

我不能使用另一个网络发送请求,所以有没有办法在每次请求后更改访问密钥和密钥?

我可以将新令牌保存在安全数据库中以发送另一个请求,但重要的是使用令牌后它会过期。

我在找什么:

send: curl https://aws.endpoint/refresh/token
response: {“new_access_token”:”blablabla”, “new_secret_token”:”blablablabla”}

标签: pythonamazon-web-servicesboto3aws-access-policy

解决方案


如果必须iam.create_access_key,您可以使用、iam.get_access_key_last_used和API 操作的组合来轮换您的密钥iam.update_access_keyiam.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 文档)。

在这两种情况下,凭证都包含一个安全令牌,用于指示凭证何时到期并且它们是短暂的,以帮助降低您在凭证意外暴露时的风险。

阅读:管理 AWS 访问密钥的最佳实践


推荐阅读