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
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
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
Pour utiliser les variables d'environnement créées à partir de vos secrets, consultez la section Variables d'environnement
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
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 dusecretId
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 estuppercase
. 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
pourtrue
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
surfalse
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