AWS 角色切换工具 assume-role 使用指南

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 资源,例如:

  • Terraform:用于构建、更改和管理基础设施的代码工具。
  • AWS CLI:AWS 的官方命令行界面,用于管理 AWS 服务。
  • Pulumi:一种用于编程构建和部署云资源的新方法。

这些工具与 assume-role 结合使用,可以极大地提高在 AWS 上操作的便利性和安全性。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值