AWS从EC2以及具有MFA,boto和缓存的开发环境中扮演角色

时间:2020-07-19 15:56:08

标签: amazon-web-services boto3 botocore assume-role

假设我有1个EC2实例,可以访问AWS服务,如S3,DynamoDB,Cognito等。在此实例上,我运行Django / Python应用。

在开发过程中,我正在develop环境中(本地)访问这些服务,到目前为止,我有一个具有访问密钥的“后端用户”,并且已在EC2和我的本地~/.aws文件中对其进行了配置在default个人资料中。由于保留访问密钥是一种不好的做法,因此我希望EC2和本地ENV担任具有所有必需权限的角色。

我正在使用boto,而在boto中,well explained就是这样:

在搜索凭据时,Boto3将在多个位置查找。 Boto3查找凭据的机制是搜索可能的位置列表,并在找到凭据后立即停止

创建角色并将其附加到EC2实例很容易。我已经做到了,它可以正常工作,现在我可以从EC2中删除凭据,因为boto将承担OOTB的角色。

对于本地ENV,我看到了很多示例,这些示例显示了如何创建sts客户端(例如sts_client = boto3.client('sts'))然后使用临时凭据。

所以我的第一个问题,为什么需要它? When you do this, Boto3 will automatically make the corresponding AssumeRole calls to AWS STS on your behalf. It will handle in-memory caching as well as refreshing credentials as neededexplicitly stated

下一个问题与MFA有关。我将不再在EC2中拥有访问密钥,这很好,但是对于本地ENV,我需要向开发人员授予权限以承担角色并使用AWS服务。我看到的最安全的方法是使用MFA。这样,如果用户的访问密钥被盗,没有MFA,它们仍然是无用的。为了实现这一点,我看到我需要将用户的ARN添加到Trusted entities中,尽管它对我来说看起来太手工了,但这很好。

在使用MFA时,我看到每次启动本地服务器时都需要提供MFA代码,然后偶然发现this“功能”使用AWS CLI缓存文件夹并将临时凭证存储在缓存中。我尝试了一下,但效果很好,但我想知道为什么我没有看到其他人为此提供的很多例子?

很抱歉,这篇文章的篇幅太长了,我只是想表达得好,以为我可能错过了一些东西。

0 个答案:

没有答案