AWS 角色切换工具 assume-role 使用指南
1. 项目介绍
assume-role 是一个开源命令行工具,它可以帮助用户在终端中轻松地请求并设置临时的 AWS 凭据,用于假设 IAM 角色权限。该工具支持跨 AWS 账户的角色切换,适用于需要在不同 AWS 账户间切换权限的场合。
2. 项目快速启动
安装
-
OS X 用户:推荐使用 Homebrew 安装
brew install remind101/formulae/assume-role -
Go 环境用户:确保你的环境是 Go 1.6 或 1.7,然后执行以下命令
go get -u github.com/remind101/assume-role -
Windows 用户:使用 PowerShell 和 scoop.sh
scoop bucket add extras scoop install assume-role
配置
在 ~/.aws/config 文件中为每个你想要假设的角色配置一个档案。
例如:
[profile usermgt]
region = us-east-1
[profile stage]
# Stage AWS Account.
region = us-east-1
role_arn = arn:aws:iam::1234:role/SuperUser
source_profile = usermgt
[profile prod]
# Production AWS Account.
region = us-east-1
role_arn = arn:aws:iam::9012:role/SuperUser
mfa_serial = arn:aws:iam::5678:mfa/eric-holmes
source_profile = usermgt
在 ~/.aws/credentials 文件中配置 usermgt 的访问密钥。
例如:
[usermgt]
aws_access_key_id = AKIMYFAKEEXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/MYxFAKEYEXAMPLEKEY
使用
执行以下命令以使用特定 IAM 角色执行操作:
assume-role stage aws iam get-user
如果角色需要 MFA,将提示你输入 MFA 代码。
如果没有提供命令,assume-role 将输出临时的安全凭证,如下所示:
$ assume-role prod
export AWS_ACCESS_KEY_ID="ASIAI....UOCA"
export AWS_SECRET_ACCESS_KEY="DuH...G1d"
export AWS_SESSION_TOKEN="AQ...1BQ=="
export AWS_SECURITY_TOKEN="AQ...1BQ=="
export ASSUMED_ROLE="prod"
使用以下命令配置你的 shell:
eval $(assume-role prod)
在 Windows PowerShell 中:
$env:AWS_ACCESS_KEY_ID="ASIAI....UOCA"
$env:AWS_SECRET_ACCESS_KEY="DuH...G1d"
$env:AWS_SESSION_TOKEN="AQ...1BQ=="
$env:AWS_SECURITY_TOKEN="AQ...1BQ=="
$env:ASSUMED_ROLE="prod"
# Run this to configure your shell:
assume-role.exe prod | Invoke-Expression
如果经常使用 eval $(assume-role),可以创建一个别名:
对于 zsh 用户:
alias assume-role='function(){eval $(command assume-role $@);}'
对于 bash 用户:
function assume-role {
eval $(command assume-role "$@")
}
3. 应用案例和最佳实践
使用 assume-role 的一个典型场景是开发人员在开发环境中需要模拟生产环境的权限,而又不想直接使用生产环境的密钥。通过配置 IAM 角色和策略,可以安全地在开发环境中模拟生产环境的操作。
最佳实践包括:
- 为每个环境创建不同的 IAM 用户和角色。
- 使用
source_profile来共享基础凭据,而通过角色来控制权限。 - 在需要多因素认证的情况下,配置
mfa_serial。
4. 典型生态项目
目前,assume-role 作为一个命令行工具,可以与 AWS CLI 和其他各种 AWS 工具配合使用,如 AWS SDKs、Terraform 等。在开源生态中,还有很多其他的项目可以帮助管理和使用 AWS 资源,例如:
这些工具与 assume-role 结合使用,可以极大地提高在 AWS 上操作的便利性和安全性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



