在多个aws帐户之间切换并更新api访问密钥
aws-tools的Python项目详细描述
此软件包为aws平台提供工具,例如:
- 在多个帐户之间切换
- 更新API访问密钥
还有其他人。
aws工具出现的主要原因是,以安全和简单的方式使用带有不同访问密钥的awscli。
工作原理
在AWS帐户之间切换:
$ awsenv test <test> $ aws s3 ls ...list of S3 objects on TEST environment... ### Explanation: ### <test> $ env | grep AWS ### AWS_SECRET_ACCESS_KEY=w0bM0rucARITPOUpcyAaX3iI9lGjJo7g8UUCUxIv ### AWS_ACCESS_KEY_ID=AKIAJPVK7VGH6CBZT5EQ ### AWS_ENV=test <test> $ awsenv prod <prod> $ aws s3 ls ...list of S3 objects on PROD environment... ### Explanation: ### <prod> $ env | grep AWS ### AWS_SECRET_ACCESS_KEY=P8crbSIvQ/Au0jfnW8XER9eJKxpQdYqpRVz5QxKo ### AWS_ACCESS_KEY_ID=AKIAJ4F26CMBPI1HF7MQ ### AWS_ENV=prod
更新AWS API访问密钥:
$ awsenv prod ### Explanation: ### <prod> $ env | grep AWS ### AWS_SECRET_ACCESS_KEY=P8crbSIvQ/Au0jfnW8XER9eJKxpQdYqpRVz5QxKo ### AWS_ACCESS_KEY_ID=AKIAJ4F26CMBPI1HF7MQ ### AWS_ENV=prod <prod> $ awsroll prod Rolled key for env prod: AccessKeyId=****************ZKQFQ; CreateDate=2018-11-14 13:10:04+00:00 <prod> $ awsenv prod ### Explanation: ### <prod> $ env | grep AWS ### AWS_SECRET_ACCESS_KEY=napb9J2RKzsSiTIjLRavN09qIfFzrMo7846zr2ou ### AWS_ACCESS_KEY_ID=AKIAJTGB6EFV7F4ZKQFQ ### AWS_ENV=prod
开始
Prerequisites:
aws-tools requires gpg (version >= 2.X) to decrypt/encrypt your AWS credentials.
安装必要的软件包,并生成新的密钥对:
$ sudo apt-get install gpg gpg-agent $ gpg --gen-key
This document covers only gpg commands required to run aws-tools! If you need to use other gpg parameters, go to gpg documentation.
如果尚未配置区域,请使用awscli配置:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: eu-west-1 Default output format [None]:
Do not provide any keys here!
安装
只需运行:
$ pip install --user aws-tools
配置
美国焊接学会证书
在~/.aws目录中创建临时env.<environment>.conf文件 对于每个aws环境。
例如,如果您有3个aws环境:test、stage和prod,那么 应该是~/.aws目录中的3个配置文件:
env.test.conf env.stage.conf env.prod.conf
编辑每个文件:
[default]aws_access_key_id=<your_environment_specific_access_key_id>aws_secret_access_key=<your_environment_specific_secret_access_key>
用gpg加密每个文件:
$ gpg --encrypt --armor --output env.<environment>.conf.asc -r <your-gpg-user-id-name> env.<environment>.conf
并删除临时的env.*.conf文件!
Run ^{tt5}$ to find out what is your ^{tt6}$
外壳
aws工具附带了方便的命令完成和bash提示功能。 只需添加到您的~/.bashrc:
source $HOME/.local/bin/aws_tools_completion.bash 2>/dev/nullexport PS1="\$(__awsenv_ps1 2>/dev/null)${PS1}"
SMTP凭据(可选)
如果要将更新的aws访问密钥发送到 电子邮件。
在~/.aws目录中创建临时smtp.cfg文件。
编辑SMTP设置:
smtplogin=<your_full_smtp_login>smtppass=<your_password>smtphost=<smtp_host>smtpport=<smtp_port>
用gpg加密配置文件:
$ gpg --encrypt --armor --output smtp.cfg.asc -r <your-gpg-user-id-name> smtp.cfg
并删除临时的smtp.cfg文件!
用法
示例
自动完成:
$ awsenv<TAB><TAB> prod stage test
使用测试访问键:
$ awsenv test
为当前外壳设置aws访问密钥:
$ awsenv unset
旋转产品访问键:
$ awsroll prod
旋转所有环境的访问键:
$ awsroll
使用gpg代理旋转所有环境的访问密钥,并将它们发送到电子邮件:
$ aws-roll-keys.py -a -e all -s <email@domain.org>
旋转测试环境的访问键并将信息发送到电子邮件:
$ aws-roll-keys.py -e test -i <email@domain.org>