
Un vault per archiviare e accedere in modo sicuro alle credenziali AWS negli ambienti di sviluppo
[!WARNING] Questo progetto è stato abbandonato e non riceverà più aggiornamenti. Se desideri continuare a ricevere aggiornamenti o contribuire, sentiti libero di dare un'occhiata al fork attivo su: https://github.com/ByteNess/aws-vault
AWS Vault è uno strumento per archiviare e accedere in modo sicuro alle credenziali AWS in un ambiente di sviluppo.
AWS Vault archivia le credenziali IAM nel keystore sicuro del tuo sistema operativo e genera da queste credenziali temporanee da esporre alla tua shell e alle tue applicazioni. È progettato per essere complementare agli strumenti AWS CLI ed è consapevole dei tuoi profili e della configurazione in ~/.aws/config.
Consulta il post di annuncio sul blog per maggiori dettagli.
Puoi installare 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 (abilita prima 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>Configurazione, utilizzo, suggerimenti e trucchi sono disponibili nel file USAGE.md.
I backend di archiviazione supportati sono:
Usa il flag --backend o la variabile d'ambiente AWS_VAULT_BACKEND per specificare.
# 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 utilizza il servizio STS di Amazon per generare credenziali temporanee tramite le chiamate API GetSessionToken o AssumeRole. Queste scadono in un breve periodo di tempo, quindi il rischio di esporre le credenziali è ridotto.
AWS Vault espone quindi le credenziali temporanee al sotto-processo in uno dei due modi seguenti
$ 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=%%%
L'impostazione predefinita è utilizzare le variabili d'ambiente, ma puoi optare per il server di metadati dell'istanza locale con il flag --server sul comando exec.
La best practice è creare Ruoli per delegare i permessi. Per sicurezza, dovresti anche richiedere che gli utenti forniscano una chiave monouso generata da un dispositivo di autenticazione a più fattori (MFA).
Per prima cosa dovrai creare gli utenti e i ruoli in IAM, oltre a configurare un dispositivo MFA. Puoi quindi configurare i ruoli IAM per imporre l'MFA.
Ecco un esempio di configurazione che utilizza ruoli e 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
Ecco cosa puoi aspettarti da aws-vault