Use AWS Secrets Manager segredos em GitHub empregos - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use AWS Secrets Manager segredos em GitHub empregos

Para usar um segredo em um GitHub trabalho, você pode usar uma GitHub ação para recuperar segredos AWS Secrets Manager e adicioná-los como variáveis de ambiente mascaradas em seu GitHub fluxo de trabalho. Para obter mais informações sobre GitHub ações, consulte Entendendo GitHub ações nos GitHub documentos.

Quando você adiciona um segredo ao seu GitHub ambiente, ele fica disponível para todas as outras etapas do seu GitHub trabalho. Siga as orientações em Fortalecimento de segurança para GitHub ações para ajudar a evitar que segredos em seu ambiente sejam usados indevidamente.

Você pode definir a cadeia de caracteres inteira no valor do segredo como o valor da variável de ambiente ou, caso a cadeia de caracteres seja JSON, pode analisar o JSON a fim de definir variáveis de ambiente individuais para cada par chave-valor JSON. Se o valor do segredo for um binário, a ação o converterá em uma cadeia de caracteres.

Para visualizar as variáveis de ambiente criadas utilizando seus segredos, ative o log de depuração. Para obter mais informações, consulte Habilitando o registro de depuração no GitHub Docs.

Para usar as variáveis de ambiente criadas a partir de seus segredos, consulte Variáveis de ambiente na GitHub documentação.

Pré-requisitos

Para usar essa ação, primeiro você precisa configurar AWS as credenciais e defini-las Região da AWS em seu GitHub ambiente usando a configure-aws-credentials etapa. Siga as instruções em Configurar ações de AWS credenciais para que GitHub as ações assumam a função diretamente usando o provedor GitHub OIDC. Isso permite que você use credenciais de curta duração e evite armazenar chaves de acesso adicionais externas ao Secrets Manager.

O perfil do IAM que a ação assume deve ter as seguintes permissões:

  • GetSecretValue sobre os segredos que você deseja recuperar.

  • ListSecrets em todos os segredos.

  • (Opcional) Decrypt KMS key se os segredos estiverem criptografados com um chave gerenciada pelo cliente.

Para ter mais informações, consulte Autenticação e controle de acesso para o AWS Secrets Manager.

Uso

Para usar a ação, adicione uma etapa ao fluxo de trabalho que use a sintaxe a seguir.

- name: Step name uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | secretId1 ENV_VAR_NAME, secretId2 parse-json-secrets: (Optional) true|false
Parâmetros
secret-ids

ARNS, nomes e prefixos de nomes dos segredos.

Por padrão, a etapa cria cada nome de variável de ambiente utilizando o nome do segredo, o qual é transformado para incluir apenas letras maiúsculas, números e sublinhados, bem como não começar com um número.

Para definir o nome da variável de ambiente, insira-o antes do ID do segredo e acrescente uma vírgula. Por exemplo, o ENV_VAR_1, secretId cria uma variável de ambiente chamada ENV_VAR_1 utilizando o secretId do segredo. O nome da variável de ambiente pode consistir em letras maiúsculas, números e sublinhados.

Para usar um prefixo, digite pelo menos três caracteres seguidos de um asterisco. Por exemplo, dev* corresponde a todos os segredos com um nome que começa em dev. O número máximo de segredos correspondentes que podem ser recuperados é 100. Se você definir o nome da variável e o prefixo corresponder a diversos segredos, a ação falhará.

parse-json-secrets

(Opcional) Por padrão, a ação define o valor da variável de ambiente para a cadeia de caracteres JSON inteira no valor do segredo. Defina os parse-json-secrets como true para criar variáveis de ambiente para cada par chave-valor no JSON.

Observe que, se o JSON usar chaves que diferenciam maiúsculas de minúsculas, como “nome” e “Nome”, a ação apresentará conflitos de nomes duplicados. Nesse caso, defina os parse-json-secrets como false e analise o valor do segredo JSON separadamente.

Nomeação de variáveis de ambiente

As variáveis de ambiente criadas pela ação são nomeadas da mesma forma que os segredos de onde elas vêm. As variáveis de ambiente têm requisitos de nomenclatura mais rígidos do que os segredos, então a ação transforma os nomes secretos para atender a esses requisitos. Por exemplo, a ação transforma letras minúsculas em letras maiúsculas. Se você analisar o JSON do segredo, o nome da variável de ambiente incluirá tanto o nome secreto quanto o nome da chave JSON, por exemplo. MYSECRET_KEYNAME

Se duas variáveis de ambiente terminarem com o mesmo nome, a ação falhará. Nesse caso, você deve especificar os nomes que deseja usar para as variáveis de ambiente como aliases.

Exemplos de quando os nomes podem entrar em conflito:

  • Um segredo chamado "MySecret" e um segredo chamado “mysecret” se tornariam variáveis de ambiente chamadas “MYSECRET”.

  • Um segredo chamado “secret_keyname” e um segredo analisado em JSON chamado “Secret” com uma chave chamada “keyname” se tornariam variáveis de ambiente chamadas “SECRET_KEYNAME”.

Você pode definir o nome da variável de ambiente especificando um alias, conforme mostrado no exemplo a seguir, que cria uma variável chamada. ENV_VAR_NAME

secret-ids: | ENV_VAR_NAME, secretId2
Aliases em branco
  • Se você definir parse-json-secrets: true e inserir um alias em branco, seguido por uma vírgula e depois pelo ID secreto, a ação nomeará a variável de ambiente da mesma forma que as chaves JSON analisadas. Os nomes das variáveis não incluem o nome secreto.

    Se o segredo não contiver um JSON válido, a ação criará uma variável de ambiente e a nomeará da mesma forma que o nome do segredo.

  • Se você definir parse-json-secrets: false e inserir um alias em branco, seguido por uma vírgula e o ID secreto, a ação nomeará as variáveis de ambiente como se você não tivesse especificado um alias.

O exemplo a seguir mostra um alias em branco.

,secret2

Exemplos

exemplo 1. Obtenha segredos por nome e por ARN

O exemplo a seguir cria variáveis de ambiente para segredos identificados por nome e por 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

Variáveis de ambiente criadas:

EXAMPLESECRETNAME: secretValue1 TEST1: secretValue2 _0_TEST_SECRET: secretValue3 _PROD_EXAMPLE_SECRET: secretValue4 SECRET_ALIAS_1: secretValue5 SECRET_ALIAS_2: secretValue6 SECRET2: secretValue7
exemplo 2. Obtenha todos os segredos que começam com determinado prefixo

O exemplo a seguir cria variáveis de ambiente para todos os segredos com nomes que começam com beta.

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

Variáveis de ambiente criadas:

BETASECRETNAME: secretValue1 BETATEST: secretValue2 BETA_NEWSECRET: secretValue3
exemplo 3. Análise do JSON no segredo

O exemplo a seguir cria variáveis de ambiente ao analisar o JSON no segredo.

- 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

O segredo test/secret tem o seguinte valor de segredo.

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

O segredo secret2 tem o seguinte valor de segredo.

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

Variáveis de ambiente criadas:

TEST_SECRET_API_USER: "user" TEST_SECRET_API_KEY: "key" TEST_SECRET_CONFIG_ACTIVE: "true" MYUSERNAME: "alejandro_rosalez" MYPASSWORD: "EXAMPLE_PASSWORD"