Neste guia, vamos demonstrar como configurar a autenticação segura via OIDC (OpenID Connect) entre o GitLab CI/CD e a AWS, eliminando a necessidade de chaves de acesso estáticas. Você aprenderá a automatizar o provisionamento de recursos em múltiplas contas da sua organização utilizando Terraform e CloudFormation StackSets.
Ao final deste tutorial, você terá uma pipeline funcional capaz de implantar recursos padronizados em escala, garantindo conformidade e agilidade na gestão da sua infraestrutura em nuvem
Para que você consiga reproduzir este laboratório com sucesso, certifique-se de que possui os seguintes itens preparados:
state) do Terraform.No console AWS da conta de gerenciamento, você deve estabelecer a confiança com o GitLab:
Acesse IAM > Identity providers e clique em Add provider.


Selecione OpenID Connect.
Provider URL: https://gitlab.com
Audience: gitlab.com

E clique em Add Provider
Esta role permitirá que o GitLab assuma permissões na sua conta AWS:
gitlab.com) que você configurou no passo anterior.
Nesta etapa, você vai determinar o que a sua pipeline poderá executar dentro da AWS.

Nesta última tela de criação (Step 3: Name, review, and create), você deve consolidar a identidade da sua automação:
Role-gitlab.sts:AssumeRoleWithWebIdentity.
Principal aponta para o ARN do seu provider OIDC.Condition contêm as strings que restringem o acesso ao seu grupo e projeto específicos no GitLab (project_path:seu-grupo/seu-projeto).AdministratorAccess estão corretas, clique em Create role no final da página
Agora que a Role IAM está pronta para ser assumida pelo GitLab, o próximo passo é preparar o serviço de CloudFormation para operar em escala sobre toda a sua estrutura de contas.
Para que o provisionamento centralizado funcione, você precisa autorizar a comunicação entre o CloudFormation e o AWS Organizations. Sem isso, a automação não terá permissão para “espalhar” os recursos pelas contas subordinadas.
service-managed permissions). Isso permite que a AWS crie automaticamente as roles necessárias em cada conta da sua organização para que o StackSet consiga realizar o deploy.
Agora que a infraestrutura na AWS está pronta, vamos configurar o seu repositório local. Siga exatamente esta ordem para garantir que a automação funcione:
Primeiro, você deve trazer o projeto (que você criou no GitLab) para a sua máquina:
Bash
git clone https://gitlab.com/seu-usuario/seu-projeto.git
cd seu-projeto
Acesse o link abaixo e baixe os arquivos de configuração que preparei para este laboratório. Após baixar, extraia e coloque todos os arquivos dentro da pasta onde você clonou o seu projeto:
Após baixar e extrair os arquivos, você deve garantir que a organização das pastas dentro do seu repositório clonado esteja correta. Como este é um projeto que utiliza Terraform para gerenciar CloudFormation StackSets, a localização dos arquivos é crucial para que a pipeline encontre os templates.
A estrutura do seu projeto deve ficar exatamente desta forma:
role-teste.yaml.Agora que os arquivos estão na pasta correta, você precisa ajustá-los para que a automação reconheça a sua infraestrutura específica. Como este é um ambiente de Cloud Foundation, a precisão aqui é o que garante o sucesso do deploy.
Abra os arquivos em seu editor de código e realize as seguintes alterações conforme os placeholders:
| Placeholder | Arquivo(s) | O que você deve fazer |
| YOUR_ACCOUNT_ID | .gitlab-ci.yml e role-teste.yaml | Substitua pelo ID de 12 dígitos da sua conta de gerenciamento (Management Account). |
| YOUR_ROLE_NAME | .gitlab-ci.yml | Insira o nome exato da Role IAM que você criou para o OIDC do GitLab. |
| YOUR_STATE_BUCKET | main.tf | Coloque o nome de um bucket S3 (que você já possua ou vá criar) para armazenar o arquivo de estado do Terraform. |
| YOUR_OU_OR_ROOT_ID | variables.tf | Informe o ID da sua Organization Root (ex: r-xxxx) ou da Unidade Organizacional (OU) alvo. |
Agora que o seu ambiente local está configurado e os arquivos personalizados, vamos enviar tudo para o GitLab. Abra o terminal dentro da pasta do seu projeto e execute os comandos na ordem abaixo:
Preparar os arquivos: Adicione todas as alterações e novos arquivos ao controle do Git:
Bash
git add .
Validar o status: Este passo é importante para garantir que todos os arquivos (incluindo a pasta templates/ e o .gitlab-ci.yml) estão prontos para o envio:
Bash
git status
Registrar a versão: Crie o commit com uma mensagem descritiva para o seu histórico:
Bash
git commit -m "Primeira pipeline multi-account"
Enviar e Iniciar: Ao realizar o push, o GitLab detectará automaticamente o arquivo de configuração e iniciará a pipeline de imediato:
Bash
git push

Com o envio do código via Git, a automação ganha vida. Agora é o momento de acompanhar o progresso diretamente pela interface do GitLab, onde você verá as etapas (stages) que definimos no arquivo .gitlab-ci.yml sendo processadas.
Para visualizar o status da sua automação:
terraform_plan), garantindo que o código está correto antes de qualquer alteração na AWS.
Como medida de segurança em ambientes de infraestrutura, a etapa final não ocorre sozinha:
terraform_apply e note que ele possui um ícone de “play”, indicando que aguarda a sua autorização manual para provisionar os recursos.
Após autorizar o terraform_apply, a pipeline percorrerá o estágio final de execução. Ao término do processo, você verá o status verde indicando que a operação foi bem-sucedida.

Com a automação finalizada, é hora de validar o resultado diretamente na console da AWS para garantir que os recursos foram distribuídos corretamente entre as contas:
stackset-role-teste).
Confirmação na Conta Destino: Ao acessar a conta subordinada e navegar até o IAM > Roles, você encontrará a nova Role (ex: role Teste) com as permissões definidas (como AmazonS3ReadOnlyAccess), provando que a automação multi-account funcionou perfeitamente.

Parabéns! Você acaba de implementar uma solução de Cloud Foundation digna de ambientes corporativos. Ao integrar o GitLab CI/CD com o OIDC e o CloudFormation StackSets, você eliminou o uso de credenciais estáticas e criou um motor de distribuição de infraestrutura capaz de gerenciar centenas de contas AWS com um único comando.
A automação que construímos aqui garante que a governança da sua organização seja aplicada de forma consistente, rápida e segura.
É importante lembrar que esta é apenas uma das diversas formas de automatizar o seu ambiente. O poder desta arquitetura reside na sua escalabilidade:
A automação está pronta, agora o limite é a sua criatividade para expandir esse ecossistema!
Espero que este guia tenha sido útil para a sua jornada Cloud. Seja feliz e bons deploys!