Use AWS Secrets Manager em GitLab - 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 em GitLab

AWS Secrets Managerse integra com GitLab. Você pode aproveitar os segredos do Secrets Manager para proteger suas GitLab credenciais para que elas não sejam mais codificadas. GitLab Em vez disso, o GitLab Runner recupera esses segredos do Secrets Manager quando seu aplicativo executa um trabalho nos pipelines de GitLab CI/CD.

Para usar essa integração, você criará um provedor de identidade OpenID Connect (OIDC) no IAM AWS Identity and Access Management e uma função do IAM. Isso permite que o GitLab Runner acesse seu segredo do Secrets Manager. Para obter mais informações sobre GitLab CI/CD e OIDC, consulte a documentação. GitLab

Considerações

Se você estiver usando uma GitLab instância não pública, não poderá usar essa integração com o Secrets Manager. Em vez disso, consulte a GitLab documentação de instâncias não públicas.

Pré-requisitos

Para integrar o Secrets Manager com GitLab, preencha os seguintes pré-requisitos:

  1. Crie um AWS Secrets Manager segredo

    Você precisará de um segredo do Secrets Manager que será recuperado em seu GitLab trabalho e eliminará a necessidade de codificar essas credenciais. Você precisará do ID secreto do Secrets Manager ao configurar seu GitLab pipeline. Consulte Crie um AWS Secrets Manager segredo para obter mais informações.

  2. Crie GitLab seu provedor OIDC no console do IAM.

    Nesta etapa, você criará GitLab seu provedor OIDC no console do IAM. Para obter mais informações, consulte Criar um provedor de identidade e documentação do OpenID Connect (OIDC). GitLab

    Ao criar o provedor OIDC no console do IAM, use as configurações a seguir:

    1. Defina o provider URL para sua GitLab instância. Por exemplo, .gitlab.example.com

    2. Configure audience ou aud como sts.amazonaws.com.

  3. Criar uma política e um perfil do IAM

    Será necessário criar uma política e um perfil do IAM. Essa função é assumida por GitLab with AWS Security Token Service(STS). Para obter mais informações, consulte Criação de um perfil usando políticas de confiança personalizadas.

    1. No console do IAM, use as configurações a seguir ao criar o perfil do IAM:

      • Defina Trusted entity type como Web identity.

      • Defina Group como your GitLab group.

      • Identity providerDefina com o mesmo URL do provedor (a GitLab instância) que você usou na etapa 2.

      • Defina Audience como o mesmo público que você usou na etapa 2.

    2. Veja a seguir um exemplo de uma política de confiança que GitLab permite assumir funções. Sua política de confiança deve listar seu Conta da AWS GitLab URL e o caminho do projeto.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRoleWithWebIdentity", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/gitlab.example.com" }, "Condition": { "StringEquals": { "gitlab.example.com:aud": [ "sts.amazon.com" ] }, "StringLike": { "gitlab.example.com:sub": [ "project_path:mygroup/project-*:ref_type:branch-*:ref:main*" ] } } } ] }
    3. Você também precisará criar uma política do IAM para permitir o GitLab acesso AWS Secrets Manager a. É possível adicionar essa política à sua política de confiança. Para obter mais informações, consulte Criação de políticas de IAM.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:your-secret" } ] }

Integrando com AWS Secrets Manager GitLab

Depois de concluir os pré-requisitos, você pode configurar GitLab para usar o Secrets Manager para proteger suas credenciais.

Configurar o GitLab pipeline para usar o Secrets Manager

Você precisará atualizar seu arquivo de configuração de GitLab CI/CD com as seguintes informações:

  • O público do token definido como STS.

  • O ID do segredo do Secrets Manager.

  • A função do IAM que você deseja que o GitLab Runner assuma ao executar trabalhos no GitLab pipeline.

  • O Região da AWS local onde o segredo está armazenado.

GitLab busca o segredo do Secrets Manager e armazena o valor em um arquivo temporário. O caminho para esse arquivo é armazenado em uma CI/CD variável, semelhante às variáveis CI/CD do tipo de arquivo.

Veja a seguir um trecho do arquivo YAML para um arquivo de configuração GitLab CI/CD:

variables: AWS_REGION: us-east-1 AWS_ROLE_ARN: 'arn:aws:iam::111122223333:role/gitlab-role' job: id_tokens: AWS_ID_TOKEN: aud: 'sts.amazonaws.com' secrets: DATABASE_PASSWORD: aws_secrets_manager: secret_id: "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name"

Para obter mais informações, consulte a documentação de integração do GitLab Secrets Manager.

Opcionalmente, você pode testar sua configuração do OIDC em. GitLab Consulte a GitLab documentação para testar a configuração do OIDC para obter mais informações.

Solução de problemas

O seguinte pode ajudá-lo a solucionar problemas comuns que você pode encontrar ao integrar o Secrets Manager com o. GitLab

GitLab Problemas de tubulação

Se você tiver problemas no GitLab pipeline, verifique o seguinte:

  • Seu arquivo YAML está formatado corretamente. Para obter mais informações, consulte a documentação da GitLab.

  • Seu GitLab funil está assumindo a função correta, tem as permissões apropriadas e acesso ao AWS Secrets Manager segredo correto.

Recursos adicionais do

Os recursos a seguir podem ajudá-lo a solucionar problemas com GitLab eAWS Secrets Manager: