DKIM (DomainKeys Identified Mail) e uma tecnica critica de autenticacao de email que ajuda a prevenir falsificacao de email. Ao usar DKIM, voce assina digitalmente os cabecalhos do seu email com uma chave privada, e o destinatario verifica essa assinatura usando sua chave publica, que e armazenada nos registros DNS do seu dominio. O Google Workspace (anteriormente G Suite) aproveita o DKIM para garantir que os emails enviados do seu dominio sejam verificados como vindos de voce e nao de um spammer fingindo ser voce.

Neste artigo, vamos mergulhar em como usar o Terraform para configurar o DKIM para o Google Workspace, usando o AWS Route 53 para gerenciamento de DNS. Esta abordagem e perfeita se voce ja esta gerenciando sua infraestrutura como codigo e quer automatizar o processo de criacao de registros DNS para DKIM.

Vamos decompor o bloco Terraform que voce forneceu e passar passo a passo pelo que cada parte faz.

1. Visao Geral do Processo DKIM

Antes de mergulhar no codigo Terraform, vamos recapitular como o DKIM funciona:

  • Assinando Emails de Saida: O Google Workspace assina os cabecalhos dos emails de saida com uma chave privada. O proprietario do dominio configura a chave publica como um registro DNS.
  • Verificando Emails de Entrada: O servidor de email do destinatario busca a chave publica no DNS para verificar a assinatura e garantir que o email nao foi adulterado durante o transito.

Para configurar o DKIM, voce criara um registro TXT no seu DNS, contendo a chave publica gerada pelo Google Workspace.

2. Desconstruindo o Bloco Terraform

O bloco Terraform fornecido cria um registro TXT no AWS Route 53, que e essencial para publicar a chave publica DKIM para o Google Workspace. Aqui esta uma decomposicao de cada parte do bloco:

a. Variavel Local para Registro DKIM

locals {
  dkim_record = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4FbZGvaSuBW9yDhuswEA6S7QRRZlvvS3Rc6xRK92QJ44+IUoobJf+S3VZGSjdv5Jmpu57JGaq1KsObB5DwObvCW6yhJb6rGd0bgXqTzkfHH7sxnkEbDbNEIyUhxuEbUdWE1KtFz0QMb+GMhxC+j+kntpXtVDWugp9lSa7cnkFVho/gRwVkz47QFD1kQjvP9/QraYZo63M5DObFRFF4rDHvBzNTGl6+FC0OkyA49f19iw1+eFtLWu8BpVIn4HxxZWn04i1KHnm1AX9BztBAoVbJ0ZlF1tEJ5eLMPQg5l0BUcSEYi1RcBKTJU+AJ17fGAJEGr7Ft47SJgHdN9XUPH9NwIDAQAB"
}

Aqui, o bloco locals define uma variavel local dkim_record. Esta variavel armazena a chave publica DKIM no formato necessario para o DNS.

  • v=DKIM1: Especifica a versao do DKIM sendo usada.
  • k=rsa: O tipo de criptografia usada; o Google normalmente usa RSA.
  • p=MIIBIjAN...: A propria chave publica. Esta chave e gerada pelo Google Workspace e e unica para o seu dominio.

b. Criando o Registro DKIM no Route 53

resource "aws_route53_record" "google_domainkey_TXT" {
  zone_id = aws_route53_zone.domain_com.zone_id
  name    = "google._domainkey"
  type    = "TXT"
  ttl     = 300
  records = [
    replace(local.dkim_record, "/(.{255})/", "$1\"\"")
  ]
}

Este bloco de recurso aws_route53_record e responsavel por criar o registro DNS na sua zona hospedada do Route 53. Vamos decompor cada atributo:

  • zone_id: Refere-se a zona hospedada no AWS Route 53 onde o registro sera adicionado. O aws_route53_zone.domain_com.zone_id referencia a zona Route 53 para seu dominio, que o Terraform pode gerenciar dinamicamente.
  • name: O atributo name especifica o nome DNS para o registro. Neste caso, esta configurado como google._domainkey. Este e o subdominio especifico que o Google Workspace espera para armazenar registros DKIM.
  • type: O tipo de registro e configurado como TXT. Registros DKIM sao armazenados como registros TXT no DNS.
  • ttl: O TTL (Time to Live) e configurado para 300 segundos (5 minutos). Isso determina por quanto tempo os resolvedores DNS devem armazenar em cache o registro antes de busca-lo novamente.
  • records: Este campo contem o conteudo real do registro TXT, que e a chave publica DKIM. Como as chaves publicas DKIM podem frequentemente exceder 255 caracteres (o comprimento maximo para um unico registro DNS TXT), o Terraform usa uma funcao replace() para dividir a string em pedacos de 255 caracteres.

