Gerenciamento seguro de credenciais
Implemente as melhores práticas para gerenciar com segurança as credenciais dos provedores de nuvem e os dados confidenciais em seus pipelines automatizados do Terraform.
Gerenciamento seguro de credenciais é uma aula grátis de Terraform Infrastructure as Code no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Terraform Infrastructure as Code, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Terraform Infrastructure as Code inclui 4 aulas no total.
Proteção das credenciais em CI/CD
Ao automatizar a infraestrutura com o Terraform em um fluxo de CI/CD, seu fluxo precisa acessar contas de provedores de nuvem. Gerenciar essas credenciais com segurança é essencial para evitar acesso não autorizado e violações de dados.
Pense nisso como entregar a um robô as chaves da sua casa. Você quer garantir que somente o robô certo tenha as chaves certas e que essas chaves estejam protegidas.
Evite codificar segredos diretamente
Um erro comum é inserir informações confidenciais, como chaves de API ou senhas, diretamente nos arquivos de configuração do Terraform ou nos scripts de CI/CD. Isso é chamado de codificação direta.
- Risco de segurança: Os segredos passam a fazer parte do histórico do código-fonte (por exemplo, do Git).
- Exposição: Qualquer pessoa com acesso ao repositório pode vê-los.
- Manutenção: Alterar um segredo exige modificar o código e fazer uma nova implantação.
Variáveis de ambiente (básico)
Para desenvolvimento local ou cenários básicos, as variáveis de ambiente são uma maneira simples de fornecer credenciais sem codificá-las diretamente. Você as define no shell antes de executar o Terraform.
Embora seja melhor do que codificar segredos diretamente, essa não é a opção ideal para fluxos de CI/CD compartilhados, pois os segredos ainda podem ficar visíveis nos registros ou nas listas de processos se não forem tratados com cuidado.
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform planGerenciadores de segredos da plataforma de CI/CD
As plataformas modernas de CI/CD oferecem recursos integrados de gerenciamento de segredos. Eles permitem armazenar dados confidenciais com segurança dentro da própria plataforma, separados do repositório de código.
Quando o fluxo é executado, esses segredos são injetados no ambiente de compilação como variáveis de ambiente ou arquivos, mas nunca são expostos nos registros nem armazenados no seu repositório.
Exemplo de segredos do GitHub Actions
O GitHub Actions fornece uma seção dedicada aos segredos do repositório. Você pode adicioná-los em Configurações > Segredos e variáveis > Ações > Novo segredo do repositório.
No seu arquivo de fluxo de trabalho, você pode referenciar esses segredos usando o contexto secrets. Eles são automaticamente ocultados nos registros.
name: Deploy Infra
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Terraform Init
run: terraform initFunções IAM de nuvem para fluxos
A abordagem mais segura para autenticação de CI/CD é usar funções do Identity and Access Management (IAM) ou contas de serviço fornecidas pelo seu provedor de nuvem.
Em vez de chaves de acesso de longa duração, seu fluxo de CI/CD assume uma função temporária com permissões específicas, geralmente usando OpenID Connect (OIDC) para relações de confiança. Isso elimina completamente a necessidade de armazenar credenciais estáticas.
Exemplo de função IAM da AWS + OIDC
Na AWS, você pode configurar uma função IAM que o fluxo de trabalho do GitHub Actions pode assumir diretamente usando OIDC. Isso significa que nenhuma chave de acesso da AWS é armazenada em lugar algum!
Você define uma política de confiança para a função, permitindo que o provedor OIDC do GitHub a assuma com base em condições específicas (por exemplo, repositório e ramificação).
resource "aws_iam_role" "github_actions_role" {
name = "github-actions-oidc-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Principal = {
Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
}
Action = "sts:AssumeRoleWithWebIdentity"
Condition = {
StringEquals = {
"token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
}
StringLike = {
"token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
}
}
}
]
})
}Saídas confidenciais do Terraform
Às vezes, as saídas do Terraform podem conter dados confidenciais, como senhas de banco de dados ou chaves privadas. Você deve marcar essas saídas como sensitive.
Quando uma saída é marcada como confidencial, o Terraform oculta o valor dela na saída da CLI e no arquivo de estado quando exibida, ajudando a evitar exposições acidentais.
output "database_password" {
value = aws_db_instance.main.password
description = "The database root password."
sensitive = true
}Verificação de credenciais seguras
Qual método é geralmente considerado o mais seguro para que fluxos de CI/CD se autentiquem com provedores de nuvem, eliminando a necessidade de armazenar credenciais estáticas de longa duração?
Recapitulação: credenciais seguras
Você aprendeu estratégias essenciais para gerenciar dados confidenciais nos seus fluxos de CI/CD do Terraform:
- Evite a codificação direta: Nunca insira segredos diretamente no seu código.
- Use segredos de CI/CD: Utilize gerenciadores de segredos específicos da plataforma para credenciais estáticas.
- Adote funções IAM/OIDC: Para obter a máxima segurança, use funções IAM do provedor de nuvem com OIDC para assumir permissões temporárias sem armazenar chaves.
- Marque as saídas como confidenciais: Proteja os dados confidenciais expostos pelas saídas do Terraform.
Essas práticas são fundamentais para manter uma infraestrutura robusta e segura.
Perguntas Frequentes
A aula “Gerenciamento seguro de credenciais” é grátis?
Sim — o texto completo de “Gerenciamento seguro de credenciais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Terraform Infrastructure as Code, atualize para CoddyKit PRO. O curso de Terraform Infrastructure as Code inclui 4 aulas no total.
O que vou aprender em “Gerenciamento seguro de credenciais”?
Implemente as melhores práticas para gerenciar com segurança as credenciais dos provedores de nuvem e os dados confidenciais em seus pipelines automatizados do Terraform. Você pratica Terraform Infrastructure as Code com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Terraform Infrastructure as Code?
Nenhuma experiência prévia é necessária. Terraform Infrastructure as Code no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Gerenciamento seguro de credenciais”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Terraform Infrastructure as Code?
Sim. Cada aula de Terraform Infrastructure as Code inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Terraform em pipelines de CI/CD
- Automatizando `plan` e `apply`
- Gerenciamento seguro de credenciais
- GitOps e automação de solicitações de alteração