服务
关于
CloudProse博客
安全和IAM

Awsume 4发布

最方便的假定角色助手的更新:2020年4月更新
迈克尔·巴尼(Michael Barney)Trek10
迈克尔·巴尼 | 2020年4月9日

有关详细的文档和用法,请访问以下网站的官方awsume文档: awsu.me.


更新(2020年4月)

“ Trek10的帮助提供了将凭证导出到AWS凭证配置文件的能力,使我的生活变得更加轻松。” -- 瑞安·柯蒂斯(Ryan Curtis),SwanLeap

我们一直在努力根据客户的反馈和需求推出一些新功能:

  • 支持从Python脚本调用awsume。如果只想获取一个awsume配置文件的boto3会话对象,只需执行以下代码:
    from awsume.awsumepy import awsume
    awsume('myprofile')
    
  • 支持s fuzzy-matching the given profile name. So if your profile is named dev-admin and you run awsume dev-admni, awsume should be able to match the given mistyped profile name to the intended profile
  • 除SAML2外,还支持SAML1
  • 支持SAML配置文件
  • Adds a --principal-arn command-line option to support selecting the SAML assertion principal arn
  • Adds chmod to awsume cache file operations
  • 支持s exporting awsume'd credentials to a profile in the ~/.aws/credentials file
  • 支持s role chaining (awsume-ing role profiles who's source_profile points to another role profile)
  • 将角色凭证到期时间导出到环境变量

Awsume是我们在Trek10上经常使用的工具。这是我们内部开发的工具, 开源的,并不断提高。尽管我们过去在博客上发表过很多文章,但最近我们发布了一个 新的主要版本,所以我想发布复习。我还想谈一谈为什么您应该将其合并到工作流中的原因。

最终,它是一个CLI,可帮助您管理本地环境的AWS凭证(角色,访问密钥,会话令牌等)。 Awsume使您可以更快地工作,同时可以更轻松地使用MFA保持安全。

背景

Here at Trek10 we have multiple client AWS accounts we have to work with. Following best practices, we utilize cross-account IAM roles for access into those accounts. We also use the aws:MultiFactorAuthPresent condition to enforce that Trek10 employees use MFA.

"Condition": {
  "Bool": {
    "aws:MultiFactorAuthPresent": "true"
  }
}

很好,但是管理您的网站仍然很痛苦 配置和凭证文件。对于要担任的每个角色(要担任的每个客户帐户),都需要确保已定义配置文件。尽管这很容易出错,但这并不是世界上最糟糕的事情,因为这是一项一劳永逸的交易。但是,最令人头疼的是使用这些配置文件。

You have to remember to pass --profile <profile_name> to each AWS CLI command, otherwise the command will be run against your default profile (if you have one defined). Then, assuming you enforce MFA as we do, you have to re-enter your MFA token whenever the role credentials expire (default 1 hour), since the AWS CLI uses the MFA token to get the role credentials.

是什么使秋葵与众不同?

In our case, awsume will use the MFA token call get-session-token on the role's source_profile (the user you'll be calling assume-role with), which returns credentials that are valid for 12 hours.

Awsume will then cache those credentials for as long as they're valid. When you want to assume a role using that source_profile, awsume will use those cached credentials, only requiring you to use your MFA code once every 12 hours. Even better, awsume will export those credentials to your environment as environment variables, so you don't even need to remember to pass --profile <profile_name> with every command.

如果您只需要使用当前凭据一次扮演一个角色,并且不想弄乱配置配置和凭据文件,可以快速进行以下操作:

awsume --role-arn <account_id>:<role_name> # 这里 we're using short syntax, but you could use the entire role arn

这对于调试lambda角色权限之类的东西非常理想。如果您在该角色上配置信任策略以也信任帐户本身(而不仅仅是lambda服务),则可以承担lambda角色并在本地调试权限。

插件?

Awsume也是可扩展的,因此您可以制作自己的插件以在各个步骤挂接到awsume(请参阅 插件开发文档 更多细节)。这就是我们开发 awsume控制台插件,这使您可以使用假定角色凭据在默认浏览器中打开控制台。

如果您通过SAML进行身份验证,甚至可以开发自己的插件来提供SAML断言,以便awsume可以为您处理其余的事情。

我在哪里可以买到秋葵?

Awsume is available through pip. Just follow the quickstart guide 这里 而且您会很好。

如果您遇到awsume的任何问题, 打开一个问题。跟着我们 @ Trek10Inc 获得更出色的无服务器且以AWS为重点的内容。

作者
迈克尔·巴尼(Michael Barney)Trek10
迈克尔·巴尼

DevOps工程师

Michael的职业生涯始于无服务器世界,他刚从大学毕业就加入了Trek10团队-真正的无服务器本地人。