DEV Community

Alfredo Castro
Alfredo Castro

Posted on

AWS Backup Cross-Account com KMS para instâncias EC2

Em um mundo cada vez mais digital e dependente de tecnologia, as aplicações desempenham um papel fundamental para empresas, organizações e até mesmo para usuários individuais. Elas armazenam informações críticas, processam dados essenciais e fornecem funcionalidades vitais para o funcionamento diário de diversos setores. Diante desse cenário, é de extrema importância garantir a segurança e disponibilidade dessas aplicações, e uma das medidas essenciais nesse sentido é a realização de backups.

O backup de aplicações é uma medida essencial para garantir a segurança e disponibilidade dos dados vitais em um mundo digitalizado. Diante de ameaças como falhas técnicas, ataques cibernéticos e erros humanos, a perda de informações pode ser desastrosa para empresas e indivíduos. Realizar backups regularmente protege contra tais situações, permitindo a recuperação rápida e eficiente dos dados. Além disso, backups são fundamentais para garantir a continuidade dos negócios, minimizar prejuízos financeiros e evitar danos à reputação.

A Amazon Web Services (AWS) oferece uma solução de backup chamada AWS Backup, que fornece uma maneira centralizada de gerenciar backups em vários serviços e contas da AWS. O AWS Backup permite que as empresas criem, automatizem e gerenciem backups de seus dados, aplicativos e recursos.

No cenário abaixo, irei explicar como configurar o AWS Backup para realizar backups de suas instâncias EC2 em uma região específica e como configurar ele para enviar os backups para outra conta da AWS (Backup Cross-Account).

O backup entre contas oferece suporte apenas a CMKs gerenciadas pelo cliente. Ele não oferece suporte a cofres de backup criptografados usando CMKs gerenciadas pela AWS, incluindo cofres padrão, as CMKs gerenciadas pela AWS não devem ser compartilhadas entre contas, por isso precisamos criar nossa própria chave.

O cenário abaixo também funciona para volumes que estão criptografados com a CMK gerenciada pelo cliente.

Pré-requisito:

  • Duas contas AWS, a conta A (origem) será nossa conta de aplicação onde está rodando nossa instância EC2 e a conta B (destino) será nossa conta de gerencia onde iremos armazenar a cópia do Backup.
  • Precisamos configurar o AWS Organizations em nossa conta B e ingressar a conta A no Organization (não entrarei em detalhes de como realizar a criação do AWS Organizations).

Etapa 01 - Ativar o Cross-Account Backup (Conta B)

1) Acesse a console AWS e procure pelo serviço "AWS Backup".
2) No menu lateral a esquerda, clique em "Settings".
Image description
3) Procure o campo "Cross-account management" e habilite as funções "Backup policies", "Cross-account monitoring" e "Cross-account backup", clicando no botão "Turn on", o status deverá mudar de "Off" para "On".
Image description

Etapa 02 - Criar chave KMS na conta de destino (Conta B)

1) Acesse a console AWS e procure pelo serviço "Key Management Service".
2) No menu lateral a esquerda, clique em "Customer managed keys".
Image description
3) Clique em "Create key".
Image description
4) Selecione a "Key type" como "Symmetric" e a "Key usage" como "Encrypt and decrypt" e clique em "Next".
Image description
5) Defina um nome de sua escolha para o "Alias" da key e clique em "Next".
Image description
6) Em "Define key administrative permissions" selecione a role "AWSServiceRoleForBackup" e clique em "Next".
Image description
7) Em "Define key usage permissions" selecione a role "AWSServiceRoleForBackup" e clique em "Next".
Image description
8) Revise as informações e clique em "Finish" para criar a chave KMS.

Etapa 03 - Criar o Backup Vault na conta de destino (Conta B)

1) Acesse a console AWS e procure pelo serviço "AWS Backup".
2) No menu lateral a esquerda, clique em "Backup vaults".
Image description
3) Clique no botão "Create backup vault".
Image description
4) Defina um nome de sua escolha para o Backup Vault, em seguida selecione a "Encrypt key" criada na etapa 02 "arn:aws:kms:us-east-1:XXXXXXXXXXXX:alias/AWS-Backup-Dest" e clique em "Create backup vault".
Image description
5) Agora precisamos definir uma política permitindo a conta A de enviar backups para o Vault criado. Clique em "Edit access policy" e adicione o seguinte JSON (substituindo o "AccountSrcID" para o ID da conta A de origem), clique em "Save policy".

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Allow AccountSrcID to copy into DestMyBackupVault",
      "Effect": "Allow",
      "Action": "backup:CopyIntoBackupVault",
      "Resource": "*",
      "Principal": {
        "AWS": "arn:aws:iam::AccountSrcID:root"
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Image description
Image description
6) Copie o ARN do Vault para utilizarmos na próxima etapa.

