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á.
Usar segredos do AWS Secrets Manager em tarefas do GitHub
Para usar um segredo em uma tarefa do GitHub, você pode usar uma ação do GitHub para recuperar segredos do AWS Secrets Manager e adicioná-los como Environment variables
Quando você adiciona um segredo ao seu ambiente do GitHub, ele fica disponível para todas as outras etapas da sua tarefa do GitHub. Siga as orientações em Security hardening for GitHub Actions
É possível 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 log de depuração
Para usar as variáveis de ambiente criadas com base em seus segredos, consulte Variáveis de ambiente
Pré-requisitos
Para usar essa ação, primeiro você precisa configurar as credenciais da AWS e definir a Região da AWS em seu ambiente do GitHub usando a etapa de configure-aws-credentials
. Siga as instruções em Configurar ação de credenciais da AWS para o GitHub Actions
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
na KMS key se os segredos forem criptografados com uma 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
name-transformation: (Optional) uppercase|lowercase|none
parse-json-secrets: (Optional) true|false
Parâmetros
secret-ids
-
ARNS, nomes e prefixos de nomes dos segredos.
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 osecretId
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á. name-transformation
-
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 as letras no nome, é possível configurar a etapa para usar letras minúsculas com
lowercase
ou não alterar as maiúsculas e minúsculas das letras comnone
. O valor padrão éuppercase
. 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
parse-json-secrets
comotrue
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
comofalse
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 dos quais elas vêm. As variáveis de ambiente têm requisitos de nomenclatura mais rígidos do que os segredos, portanto, a ação transforma os nomes de segredos 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 do segredo quanto o nome da chave JSON, por exemplo, MYSECRET_KEYNAME
. É possível configurar a ação para não transformar letras minúsculas.
Se duas variáveis de ambiente terminarem com o mesmo nome, a ação falhará. Nesse caso, você deverá 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 denominadas "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".
É possível 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 do segredo, 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 do segredo.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 depois pelo ID do segredo, a ação nomeará as variáveis de ambiente como se você não especificasse um alias.
Veja a seguir um exemplo de 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"
exemplo 4 Use letras minúsculas para nomes de variáveis de ambiente
O exemplo a seguir cria uma variável de ambiente com um nome em minúsculas.
- name: Get secrets uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: exampleSecretName name-transformation: lowercase
Variável de ambiente criada:
examplesecretname: secretValue