
Una bóveda para almacenar y acceder de forma segura a credenciales de AWS en entornos de desarrollo
[!WARNING] Este proyecto ha sido abandonado y ya no recibe más actualizaciones. Si deseas seguir recibiendo actualizaciones o contribuir, no dudes en consultar el fork activo en: https://github.com/ByteNess/aws-vault
AWS Vault es una herramienta para almacenar y acceder de forma segura a las credenciales de AWS en un entorno de desarrollo.
AWS Vault almacena las credenciales de IAM en el almacén de claves seguro de tu sistema operativo y luego genera credenciales temporales a partir de ellas para exponerlas a tu shell y aplicaciones. Está diseñado para ser complementario a las herramientas de AWS CLI, y es consciente de tus perfiles y configuración en ~/.aws/config.
Consulta la publicación del blog de anuncio para más detalles.
Puedes instalar AWS Vault:
brew install aws-vaultport install aws-vaultchoco install aws-vaultscoop install aws-vaultbrew install aws-vaultpacman -S aws-vaultemerge --ask app-admin/aws-vault (habilita Guru primero)pkg install aws-vaultzypper install aws-vaultnix-env -i aws-vaultasdf plugin-add aws-vault https://github.com/karancode/asdf-aws-vault.git && asdf install aws-vault <version>La configuración, el uso, los consejos y trucos están disponibles en el archivo USAGE.md.
Los backends de almacenamiento compatibles son:
Usa el flag --backend o la variable de entorno AWS_VAULT_BACKEND para especificarlo.
# Store AWS credentials for the "jonsmith" profile
$ aws-vault add jonsmith
Enter Access Key Id: ABDCDEFDASDASF
Enter Secret Key: %%%
# Execute a command (using temporary credentials)
$ aws-vault exec jonsmith -- aws s3 ls
bucket_1
bucket_2
# open a browser window and login to the AWS Console
$ aws-vault login jonsmith
# List credentials
$ aws-vault list
Profile Credentials Sessions
======= =========== ========
jonsmith jonsmith -
# Start a subshell with temporary credentials
$ aws-vault exec jonsmith
Starting subshell /bin/zsh, use `exit` to exit the subshell
$ aws s3 ls
bucket_1
bucket_2
aws-vault utiliza el servicio STS de Amazon para generar credenciales temporales mediante las llamadas a la API GetSessionToken o AssumeRole. Estas expiran en un corto período de tiempo, por lo que se reduce el riesgo de filtrar credenciales.
AWS Vault luego expone las credenciales temporales al subproceso de una de dos maneras
$ aws-vault exec jonsmith -- env | grep AWS
AWS_VAULT=jonsmith
AWS_DEFAULT_REGION=us-east-1
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=%%%
AWS_SECRET_ACCESS_KEY=%%%
AWS_SESSION_TOKEN=%%%
AWS_CREDENTIAL_EXPIRATION=2020-04-16T11:16:27Z
$ aws-vault exec --server jonsmith -- env | grep AWS
AWS_VAULT=jonsmith
AWS_DEFAULT_REGION=us-east-1
AWS_REGION=us-east-1
AWS_CONTAINER_CREDENTIALS_FULL_URI=%%%
AWS_CONTAINER_AUTHORIZATION_TOKEN=%%%
El valor predeterminado es usar variables de entorno, pero puedes optar por el servidor de metadatos de instancia local con el flag --server en el comando exec.
La mejor práctica es crear Roles para delegar permisos. Por seguridad, también deberías exigir que los usuarios proporcionen una clave de un solo uso generada desde un dispositivo de autenticación multifactor (MFA).
Primero necesitarás crear los usuarios y roles en IAM, así como configurar un dispositivo MFA. Luego puedes configurar roles de IAM para exigir MFA.
Aquí tienes un ejemplo de configuración usando roles y MFA:
[default]
region = us-east-1
[profile jonsmith]
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile foo-readonly]
source_profile = jonsmith
role_arn = arn:aws:iam::22222222222:role/ReadOnly
[profile foo-admin]
source_profile = jonsmith
role_arn = arn:aws:iam::22222222222:role/Administrator
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile bar-role1]
source_profile = jonsmith
role_arn = arn:aws:iam::333333333333:role/Role1
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
[profile bar-role2]
source_profile = bar-role1
role_arn = arn:aws:iam::333333333333:role/Role2
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
Esto es lo que puedes esperar de aws-vault