
Un coffre-fort pour stocker et accéder en toute sécurité aux identifiants AWS dans les environnements de développement
[!WARNING] Ce projet a été abandonné et ne reçoit plus de mises à jour. Si vous souhaitez continuer à recevoir des mises à jour ou contribuer, n'hésitez pas à consulter le fork actif à l'adresse : https://github.com/ByteNess/aws-vault
AWS Vault est un outil permettant de stocker et d'accéder de manière sécurisée aux identifiants AWS dans un environnement de développement.
AWS Vault stocke les identifiants IAM dans le magasin de clés sécurisé de votre système d'exploitation, puis génère des identifiants temporaires à partir de ceux-ci pour les exposer à votre shell et à vos applications. Il est conçu pour être complémentaire aux outils AWS CLI et prend en compte vos profils et votre configuration dans ~/.aws/config.
Consultez le billet de blog d'annonce pour plus de détails.
Vous pouvez installer 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 (activez d'abord Guru)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 configuration, l'utilisation, les astuces et les conseils sont disponibles dans le fichier USAGE.md.
Les backends de stockage pris en charge sont :
Utilisez l'option --backend ou la variable d'environnement AWS_VAULT_BACKEND pour le spécifier.
# 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 utilise le service STS d'Amazon pour générer des identifiants temporaires via les appels API GetSessionToken ou AssumeRole. Ceux-ci expirent après une courte période, ce qui réduit le risque de fuite d'identifiants.
AWS Vault expose ensuite les identifiants temporaires au sous-processus de l'une des deux manières suivantes
$ 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=%%%
Par défaut, les variables d'environnement sont utilisées, mais vous pouvez opter pour le serveur de métadonnées d'instance local avec l'option --server sur la commande exec.
La bonne pratique consiste à créer des rôles pour déléguer les permissions. Pour des raisons de sécurité, vous devriez également exiger que les utilisateurs fournissent une clé à usage unique générée à partir d'un dispositif d'authentification multifacteur (MFA).
Vous devrez d'abord créer les utilisateurs et les rôles dans IAM, ainsi que configurer un dispositif MFA. Vous pouvez ensuite configurer les rôles IAM pour imposer le MFA.
Voici un exemple de configuration utilisant des rôles et le 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
Voici ce que vous pouvez attendre d'aws-vault