Utilisez AWS Secrets Manager les secrets dans les GitHub emplois - AWS Secrets Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisez AWS Secrets Manager les secrets dans les GitHub emplois

Pour utiliser un secret dans une GitHub tâche, vous pouvez utiliser une GitHub action pour récupérer des secrets AWS Secrets Manager et les ajouter en tant que variables d'environnement masquées dans votre GitHub flux de travail. Pour plus d'informations sur GitHub les actions, voir Comprendre GitHub les actions dans la GitHub documentation.

Lorsque vous ajoutez un secret à votre GitHub environnement, il est accessible à toutes les autres étapes de votre GitHub travail. Suivez les instructions de la section Renforcement de la sécurité pour les GitHub actions afin d'éviter que les secrets de votre environnement ne soient utilisés à mauvais escient.

Vous pouvez définir la chaîne complète de la valeur du secret comme valeur de variable d'environnement. Sinon, si la chaîne est au format JSON, vous pouvez analyser le fichier JSON pour définir des variables d'environnement individuelles pour chaque paire clé-valeur JSON. Si la valeur du secret est binaire, l'action la convertit en chaîne.

Pour afficher les variables d'environnement créées à partir de vos secrets, activez la journalisation du débogage. Pour plus d'informations, voir Activation de la journalisation du débogage dans la GitHub documentation.

Pour utiliser les variables d'environnement créées à partir de vos secrets, consultez la section Variables d'environnement dans la GitHub documentation.

Prérequis

Pour utiliser cette action, vous devez d'abord configurer les AWS informations d'identification et les définir Région AWS dans votre GitHub environnement à l'aide de l'configure-aws-credentialsétape. Suivez les instructions de la section Configurer l'action des AWS informations d'identification pour que GitHub les actions assument le rôle directement à l'aide du fournisseur GitHub OIDC. Cela vous permet d'utiliser des informations d'identification de courte durée et d'éviter de stocker des clés d'accès supplémentaires en dehors de Secrets Manager.

Le rôle IAM assumé par l'action doit avoir les autorisations suivantes :

  • GetSecretValue sur les secrets que vous souhaitez récupérer ;

  • ListSecrets sur tous les secrets ;

  • (Facultatif) Decrypt KMS key si les secrets sont chiffrés avec un clé gérée par le client.

Pour plus d’informations, consultez Authentification et contrôle d'accès pour AWS Secrets Manager.

Utilisation

Pour utiliser l'action, ajoutez une étape à votre flux qui utilise la syntaxe suivante.

- name: Step name uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | secretId1 ENV_VAR_NAME, secretId2 name-transformation: (Optional) uppercase|lowercase|none parse-json-secrets: (Optional) true|false
Paramètres
secret-ids

ARN, noms et préfixes de nom du secret.

Pour définir le nom de la variable d'environnement, saisissez-le avant l'ID du secret, suivi d'une virgule. Par exemple, ENV_VAR_1, secretId crée une variable d'environnement nommée ENV_VAR_1 à partir du secretId du secret. Le nom de la variable d'environnement peut contenir des lettres majuscules, des chiffres et des traits de soulignement.

Pour utiliser un préfixe, saisissez au moins trois caractères suivis d'un astérisque. Par exemple, dev* correspond à tous les secrets dont le nom commence par dev. Le nombre maximum de secrets correspondants pouvant être récupérés est de 100. Si vous définissez le nom de la variable et que le préfixe correspond à plusieurs secrets, l'action échoue.

name-transformation

Par défaut, l'étape crée chaque nom de variable d'environnement à partir du nom du secret, transformé de façon à inclure uniquement des lettres majuscules, des chiffres et des traits de soulignement, et à ne pas commencer par un chiffre. Pour les lettres du nom, vous pouvez configurer l'étape pour utiliser des lettres minuscules avec lowercase ou pour ne pas changer les majuscules des lettres avec. none La valeur par défaut est uppercase.

parse-json-secrets

(Facultatif) Par défaut, l'action définit la valeur de la variable d'environnement sur la chaîne JSON entière de la valeur du secret. Définissez sur parse-json-secrets pour true créer des variables d'environnement pour chaque paire clé-valeur dans le JSON.

Notez que si le fichier JSON utilise des clés sensibles à la casse, par exemple « nom » et « Nom », l'action rencontrera des conflits de noms dupliqués. Dans ce cas, définissez parse-json-secrets sur false et analysez la valeur du secret JSON séparément.

Désignation des variables d'environnement

