Gerenciar segredos no GitHub
Segredos são variáveis que você cria em uma organização, repositório ou ambiente de repositório. Os segredos estão disponíveis para uso nos fluxos de trabalho do GitHub Actions. O GitHub Actions só poderá ler um segredo se você incluir explicitamente o segredo em um fluxo de trabalho.
Para segredos armazenados no nível da organização, você pode usar políticas de acesso para controlar quais repositórios podem usar segredos da organização. Os segredos no nível da organização permitem compartilhar segredos entre vários repositórios. Isso reduz a necessidade de criar segredos duplicados. Atualizar um segredo da organização em um local também garante que a alteração entre em vigor em todos os fluxos de trabalho do repositório que usam esse segredo.
Para segredos armazenados no nível do ambiente, você pode habilitar os revisores necessários para controlar o acesso aos segredos. Um trabalho de fluxo de trabalho não pode acessar os segredos de ambiente, a menos que seja aprovado pelos aprovadores necessários.
Nota
Você pode configurar seus fluxos de trabalho para se autenticar diretamente no Azure para acessar recursos.
Nomeando seus segredos
As regras a seguir se aplicam a nomes secretos:
- Os nomes só podem conter caracteres alfanuméricos (
[a-z],[A-Z],[0-9]) ou sublinhados (_). Não são permitidos espaços. - Os nomes não devem começar com o prefixo
GITHUB_. - Os nomes não devem começar com um número.
- Os nomes não diferenciam maiúsculas de minúsculas.
- Os nomes devem ser exclusivos no nível em que são criados.
Para ajudar a garantir que o GitHub redifique seu segredo em logs, evite usar dados estruturados como valores de segredos. Por exemplo, evite criar segredos que contenham blobs Git codificados ou JSON.
Acessar seus segredos
Defina o segredo como uma variável de entrada ou ambiente no arquivo de fluxo de trabalho para disponibilizá-lo para uma ação. Você pode usar e ler segredos em um arquivo de fluxo de trabalho se tiver acesso para editar o arquivo. Para obter mais informações, visite as permissões do Access no GitHub.
Os segredos da organização e do repositório são lidos quando uma execução de fluxo de trabalho é enfileirada e os segredos do ambiente são lidos quando um trabalho que faz referência ao ambiente é iniciado. Você também pode gerenciar segredos usando a API REST.
Limitando permissões de credenciais
É recomendável conceder as permissões mínimas possíveis. Por exemplo, em vez de usar credenciais pessoais, use chaves de implantação ou uma conta de serviço. Considere conceder permissões somente leitura se isso for tudo o que é necessário e limitar o acesso o máximo possível.
Ao gerar um token de acesso pessoal (clássico), selecione o menor número de escopos necessários. Ao gerar um token de acesso pessoal refinado, selecione as permissões mínimas e o acesso ao repositório necessários.
Criando segredos
Para criar segredos ou variáveis no GitHub para um repositório de conta pessoal, você deve ser o proprietário do repositório. Para criar segredos ou variáveis no GitHub para um repositório da organização, você deve ter acesso admin. Por fim, para criar segredos ou variáveis para um repositório de conta pessoal ou um repositório de organização por meio da API REST, você deve ter acesso de colaborador.
Os segredos podem ser criados por:
- Selecione Configurações na barra de navegação superior do seu repositório.
- Na seção Segurança da navegação à esquerda, selecione a lista suspensa Segredos e variáveis.
- Selecione Actions para acessar a página Segredos e variáveis do Actions.
Usando segredos em um fluxo de trabalho
Para fornecer uma ação com um segredo como uma variável de entrada ou ambiente, você pode usar o contexto secrets para acessar segredos criados em seu repositório. O código a seguir mostra um exemplo de como acessar segredos em um fluxo de trabalho.
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
Os segredos não podem ser referenciados diretamente nas condicionais if:. Considere definir segredos como variáveis de ambiente no nível da tarefa e referenciar as variáveis de ambiente para executar etapas condicionalmente na tarefa.
Se o valor de um segredo não estiver definido, o valor retornado de uma expressão referenciando o segredo (como ${{ secrets.SuperSecret }} no exemplo) será uma cadeia de caracteres vazia.