Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Creating and using encrypted secrets

Encrypted secrets allow you to store sensitive information, such as access tokens, in your repository.

GitHub Actions is available with GitHub Free, GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. GitHub Actions is unavailable for per-repository plans, which are legacy billing plans. For more information, see "GitHub's products."

Neste artigo

Anyone with write access to a repository can create, read, and use secrets.

About encrypted secrets

Segredos são variáveis de ambiente criptografadas criadas em um repositório e que só podem ser usadas pelo GitHub Actions. O GitHub criptografa segredos no navegador da web usando a criptografia autenticada da chave pública e o algoritmo de cifragem Poly1305. Para obter mais informações, consulte a documentação "TweetNaCl.js". Para disponibilizar um segredo para uma ação, você deve configurá-lo como uma entrada ou variável de ambiente no arquivo do fluxo de trabalho.

O GitHub automaticamente elimina os segredos impressos no log, mas você deve evitar imprimir segredos no log intencionalmente.

Creating encrypted secrets

Nomes de segredos não podem ter espaços. To ensure that GitHub redacts your secret in logs, avoid using structured data as the values of secrets. For example, avoid creating secrets that contain JSON or encoded Git blobs.

  1. No GitHub, navegue até a página principal do repositório.

  2. Under your repository name, click Settings.

    Repository settings button

  3. Na barra lateral esquerda, clique em Secrets (Segredos).

  4. Digite um nome do segredo na caixa "Name" (Nome).

  5. Digite o valor do seu segredo.

  6. Clique em Add secret (Adicionar segredo).

Para disponibilizar um segredo para uma ação, defina-o como uma entrada ou variável de ambiente no fluxo de trabalho. Revise o arquivo LEIAME da ação para saber quais entradas e variáveis de ambientes a ação exige. Para obter mais informações, consulte "Sintaxe de fluxo de trabalho para o GitHub Actions".

Using encrypted secrets in a workflow

Com exceção do GITHUB_TOKEN, os segredos não são disponibilizados para o executor quando um fluxo de trabalho é acionado a partir de um repositório bifurcado.

To provide an action with a secret as an input or environment variable, you can use the secrets context to access secrets you've created in your repository. For more information, see "Contexts and expression syntax for GitHub Actions" and "Workflow syntax for GitHub Actions."

steps:
  - name: Hello world action
    with: # Configura o segredo como uma entrada
      super_secret: ${{ secrets.SuperSecret }}
    env: # Ou como uma variável de ambiente
      super_secret: ${{ secrets.SuperSecret }}

Limites para segredos

Your workflow can have up to 100 secrets. The names of secret environment variables must be unique in a repository.

Os segredos são limitados a 64 kB. Para usar segredos maiores que 64 kB, você pode armazenar segredos criptografados no seu repositório e salvar a frase secreta de descodificação como um segredo no GitHub. Por exemplo, você pode usar gpg para criptografar suas credenciais localmente antes de colocar o arquivo no repositório do GitHub. Para obter mais informações, consulte a "página do manual gpg".

Aviso: cuide para seus segredos não serem impressos quando a ação é executada. Quando usar essa alternativa, o GitHub não eliminará segredos que estão impressos nos logs.

  1. Execute o seguinte comando no seu terminal para criptografar o arquivo my_secret.json usando gpg e o algoritmo de cifragem AES256.

    $ gpg --symmetric --cipher-algo AES256 my_secret.json
  2. Você receberá a solicitação para inserir a frase secreta. Guarde a frase secreta, pois você precisará criar um novo segredo no GitHub que usa a frase secreta como valor.

  3. Crie um novo segredo no repositório para armazenar a frase secreta. Por exemplo, crie um novo segredo com o nome LARGE_SECRET_PASSPHRASE e defina o valor do segredo para a frase secreta que você escolheu na etapa anterior.

  4. Copie o arquivo criptografado no repositório e faça commit. Nesse exemplo, o arquivo criptografado é my_secret.json.gpg.

  5. Crie um script shell para decifrar a senha. Salve o arquivo como decrypt_secret.sh.

    #!/bin/sh
    
    # Decodifica o arquivo
    mkdir $HOME/secrets
    # --coloca em lote para impedir comando interativo --sim para afirmar "sim" para perguntas
    gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
    --output $HOME/secrets/my_secret.json my_secret.json.gpg
  6. Confirme que o shell script é executável antes de colocá-lo no repositório.

    $ chmod +x decrypt_secret.sh
    $ git add decrypt_secret.sh
    $ git commit -m "Add new decryption script"
    $ git push
  7. A partir de seu fluxo de trabalho, use step para chamar o shell script e decifrar o segredo. Para ter uma cópia do seu repositório no ambiente virtual que executa seu fluxo de trabalho, você precisará usar a ação actions/checkout. Faça referência ao shell script usando o comando run relativo à raiz do repositório.

    name: Workflows with large secrets
    
    on: push
    
    jobs:
      my-job:
        name: My Job
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v1
          - name: Decrypt large secret
            run: ./.github/scripts/decrypt_secret.sh
            env:
              LARGE_SECRET_PASSPHRASE: $
          # Esse comando é apenas um exemplo para mostrar seu segredo sendo impresso
          # Certifique-se de remover quaisquer declaração de impressão de seus segredos. O GitHub
          # não oculta segredos que usam essa alternativa.
          - name: Test printing your secret (Remove this step in production)
            run: cat $HOME/secrets/my_secret.json

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato