Sobre o armazenamento externo para GitHub Actions
GitHub Actions usa o armazenamento de blobs externo para armazenar dados gerados por execuções de fluxo de trabalho. Os dados armazenados incluem logs de fluxo de trabalho, caches e artefatos de compilação carregados pelo usuário. Para saber mais, confira "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".
Há duas opções para configurar o GitHub Enterprise Server para se conectar ao provedor de armazenamento externo:
- OIDC (OpenID Connect)
- Autenticação tradicional baseada em credenciais usando segredos
É recomendável usar o OIDC sempre que possível, pois você não precisará criar ou gerenciar segredos de credenciais confidenciais e de longa duração para seu provedor de armazenamento e arriscar que eles sejam expostos. Depois de definir uma relação de confiança com o OIDC, seu provedor de armazenamento em nuvem emite automaticamente tokens de acesso de curta duração para sua instância do GitHub Enterprise Server, que expiram automaticamente.
Pré-requisitos
Note
Os únicos provedores de armazenamento S3 com suporte no GitHub são o Amazon S3 e o MinIO Gateway para NAS.
Há outros produtos de armazenamento compatíveis com a API do S3 que os parceiros GitHub validaram automaticamente como trabalhando com GitHub Actions em GitHub Enterprise Server. Para obter mais informações, confira o repositório Parceiros de Armazenamento GHES.
Para produtos de armazenamento validados por meio do programa de Parceria de Tecnologia do GitHub, o provedor de armazenamento é responsável pelo suporte e documentação pelo uso do produto de armazenamento com GitHub Actions.
Antes de habilitar GitHub Actions, certifique-se de que você realizou os seguintes passos:
-
Crie seu bucket do Amazon S3 para armazenar dados gerados pelas execuções do fluxo de trabalho.
-
Revisar os requisitos de hardware para GitHub Actions. Para obter mais informações, confira "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".
-
O TLS deve ser configurado para o domínio do GitHub Enterprise Server. Para obter mais informações, confira "Configurar o TLS".
Observação: É altamente recomendável que você configure a TLS em GitHub Enterprise Server com um certificado assinado por uma autoridade confiável. Embora um certificado autoassinado possa funcionar, é necessária uma configuração extra para os seus executores auto-hospedados, e não é recomendado para ambientes de produção.
-
Se você tiver um Servidor Proxy HTTP configurado no GitHub:
-
Você deve adicionar
.localhost
,127.0.0.1
e::1
à lista de Exclusão de Proxy HTTP (nessa ordem). -
Se o local de armazenamento externo não for encaminhável, você também precisará adicionar a URL de armazenamento externo à lista de exclusões.
Para obter mais informações sobre como alterar as configurações de proxy, confira "Configurando um servidor proxy Web de saída".
-
Se você estiver usando o OIDC para a conexão com seu provedor de armazenamento, precisará expor as seguintes URLs de serviço de token OIDC em sua instância do GitHub Enterprise Server à Internet pública:
https://HOSTNAME/_services/token/.well-known/openid-configuration https://HOSTNAME/_services/token/.well-known/jwks
Isso garante que o provedor de armazenamento possa entrar em contato com sua instância do GitHub Enterprise Server para autenticação.
Habilitar GitHub Actions com o Amazon S3 usando OIDC (recomendado)
Para configurar o GitHub Enterprise Server para usar o OIDC com um bucket do Amazon S3, primeiro você deve criar um provedor OIDC da Amazon, depois criar uma função IAM (Gerenciamento de Identidades e Acesso) e, por fim, configurar o GitHub Enterprise Server para usar o provedor e a função para acessar o bucket S3.
1. Criar um provedor OIDC da Amazon
-
Obtenha a impressão digital para sua instância do GitHub Enterprise Server.
-
Use o seguinte comando OpenSSL para obter a impressão digital SHA1 para sua instância do GitHub Enterprise Server, substituindo
HOSTNAME
pelo nome do host público para sua instância do GitHub Enterprise ServerShell openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
Por exemplo:
openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
O comando retorna uma impressão digital no seguinte formato:
SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
-
Remova os dois-pontos (
:
) do valor da impressão digital e salve o valor a ser usado posteriormente.Por exemplo, a impressão digital do valor retornado na etapa anterior é:
AB1234567890ABCDEF1234567890ABCDEF123456
-
-
Usando a CLI do AWS, use o comando a seguir para criar um provedor OIDC para sua instância do GitHub Enterprise Server. Substitua
HOSTNAME
pelo nome do host público para sua instância do GitHub Enterprise Server eTHUMBPRINT
pelo valor da impressão digital da etapa anterior.Shell aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
Por exemplo:
Shell aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
Para saber mais sobre como instalar a CLI da AWS, confira a documentação da Amazon.
Warning
Se o certificado do sua instância do GitHub Enterprise Server for alterado no futuro, você precisará atualizar o valor da impressão digital no provedor OIDC da Amazon para que a confiança do OIDC continue funcionando.
2. Criar uma função IAM
-
Abra o Console do AWS e navegue até o serviço IAM (Gerenciamento de Identidades e Acesso).
-
No menu à esquerda, em "Gerenciamento de acesso", clique em Funções e clique em Criar Função.
-
Na página "Selecionar entidade confiável", insira as seguintes opções:
- Para "Tipo de entidade confiável", clique em Identidade da Web.
- Para "Provedor de identidade", use o menu suspenso Escolher provedor e selecione o provedor OIDC que você criou nas etapas anteriores. Ele deve ser nomeado
HOSTNAME/_services/token
, ondeHOSTNAME
é o nome do host público para sua instância do GitHub Enterprise Server. - Para "Público-alvo", selecione
sts.amazonaws.com
.
-
Clique em Próximo.
-
Na página "Adicionar permissões", use o filtro para localizar e selecionar a política
AmazonS3FullAccess
. -
Clique em Próximo.
-
Na página "Nome, revisão e criação", insira um nome para a função e clique em Criar função.
-
Na página "Funções" do IAM, selecione a função que você acabou de criar.
-
Em "Resumo", observe o valor do ARN para a função, pois isso será necessário posteriormente.
-
Clique na guia Relações de confiança e em Editar política de confiança.
-
Edite a política de confiança para adicionar uma nova declaração
sub
. O valor paraCondition
deve corresponder ao exemplo a seguir, substituindoHOSTNAME
pelo nome do host público para sua instância do GitHub Enterprise Server:... "Condition": { "StringEquals": { "HOSTNAME/_services/token:aud": "sts.amazonaws.com", "HOSTNAME/_services/token:sub": "HOSTNAME" } } ...
Por exemplo:
... "Condition": { "StringEquals": { "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com", "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com" } } ...
-
Clique em Atualizar política.
3. Configurar GitHub Enterprise Server para se conectar ao Amazon S3 usando o OIDC
-
Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
-
Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
-
Na barra lateral " Administrador do site", clique em Console de Gerenciamento .
-
Na barra lateral "Configurações", clique em Ações.
-
Em "GitHub Actions", selecione Habilitar GitHub Actions.
-
Em "Armazenamento de Logs e Artefatos", ao lado de "Amazon S3", clique em Configurar.
-
Em "Autenticação", selecione OIDC (OpenID Connect) e insira os valores para o armazenamento:
- Bucket da AWS S3: o nome do bucket S3.
- Função do AWS: o ARN para a função que você criou nos procedimentos anteriores. Por exemplo,
arn:aws:iam::123456789:role/my-role-name
. - Região do AWS: a região do AWS para o bucket. Por exemplo,
us-east-1
.
-
Clique no botão Testar configurações de armazenamento para validar as configurações de armazenamento.
Se houver erros ao validar as configurações de armazenamento, verifique as configurações no provedor de armazenamento e tente novamente.
-
Na barra lateral "Configurações", clique em Salvar configurações.
Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.
-
Aguarde a conclusão da execução de suas configurações.
Habilitar GitHub Actions com o armazenamento do Amazon S3 usando chaves de acesso
-
Usando o Console do AWS ou a CLI, crie uma chave de acesso para o bucket de armazenamento. GitHub Actions exige as seguintes permissões para a chave de acesso que terá acesso ao bucket:
s3:PutObject
s3:GetObject
s3:ListBucketMultipartUploads
s3:ListMultipartUploadParts
s3:AbortMultipartUpload
s3:DeleteObject
s3:ListBucket
kms:GenerateDataKey
(se a criptografia KMS, Serviço de Gerenciamento de Chaves, tiver sido habilitada)
Para obter mais informações sobre como gerenciar chaves de acesso da AWS, confira a "Documentação de gerenciamento de identidades e acesso da AWS".
-
Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
-
Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
-
Na barra lateral " Administrador do site", clique em Console de Gerenciamento .
-
Na barra lateral "Configurações", clique em Ações.
-
Em "GitHub Actions", selecione Habilitar GitHub Actions.
-
Em "Armazenamento de Logs e Artefatos", ao lado de "Amazon S3", clique em Configurar.
-
Em "Autenticação", selecione Baseado em credenciais e insira os detalhes do bucket de armazenamento:
-
URL de Serviço da AWS: a URL de serviço do bucket. Por exemplo, se o bucket S3 foi criado na região
us-west-2
, esse valor deve serhttps://s3.us-west-2.amazonaws.com
.Para obter mais informações, confira "Pontos de extremidade de serviço da AWS" na documentação da AWS.
-
Bucket da AWS S3: o nome do bucket S3.
-
Chave de Acesso da AWS S3 e Chave Secreta da AWS S3: a ID da chave de acesso da AWS e a chave secreta do bucket.
-
-
Clique no botão Testar configurações de armazenamento para validar as configurações de armazenamento.
Se houver erros ao validar as configurações de armazenamento, verifique as configurações no provedor de armazenamento e tente novamente.
-
Na barra lateral "Configurações", clique em Salvar configurações.
Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.
-
Aguarde a conclusão da execução de suas configurações.
Próximas etapas
Depois que a execução da configuração tiver sido concluída com sucesso, GitHub Actions será habilitado em GitHub. Para suas próximas etapas, como gerenciar as permissões de acesso do GitHub Actions e adicionar executores auto-hospedados, retorne para "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".