Etapa 04 - Criar chave KMS na conta de origem (Conta A)

1) Acesse a console AWS e procure pelo serviço "Key Management Service".
2) No menu lateral a esquerda, clique em "Customer managed keys".
Image description
3) Clique em "Create key".
Image description
4) Selecione a "Key type" como "Symmetric" e a "Key usage" como "Encrypt and decrypt" e clique em "Next".
Image description
5) Defina um nome de sua escolha para o "Alias" da key e clique em "Next".
Image description
6) Em "Define key administrative permissions" selecione a role "AWSServiceRoleForBackup" e clique em "Next".
Image description
7) Em "Define key usage permissions" selecione a role "AWSServiceRoleForBackup", em "Other AWS accounts" clique em "Add another AWS account" e digite o ID da conta de destino (conta B) e clique em "Next".
Image description
8) Revise as informações e clique em "Finish" para criar a chave KMS.

Etapa 05 - Configurar o AWS Backup (Conta A)

1) Acesse a console AWS e procure pelo serviço "AWS Backup".
2) No menu lateral a esquerda, clique em "Backup vaults".
Image description
3) Clique no botão "Create backup vault".
Image description
4) Defina um nome de sua escolha para o Backup Vault, em seguida selecione a "Encrypt key" criada na etapa 04 "arn:aws:kms:us-east-1:XXXXXXXXXXXX:alias/AWS-Backup" e clique em "Create backup vault".
Image description
5) No menu lateral a esquerda, clique em "Backup plans".
Image description
6) Clique no botão "Create backup plan".
Image description
7) Em "Start options", defina "Build a new plan", em seguida defina um nome de sua escolha para o Backup Plan.
Image description
8) Em "Backup rule configuration", defina um nome de sua escolha para o Backup Rule, em "Backup vault" selecione o Vault criado anteriormente, em "Backup frequency" defina a frequência de backup desejada (nesse exemplo a frequência será diária), em "Backup window" definimos qual será o horário que a regra de backup será executada (nesse exemplo será as 03:00 AM UTC. Obs: 00:00 horário de brasília), em "Retention period" definimos o tempo de retenção do backup (nesse exemplo a retenção será de 1 semana).
Image description
9) Em "Copy to destination" definimos para qual região/conta iremos enviar a cópia do backup (nesse exemplo iremos enviar para a região US East (N. Virginia) e para o Vault da conta B), em "External vault ARN" adicionamos o ARN do Vault criado na etapa 03 Ex: arn:aws:backup:us-east-1:XXXXXXXXXXXX:backup-vault:DestMyBackupVault (irá aparecer uma mensagem falando que será necessário adicionar permissão de acesso da conta B no vault da conta A) clique no botão "Allow" para adicionar a permissão.
Image description
Image description
10) Em "Retention period" definimos qual será a retenção dos backups na conta B (nesse exemplo a retenção da conta B será de 3 dias). Clique em "Create plan".
Image description
11) Agora definimos qual será os recursos que iremos fazer Backup (nesse exemplo vamos realizar o backup das instâncias EC2 que possuem a TAG "Backup = True"). Em "General" defina um nome de sua escolha para o Assign Resources, mantenha a "IAM role" como "Default role".
Image description
12) Em "Resource selection", marque a opção "Include specific resource types", em "Select specific resource types" selecione "EC2", em "Refine selection using tags" adicione a TAG "Key" = Backup o "Condition for value" = Equals e o "Value" = True. Clique em "Assign resources".
Image description
13) Clique em "Continue".
Image description

Etapa 06 - Adicionar a TAG de Backup = True em todas as instâncias que você deseja realizar o Backup (Conta A)

1) Acesse a console AWS e procure pelo serviço "EC2".
2) No menu lateral a esquerda, clique em "Instances".
Image description
3) Selecione a instância desejada, clique em "Actions" > "Instance settings" > "Manage tags".
Image description
4) Clique em "Add new tag", em "Key" digite Backup e em "Value" digite True. Clique em Save.
Image description

Etapa 07 - Verificar backups realizados (Conta A)

1) Acesse a console AWS e procure pelo serviço "AWS Backup".
2) No menu lateral a esquerda, clique em "Jobs".
Image description
3) Em "Backup jobs" podemos ver os backups realizados na conta de origem (Conta A).
Image description
4) Em "Copy jobs" podemos ver os backups copiados para a conta de destino (Conta B).
Image description

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em deixar um comentário.

Top comments (0)