Usa AWS Secrets Manager i segreti nei GitHub lavori - AWS Secrets Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa AWS Secrets Manager i segreti nei GitHub lavori

Per utilizzare un segreto in un GitHub lavoro, puoi utilizzare un' GitHub azione per recuperare segreti da AWS Secrets Manager e aggiungerli come variabili di ambiente mascherate nel tuo GitHub flusso di lavoro. Per ulteriori informazioni sulle GitHub azioni, consulta Understanding GitHub Actions in the GitHub Docs.

Quando aggiungi un segreto al tuo GitHub ambiente, questo è disponibile per tutte le altre fasi del tuo GitHub lavoro. Segui le indicazioni contenute in Security Hardening for GitHub Actions per evitare che i segreti presenti nel tuo ambiente vengano utilizzati in modo improprio.

È possibile impostare l'intera stringa nel valore segreto come valore della variabile di ambiente oppure, se la stringa è JSON, è possibile analizzare il JSON per impostare variabili di ambiente individuali per ogni coppia chiave-valore JSON. Se il valore segreto è binario, l'operazione lo converte in una stringa.

Per visualizzare le variabili di ambiente create dai tuoi segreti, attiva la registrazione del debug. Per ulteriori informazioni, consulta Abilitazione della registrazione di debug nei Documenti. GitHub

Per utilizzare le variabili di ambiente create dai tuoi segreti, consulta Variabili di ambiente nei Documenti. GitHub

Prerequisiti

Per utilizzare questa azione, devi prima configurare AWS le credenziali e impostarle Regione AWS nel tuo GitHub ambiente utilizzando la configure-aws-credentials procedura. Segui le istruzioni riportate nella sezione Configurazione AWS delle credenziali Action for GitHub Actions to Assume il ruolo direttamente utilizzando il provider GitHub OIDC. Ciò consente di utilizzare credenziali di breve durata ed evitare di memorizzare chiavi di accesso aggiuntive al di fuori di Gestione dei segreti.

Il ruolo IAM assunto dall'operazione deve disporre delle seguenti autorizzazioni:

  • GetSecretValue sui segreti che desideri recuperare.

  • ListSecrets su tutti i segreti.

  • (Facoltativo) Decrypt KMS key se i segreti sono crittografati con un. chiave gestita dal cliente

Per ulteriori informazioni, consulta Autenticazione e controllo degli accessi per AWS Secrets Manager.

Utilizzo

Per utilizzare l'operazione, aggiungi un passaggio al flusso di lavoro che utilizza la seguente sintassi.

- 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
Parametri
secret-ids

ARN segreti, nomi e prefissi dei nomi.

Per impostare il nome della variabile di ambiente, inseriscilo prima dell'ID del segreto, seguito da una virgola. Ad esempio, ENV_VAR_1, secretId crea una variabile di ambiente denominata ENV_VAR_1 dal secretId del segreto. Il nome della variabile di ambiente può contenere lettere maiuscole, numeri e il carattere di sottolineatura.

Per utilizzare un prefisso, inserisci almeno tre caratteri seguiti da un asterisco. Ad esempio, dev* abbina tutti i segreti con un nome che inizia in dev. Possono essere recuperati fino a 100 segreti corrispondenti. Se imposti il nome della variabile e il prefisso trova corrispondenze con più segreti, l'operazione ha esito negativo.

name-transformation

Per impostazione predefinita, la fase crea ogni nome di variabile di ambiente dal nome del segreto, trasformato in modo da includere solo lettere maiuscole, numeri e caratteri di sottolineatura e in modo che non inizi con un numero. Per le lettere del nome, puoi configurare il passaggio in cui utilizzare lettere minuscole con lowercase o non modificare le lettere maiuscole con. none Il valore predefinito è uppercase.

parse-json-secrets

(Facoltativo) Per impostazione predefinita, l'operazione imposta il valore della variabile di ambiente sull'intera stringa JSON nel valore del segreto. Imposta parse-json-secrets per true creare variabili di ambiente per ogni coppia chiave-valore in JSON.

