web-dev-qa-db-fra.com

Analyse des secrets à partir du gestionnaire de secrets AWS à l'aide d'AWS cli

Je récupère des secrets que j'ai stockés dans AWS secrets manager avec l'AWS cli comme ceci:

aws secretsmanager get-secret-value --secret-id secrets

Qui revient

arn:aws:secretsmanager<ID>:secret:my_secrets <number> my_secrets {"API_KEY":"ABCDEFGHI"}       <UUID string>
VERSIONSTAGES   AWSCURRENT

Est-ce que quelqu'un sait comment j'obtiens seulement le secret ("API_KEY": "ABCDEFGHI")? J'ai besoin de déplacer ces secrets dans mes variables d'environnement register-task-definition. La meilleure façon serait de les stocker dans un fichier et de les supprimer après nous ou de les stocker dans une variable. Il fonctionne sur une machine Linux.

11
Moddaman

Utilisez le --query option de la CLI pour extraire uniquement le secret.

aws secretsmanager get-secret-value --secret-id secrets --query SecretString
12
helloV

aws secretsmanager get-secret-value --secret-id secrets| jq --raw-output '.SecretString' | jq -r .API_KEY

en utilisant jq, vous pouvez imprimer.

9
Vijay Kumar

Petit ajout à la réponse helloV. Vous pouvez ajouter le paramètre de sortie text pour supprimer les guillemets.

aws secretsmanager get-secret-value --secret-id secrets --query SecretString --output text
3
kadir

Lorsque vous avez plusieurs secrets et que vous obtenez un retour json, vous pouvez utiliser obtenir la valeur exacte du mot de passe en utilisant

aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .key_for_password
1
Aseem Jain

J'ai donc eu un peu de mal à extraire ce dont j'avais besoin, la valeur de mes deux variables que j'ai stockées dans SecretsManager. Voici donc ce qui a fonctionné pour moi.

REMARQUE: il s'agit d'un exemple tiré du document AWS SecretsManager.

J'ai couru ça

aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS

La réponse de cette requête est:

{
  "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
  "Name": "MyTestDatabaseSecret",
  "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE",
  "SecretString": "{\n  \"username\":\"david\",\n  \"password\":\"BnQw&XDWgaEeT9XGTT29\"\n}\n",
  "VersionStages": [
    "AWSPREVIOUS"
  ],
  "CreatedDate": 1523477145.713
}

Maintenant, je veux obtenir la valeur du nom d'utilisateur ou du mot de passe pour être précis

aws secretsmanager get-secret-value --secret-id MyTestDatabaseSecret --version-stage AWSPREVIOUS | jq --raw-output .SecretString | jq -r ."password"

Production

BnQw&XDWgaEeT9XGTT29
0
Yash Pal Singh