Les variables d'environnement créées par l'action portent le même nom que les secrets dont elles proviennent. Les variables d'environnement ont des exigences de dénomination plus strictes que les secrets. L'action transforme donc les noms des secrets pour répondre à ces exigences. Par exemple, l'action transforme les lettres minuscules en lettres majuscules. Si vous analysez le JSON du secret, le nom de la variable d'environnement inclut à la fois le nom du secret et le nom de la clé JSON, par exempleMYSECRET_KEYNAME. Vous pouvez configurer l'action pour ne pas transformer les lettres minuscules.

Si deux variables d'environnement finissent par porter le même nom, l'action échoue. Dans ce cas, vous devez spécifier les noms que vous souhaitez utiliser pour les variables d'environnement sous forme d'alias.

Exemples de situations où les noms peuvent entrer en conflit :

  • Un secret nommé « MySecret » et un secret nommé « mysecret » deviendraient tous deux des variables d'environnement nommées « MYSECRET ».

  • Un secret nommé « Secret_keyname » et un secret analysé en JSON nommé « Secret » avec une clé nommée « keyname » deviendraient tous deux des variables d'environnement nommées « SECRET_KEYNAME ».

Vous pouvez définir le nom de la variable d'environnement en spécifiant un alias, comme illustré dans l'exemple suivant, qui crée une variable nomméeENV_VAR_NAME.

secret-ids: | ENV_VAR_NAME, secretId2
Alias vides
  • Si vous définissez parse-json-secrets: true et entrez un alias vide, suivi d'une virgule puis de l'ID secret, l'action nomme la variable d'environnement de la même manière que les clés JSON analysées. Les noms des variables n'incluent pas le nom du secret.

    Si le secret ne contient pas de code JSON valide, l'action crée une variable d'environnement et lui donne le même nom que le secret.

  • Si vous définissez parse-json-secrets: false et entrez un alias vide, suivi d'une virgule et de l'ID secret, l'action nomme les variables d'environnement comme si vous n'aviez pas spécifié d'alias.

L'exemple suivant montre un alias vide.

,secret2

Exemples

Exemple 1 Obtenir des secrets par leur nom et par leur ARN

L'exemple suivant crée des variables d'environnement pour les secrets identifiés par leur nom et par leur ARN.

- name: Get secrets by name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | exampleSecretName arn:aws:secretsmanager:us-east-2:123456789012:secret:test1-a1b2c3 0/test/secret /prod/example/secret SECRET_ALIAS_1,test/secret SECRET_ALIAS_2,arn:aws:secretsmanager:us-east-2:123456789012:secret:test2-a1b2c3 ,secret2

Variables d'environnement créées :

EXAMPLESECRETNAME: secretValue1 TEST1: secretValue2 _0_TEST_SECRET: secretValue3 _PROD_EXAMPLE_SECRET: secretValue4 SECRET_ALIAS_1: secretValue5 SECRET_ALIAS_2: secretValue6 SECRET2: secretValue7
Exemple 2 Obtenir tous les secrets qui commencent par un préfixe

L'exemple suivant crée des variables d'environnement pour tous les secrets dont le nom commence par beta.

- name: Get Secret Names by Prefix uses: 2 with: secret-ids: | beta* # Retrieves all secrets that start with 'beta'

Variables d'environnement créées :

BETASECRETNAME: secretValue1 BETATEST: secretValue2 BETA_NEWSECRET: secretValue3
Exemple 3 Analyser le fichier JSON dans le secret

L'exemple suivant crée des variables d'environnement en analysant le fichier JSON dans le secret.

- name: Get Secrets by Name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | test/secret ,secret2 parse-json-secrets: true

Le secret test/secret a la valeur de secret suivante.

{ "api_user": "user", "api_key": "key", "config": { "active": "true" } }

Le secret secret2 a la valeur de secret suivante.

{ "myusername": "alejandro_rosalez", "mypassword": "EXAMPLE_PASSWORD" }

Variables d'environnement créées :

TEST_SECRET_API_USER: "user" TEST_SECRET_API_KEY: "key" TEST_SECRET_CONFIG_ACTIVE: "true" MYUSERNAME: "alejandro_rosalez" MYPASSWORD: "EXAMPLE_PASSWORD"
Exemple 4 Utilisez des lettres minuscules pour les noms des variables d'environnement

L'exemple suivant crée une variable d'environnement avec un nom en minuscules.

- name: Get secrets uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: exampleSecretName name-transformation: lowercase

Variable d'environnement créée :

examplesecretname: secretValue