c. Dividindo Registros DKIM Longos

A funcao replace() usada nesta configuracao e critica:

replace(local.dkim_record, "/(.{255})/", "$1\"\"")

Esta linha garante que o registro DKIM seja dividido em secoes menores de 255 caracteres, ja que servidores DNS tem um limite de quao longo um unico registro TXT pode ser. A funcao replace() usa uma expressao regular para quebrar a string nesses pedaços e adiciona as aspas necessarias entre eles.

3. Por que Usar Terraform para DKIM?

Existem algumas boas razoes para usar Terraform para configurar seus registros DNS DKIM:

  • Gerenciamento Automatizado de DNS: Com Terraform, voce pode gerenciar seus registros DNS do Route 53 como codigo. Isso torna facil versionar suas configuracoes de DNS, garantir consistencia e reduzir erros manuais.
  • Repetibilidade: Uma vez que o script Terraform esteja escrito, voce pode facilmente aplica-lo em varios ambientes ou dominios. Isso e especialmente util para gerenciar varios dominios ou quando voce precisa reprovisionar infraestrutura.
  • Infraestrutura como Codigo (IaC): Gerenciar infraestrutura usando codigo permite melhor documentacao, colaboracao e auditoria. Quaisquer alteracoes nas suas configuracoes de DNS sao registradas no seu sistema de controle de versao (ex.: Git), dando a voce um historico claro de quem fez alteracoes e por que.

4. Passos para Configurar DKIM para Google Workspace

Para completar a configuracao do DKIM para Google Workspace, voce precisara seguir estes passos:

  1. Gerar a chave DKIM no Google Workspace:
    • Va para seu Google Admin Console.
    • Navegue para Apps > Google Workspace > Gmail > Authenticate Email.
    • Gere uma nova chave DKIM para seu dominio e copie a chave publica fornecida.
  2. Aplicar a Configuracao Terraform:
    • No seu arquivo de configuracao Terraform, defina a variavel local dkim_record com a chave publica gerada pelo Google Workspace.
    • Execute os seguintes comandos para aplicar a configuracao ao AWS Route 53:
terraform init
terraform plan
terraform apply
  • Isso criara o registro TXT DKIM na sua zona DNS do Route 53.
  1. Habilitar Assinatura DKIM no Google Workspace:
    • Apos o registro DNS ter se propagado (isso pode levar alguns minutos), retorne ao Google Admin Console.
    • Volte para a pagina Authenticate Email e clique em Start Authentication. Isso habilita a assinatura DKIM para seu dominio.

5. Verificando Sua Configuracao DKIM

Uma vez que o DKIM estiver habilitado, voce pode testar se esta funcionando enviando um e-mail da sua conta Google Workspace para um servico como DKIMCore's DKIM validator ou outras ferramentas de teste de email. Esses servicos dirao se a assinatura DKIM esta sendo aplicada corretamente e se o registro DNS esta configurado adequadamente.

Conclusao

Usar Terraform para gerenciar registros DKIM para Google Workspace e AWS Route 53 simplifica o processo de configurar e manter sua configuracao de autenticacao de email. Ao automatizar isso com Infraestrutura como Codigo (IaC), voce ganha os beneficios de reprodutibilidade, auditabilidade e facilidade de gerenciamento, tudo isso garantindo que seus emails estejam protegidos contra falsificacao e outros ataques baseados em email.

Com esta configuracao, voce agora tem uma configuracao DKIM solida que aumenta a seguranca de suas comunicacoes por email, garantindo que os destinatarios possam confiar nas mensagens que voce envia do seu dominio. Boas aventuras com Terraform!