Ir para o conteúdo principal

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

·1308 palavras·7 minutos
aws ec2 backup kms
Alfredo Castro
Autor
Alfredo Castro
AWS Solutions Architect | AWS x3 | LPI x2 | CompTIA Linux+
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) #

Acesse a console AWS e procure pelo serviço “AWS Backup”.

No menu lateral a esquerda, clique em “Settings”.

IMAGEM 01

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”.

IMAGEM 02

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

Acesse a console AWS e procure pelo serviço “Key Management Service”.

No menu lateral a esquerda, clique em “Customer managed keys”.

IMAGEM 01

Clique em “Create key”.

IMAGEM 02

Selecione a “Key type” como “Symmetric” e a “Key usage” como “Encrypt and decrypt” e clique em “Next”.

IMAGEM 03

Defina um nome de sua escolha para o “Alias” da key e clique em “Next”.

IMAGEM 04

Em “Define key administrative permissions” selecione a role “AWSServiceRoleForBackup” e clique em “Next”.

IMAGEM 05

Em “Define key usage permissions” selecione a role “AWSServiceRoleForBackup” e clique em “Next”.

IMAGEM 06

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) #

Acesse a console AWS e procure pelo serviço “AWS Backup”.

No menu lateral a esquerda, clique em “Backup vaults”.

IMAGEM 01

Clique no botão “Create backup vault”.

IMAGEM 02

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”.

IMAGEM 03

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"
      }
    }
  ]
}

IMAGEM 04
IMAGEM 05

Copie o ARN do Vault para utilizarmos na próxima etapa.

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

Acesse a console AWS e procure pelo serviço “Key Management Service”.

No menu lateral a esquerda, clique em “Customer managed keys”.

IMAGEM 01

Clique em “Create key”.

IMAGEM 02

Selecione a “Key type” como “Symmetric” e a “Key usage” como “Encrypt and decrypt” e clique em “Next”.

IMAGEM 03

Defina um nome de sua escolha para o “Alias” da key e clique em “Next”.

IMAGEM 04

Em “Define key administrative permissions” selecione a role “AWSServiceRoleForBackup” e clique em “Next”.

IMAGEM 05

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”.

IMAGEM 06

Revise as informações e clique em “Finish” para criar a chave KMS.

Etapa 05 - Configurar o AWS Backup (Conta A) #

Acesse a console AWS e procure pelo serviço “AWS Backup”.

No menu lateral a esquerda, clique em “Backup vaults”.

IMAGEM 01

Clique no botão “Create backup vault”.

IMAGEM 02

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”.

IMAGEM 03

No menu lateral a esquerda, clique em “Backup plans”.

IMAGEM 04

Clique no botão “Create backup plan”.

IMAGEM 05

Em “Start options”, defina “Build a new plan”, em seguida defina um nome de sua escolha para o Backup Plan.

IMAGEM 06

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).

IMAGEM 07

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.

IMAGEM 08
IMAGEM 09

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”.

IMAGEM 10

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”.

IMAGEM 11

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”.

IMAGEM 12

Clique em “Continue”.

IMAGEM 13

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

Acesse a console AWS e procure pelo serviço “EC2”.

No menu lateral a esquerda, clique em “Instances”.

IMAGEM 01

Selecione a instância desejada, clique em “Actions” > “Instance settings” > “Manage tags”.

IMAGEM 02

Clique em “Add new tag”, em “Key” digite Backup e em “Value” digite True. Clique em Save.

IMAGEM 03

Etapa 07 - Verificar backups realizados (Conta A) #

Acesse a console AWS e procure pelo serviço “AWS Backup”.

No menu lateral a esquerda, clique em “Jobs”.

IMAGEM 01

Em “Backup jobs” podemos ver os backups realizados na conta de origem (Conta A).

IMAGEM 02

Em “Copy jobs” podemos ver os backups copiados para a conta de destino (Conta B).

IMAGEM 03

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.