Ricorda che se il JSON utilizza chiavi con distinzione tra maiuscole e minuscole (come "nome" e "Nome"), l'operazione risconterà conflitti di nomi duplicati. In questo caso, imposta parse-json-secrets su false e analizza il valore segreto JSON separatamente.

Denominazione delle variabili di ambiente

Le variabili di ambiente create dall'azione hanno lo stesso nome dei segreti da cui provengono. Le variabili di ambiente hanno requisiti di denominazione più rigorosi rispetto ai segreti, quindi l'azione trasforma i nomi segreti per soddisfare tali requisiti. Ad esempio, l'operazione trasforma le lettere minuscole in lettere maiuscole. Se analizzi il codice JSON del segreto, il nome della variabile di ambiente include sia il nome segreto che il nome della chiave JSON, ad esempio. MYSECRET_KEYNAME È possibile configurare l'azione per non trasformare le lettere minuscole.

Se due variabili di ambiente finiscono con lo stesso nome, l'azione ha esito negativo. In questo caso, è necessario specificare i nomi che si desidera utilizzare per le variabili di ambiente come alias.

Esempi di casi in cui i nomi potrebbero essere in conflitto:

  • Un segreto chiamato "MySecret" e un segreto chiamato «mysecret» diventerebbero entrambi variabili di ambiente denominate «MYSECRET».

  • Un segreto denominato «SECRET_keyname» e un segreto analizzato in JSON denominato «Secret» con una chiave denominata «keyname» diventerebbero entrambi variabili di ambiente denominate «SECRET_KEYNAME».

È possibile impostare il nome della variabile di ambiente specificando un alias, come illustrato nell'esempio seguente, che crea una variabile denominata. ENV_VAR_NAME

secret-ids: | ENV_VAR_NAME, secretId2
Alias vuoti
  • Se imposti parse-json-secrets: true e inserisci un alias vuoto, seguito da una virgola e quindi dall'ID segreto, l'azione assegna alla variabile di ambiente lo stesso nome delle chiavi JSON analizzate. I nomi delle variabili non includono il nome segreto.

    Se il segreto non contiene un codice JSON valido, l'azione crea una variabile di ambiente e la nomina con lo stesso nome del segreto.

  • Se imposti parse-json-secrets: false e inserisci un alias vuoto, seguito da una virgola e dall'ID segreto, l'azione nomina le variabili di ambiente come se non avessi specificato un alias.

L'esempio seguente mostra un alias vuoto.

,secret2

Esempi

Esempio 1 Recupera segreti per nome e per ARN

L'esempio seguente crea variabili di ambiente per i segreti identificati dal nome e dall'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

Variabili di ambiente create:

EXAMPLESECRETNAME: secretValue1 TEST1: secretValue2 _0_TEST_SECRET: secretValue3 _PROD_EXAMPLE_SECRET: secretValue4 SECRET_ALIAS_1: secretValue5 SECRET_ALIAS_2: secretValue6 SECRET2: secretValue7
Esempio 2 Recupera tutti i segreti che iniziano con un prefisso

L'esempio di seguito crea variabili di ambiente per tutti i segreti con nomi che iniziano con beta.

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

Variabili di ambiente create:

BETASECRETNAME: secretValue1 BETATEST: secretValue2 BETA_NEWSECRET: secretValue3
Esempio 3 Analizza il JSON nel segreto

L'esempio di seguito crea variabili di ambiente analizzando il JSON nel segreto.

- 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

Il segreto test/secret ha il seguente valore segreto.

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

Il segreto secret2 ha il seguente valore segreto.

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

Variabili di ambiente create:

TEST_SECRET_API_USER: "user" TEST_SECRET_API_KEY: "key" TEST_SECRET_CONFIG_ACTIVE: "true" MYUSERNAME: "alejandro_rosalez" MYPASSWORD: "EXAMPLE_PASSWORD"
Esempio 4 Usa lettere minuscole per i nomi delle variabili di ambiente

L'esempio seguente crea una variabile di ambiente con un nome minuscolo.

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

Variabile di ambiente creata:

examplesecretname: secretValue