Automatizar cópias de snapshots entre contas com o Data Lifecycle Manager
A automatização de cópias de snapshots entre contas permite copiar seus snapshots do Amazon EBS para regiões específicas em uma conta isolada e criptografar esses snapshots com uma chave de criptografia. Isso permite que você se proteja contra perda de dados no caso de sua conta ser comprometida.
A automatização de cópias de snapshots entre contas envolve duas contas:
-
Conta de origem—A conta de origem é a conta que cria e compartilha os snapshots com a conta de destino. Nesta conta, crie uma política de snapshot do EBS que crie snapshots em intervalos definidos e compartilhe-os com outras contas da AWS.
-
Contade destino—A conta de destino é a conta com a conta de destino com a qual os snapshots são compartilhados e é a conta que cria cópias dos instantâneos compartilhados. Nesta conta, crie uma política de eventos de cópia entre contas que copia automaticamente snapshots compartilhados com ela por uma ou mais contas de origem especificadas.
Criar políticas de cópia de snapshot entre contas
Para preparar as contas de origem e de destino para cópia de snapshot entre contas, você precisa executar as seguintes etapas:
Na conta de origem, crie uma política de snapshot do EBS que criará os snapshots e os compartilhará com as contas de destino necessárias.
Ao criar a política, certifique-se de habilitar o compartilhamento entre contas e especificar as contas da AWS de destino com as quais os snapshots serão compartilhados. Estas são as contas com as quais os snapshots devem ser compartilhados. Se você estiver compartilhando snapshots criptografados, deverá dar permissão às contas de destino selecionadas para usar a Chave do KMS usada para criptografar o volume de origem. Para ter mais informações, consulte Etapa 2: Compartilhe a chave gerenciada pelo cliente (Conta de origem).
Você só pode compartilhar snapshots não criptografados ou criptografados usando uma chave gerenciada pelo cliente gerenciada pelo cliente. Você não pode compartilhar snapshots criptografados com a Chave do KMS de criptografia padrão do EBS. Se você compartilhar snapshots criptografados, também deverá compartilhar a Chave do KMS usada para criptografar o volume de origem com as contas de destino. Para obter mais informações, consulte Como permitir que usuários em outras contas usem uma chave do KMS no Guia do desenvolvedor do AWS Key Management Service.
Para obter mais informações sobre como criar um snapshot de política do EBS, consulte Criar política padrão do Amazon Data Lifecycle Manager para snapshots.
Use um dos métodos a seguir para criar a política de snapshot do EBS.
Se você estiver compartilhando snapshots criptografados, conceda a função do IAM e as contas da AWS de destino (que você selecionou na etapa anterior) permissões para usar a chave gerenciada pelo cliente que foi usada para criptografar o volume de origem.
Execute esta etapa apenas se você estiver compartilhando snapshots criptografados. Se você estiver compartilhando snapshots não criptografados, pule esta etapa.
- Console
-
-
Abra o console do AWS KMS em https://console.aws.amazon.com/kms.
-
Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.
-
No painel de navegação, escolha Customer managed key (Chave gerenciadas pelo cliente) e selecione a chave do KMS que você precisa compartilhar com as contas de destino.
Anote o ARN das Chave do KMS, você precisará disso mais tarde.
-
Na guia Key policy (Política de chaves), role para baixo até a seção Key users (Usuários chave). Escolha Add (Adicionar), insira o nome da função do IAM que você selecionou na etapa anterior e escolha Add (Adicionar).
-
Na guia Key policy (Política de chaves), role para a seção Other AWS accounts (Outras contas da ). Escolha Adicionar outras contas da AWS e adicione todas as contas da AWS de destino com as quais escolheu compartilhar os snapshots na etapa anterior.
-
Selecione Save changes (Salvar alterações).
- Command line
-
Use o comando get-key-policy para recuperar a política de chaves que está atualmente vinculada à Chave do KMS.
Por exemplo, o comando a seguir recupera a política de chaves para uma Chave do KMS com um ID de 9d5e2b3d-e410-4a27-a958-19e220d83a1e
e a grava em um arquivo chamado snapshotKey.json
.
$
aws kms get-key-policy \
--policy-name default \
--key-id 9d5e2b3d-e410-4a27-a958-19e220d83a1e
\
--query Policy \
--output text > snapshotKey.json
Abra a política de chaves usando seu editor de texto preferido. Adicione o ARN da função do IAM que você especificou quando criou a política de snapshot e os ARNs das contas de destino com as quais deseja compartilhar a Chave do KMS.
Por exemplo, na política a seguir, adicionamos o ARN da função padrão do IAM e o ARN da conta raiz da conta de destino 222222222222.
Para seguir o princípio de menor privilégio, não permita acesso total a kms:CreateGrant
. Em vez disso, use a chave de condição kms:GrantIsForAWSResource
para permitir que o usuário crie concessões na chave do KMS somente quando a concessão for criada em nome do usuário por um serviço da AWS, conforme mostrado no exemplo a seguir.
{
"Sid" : "Allow use of the key",
"Effect" : "Allow",
"Principal" : {
"AWS" : [
"arn:aws:iam::111111111111:role/service-role/AWSDataLifecycleManagerDefaultRole
",
"arn:aws:iam::222222222222:root
"
]
},
"Action" : [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource" : "*"
},
{
"Sid" : "Allow attachment of persistent resources",
"Effect" : "Allow",
"Principal" : {
"AWS" : [
"arn:aws:iam::111111111111:role/service-role/AWSDataLifecycleManagerDefaultRole
",
"arn:aws:iam::222222222222:root
"
]
},
"Action" : [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource" : "*",
"Condition" : {
"Bool" : {
"kms:GrantIsForAWSResource" : "true"
}
}
}
Salve e feche o arquivo . Use então o comando put-key-policy para anexar a política chave atualizada à Chave do KMS.
$
aws kms put-key-policy \
--policy-name default \
--key-id 9d5e2b3d-e410-4a27-a958-19e220d83a1e
\
--policy file://snapshotKey.json
Na conta de destino, crie uma política de eventos de cópia entre contas que copiará automaticamente os snapshots compartilhados pelas contas de origem necessárias.
Essa política só é executada na conta de destino quando uma das contas de origem especificadas compartilha o snapshot com a conta.
Use um dos seguintes métodos para criar a política de eventos de cópia entre contas.
- Console
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação, selecione Elastic Block Store, Lifecycle Manager ((Gerenciador de ciclo de vida) e Create snapshot lifecycle policy (Criar política de ciclo de vida de snapshot).
-
Na tela Select policy type (Selecionar tipo de política), escolha Cross-account copy event policy (Cópia de política de eventos entre contas) e depois Next (Próximo).
-
Em Policy description (Descrição da política), insira uma breve descrição da política.
-
Em Policy tags (Etiquetas de políticas), adicione as etiquetas a serem aplicadas na política de ciclo de vida. É possível usar essas etiquetas para identificar e categorizar suas políticas.
-
Na seção Event settings (Configurações de evento), defina o evento de compartilhamento de snapshots que fará com que a política seja executada. Faça o seguinte:
-
Em Sharing accounts (Compartilhando contas), especifique as contas da AWS de origem das quais você deseja copiar os snapshots compartilhados. Selecione Add account (Adicionar conta), insira o ID de 12 dígitos da conta da AWS e escolha Add (Adicionar).
-
Em Filter by description (Filtrar por descrição), insira a descrição necessária do snapshot usando uma expressão regular. Somente os snapshots que são compartilhados pelas contas de origem especificadas e que tenham descrições que correspondam ao filtro especificado são copiados pela política. Para ter mais informações, consulte Especificar filtros de descrição de snapshot.
-
Para a IAM role (função do IAM), escolha a função do IAM que tem permissões para executar ações de cópia de snapshots. Para usar a função padrão fornecida pelo Amazon Data Lifecycle Manager, escolha Default role (Função padrão). Se preferir, para usar uma função do IAM personalizada criada anteriormente, selecione Choose another role (Escolher outra função) e selecione a função a ser usada.
Se você estiver copiando snapshots criptografados, conceda as permissões de função do IAM selecionadas para usar a Chave do KMS de criptografia usada para criptografar o volume de origem. Da mesma forma, se você estiver criptografando o snapshot na região de destino usando uma Chave do KMS diferente, deverá conceder a permissão de função do IAM para usar a Chave do KMS de destino. Para ter mais informações, consulte Etapa 4: permitir que a função do IAM use as Chaves do KMS necessárias (conta de destino).
-
Na seção Copy action (Copiar ação), defina as ações de cópia de snapshots que a política deve executar quando for ativada. A política pode copiar snapshots para até três regiões. Especifique uma regra de cópia separada para cada região de destino. Para cada regra que você adicionar, faça o seguinte:
-
Para Name (Nome), insira um nome descritivo para a ação de cópia.
-
Em Target Region (Região de destino), selecione a região para a qual deseja copiar os snapshots.
-
Em Expire, especifique por quanto tempo manter as cópias de snapshot na região de destino após a criação.
-
Para criptografar a cópia do snapshot, Em Encryption (Criptografia), selecione Enable encryption (Habilitar criptografia). Se o snapshot de origem estiver criptografado ou se a criptografia por padrão estiver habilitada para a sua conta, a cópia do snapshot será sempre criptografada, mesmo que você não habilite a criptografia aqui. Se o snapshot de origem não estiver criptografado e a criptografia por padrão não estiver habilitada para sua conta, será possível optar por ativar ou desativar a criptografia. Se você habilitar a criptografia, mas não especificar uma Chave do KMS, os snapshots serão criptografados usando a Chave do KMS de criptografia padrão em cada região de destino. Se você especificar uma Chave do KMS para a região de destino, deverá ter acesso à Chave do KMS.
-
Para adicionar outras ações de cópia de snapshot, escolha Add New Regions (Adicionar novas regiões).
-
Em Policy status after creation (Status da política após a criação), selecione Enable policy (Habilitar política) para iniciar as execuções da política no próximo horário agendado ou Disable policy (Desabilitar política) para impedir que a política seja executada. Se você não habilitar a política agora, ela não começará a copiar snapshots até que você a ative manualmente após a criação.
-
Escolha Create policy (Criar política).
- Command line
-
Use o comando create-lifecycle-policy para criar uma política de ciclo de vida. Para criar uma política de eventos de cópia entre contas, para PolicyType
, especifique EVENT_BASED_POLICY
.
Por exemplo, o comando a seguir cria uma política de eventos de cópia entre contas na conta de destino 222222222222
. A política copia snapshots que são compartilhados pela conta de origem 111111111111
. A política copia snapshots para sa-east-1
e eu-west-2
. Os snapshots copiados para sa-east-1
são criptografados e retidos por 3 dias. Os snapshots copiados para eu-west-2
são criptografados usando a Chave do KMS 8af79514-350d-4c52-bac8-8985e84171c7
e são retidos por 1 mês. A política usa a função padrão do IAM.
$
aws dlm create-lifecycle-policy \
--description "Copy policy"
\
--state ENABLED \
--execution-role-arn arn:aws:iam::222222222222:role/service-role/AWSDataLifecycleManagerDefaultRole
\
--policy-details file://policyDetails.json
O exemplo a seguir mostra o conteúdo do arquivo policyDetails.json
.
{
"PolicyType" : "EVENT_BASED_POLICY",
"EventSource" : {
"Type" : "MANAGED_CWE",
"Parameters": {
"EventType" : "shareSnapshot",
"SnapshotOwner": ["111111111111
"]
}
},
"Actions" : [{
"Name" :"Copy Snapshot to Sao Paulo and London",
"CrossRegionCopy" : [{
"Target" : "sa-east-1
",
"EncryptionConfiguration" : {
"Encrypted" : false
},
"RetainRule" : {
"Interval" : 3
,
"IntervalUnit" : "DAYS
"
}
},
{
"Target" : "eu-west-2
",
"EncryptionConfiguration" : {
"Encrypted" : true
,
"CmkArn" : "arn:aws:kms:eu-west-2:222222222222:key/8af79514-350d-4c52-bac8-8985e84171c7
"
},
"RetainRule" : {
"Interval" : 1
,
"IntervalUnit" : "MONTHS
"
}
}]
}]
}
Se a solicitação for bem-sucedida, o comando retornará o ID da política recém-criada. O seguinte é um exemplo de saída.
{
"PolicyId": "policy-9876543210abcdef0"
}
Se você estiver copiando snapshots criptografados, deverá conceder à função do IAM (que você selecionou na etapa anterior) permissões para usar a chave gerenciada pelo cliente que foi usada para criptografar o volume de origem.
Execute esta etapa somente se você estiver copiando snapshots criptografados. Se você estiver copiando snapshots não criptografados, ignore esta etapa.
Use um dos métodos a seguir para adicionar as políticas necessárias à função do IAM.
- Console
-
-
Abra o console do IAM em https://console.aws.amazon.com/iam/.
-
No painel de navegação, selecione Settings (Configurações). Pesquise e selecione a função do IAM selecionada ao criar a política de eventos de cópia entre contas na etapa anterior. Se você optou por usar a função padrão, a função será nomeada AWSDataLifecycleManagerDefaultRole.
-
Escolha Add inline policy (Adicionar política em linha) e, em seguida, a guia JSON.
-
Substitua a política existente pela a seguir, e especifique o ARN da chave de KMS que foi usada para criptografar os volumes de origem e que foi compartilhado com você pela conta de origem na Etapa 2.
Se você estiver copiando de várias contas de origem, deverá especificar o ARN da chave de KMS correspondente a partir de cada conta de origem.
No exemplo a seguir, a política concede a permissão de função do IAM para usar a Chave do KMS1234abcd-12ab-34cd-56ef-1234567890ab
, que foi compartilhada pela conta de origem 111111111111
e Chave do KMS4567dcba-23ab-34cd-56ef-0987654321yz
que existem na conta de destino 222222222222
.
Para seguir o princípio de menor privilégio, não permita acesso total a kms:CreateGrant
. Em vez disso, use a chave de condição kms:GrantIsForAWSResource
para permitir que o usuário crie concessões na chave do KMS somente quando a concessão for criada em nome do usuário por um serviço da AWS, conforme mostrado no exemplo a seguir.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:RevokeGrant",
"kms:CreateGrant",
"kms:ListGrants"
],
"Resource": [
"arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab
",
"arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz
"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": [
"arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab
",
"arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz
"
]
}
]
}
-
Escolha Review policy (Revisar política)
-
Para Name (Nome), insira um nome descritivo para a política e escolha Create policy (Criar política).
- Command line
-
Usando seu editor de texto preferido, crie um novo arquivo JSON chamado policyDetails.json
. Adicione a política a seguir e especifique o ARN da chave de KMS que foi usada para criptografar os volumes de origem e que foi compartilhada com você pela conta de origem na Etapa 2.
Se você estiver copiando de várias contas de origem, deverá especificar o ARN da chave de KMS correspondente a partir de cada conta de origem.
No exemplo a seguir, a política concede a permissão de função do IAM para usar a Chave do KMS1234abcd-12ab-34cd-56ef-1234567890ab
, que foi compartilhada pela conta de origem 111111111111
e Chave do KMS4567dcba-23ab-34cd-56ef-0987654321yz
que existem na conta de destino 222222222222
.
Para seguir o princípio de menor privilégio, não permita acesso total a kms:CreateGrant
. Em vez disso, use a chave de condição kms:GrantIsForAWSResource
para permitir que o usuário crie concessões na chave do KMS somente quando a concessão for criada em nome do usuário por um serviço da AWS, conforme mostrado no exemplo a seguir.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:RevokeGrant",
"kms:CreateGrant",
"kms:ListGrants"
],
"Resource": [
"arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab
",
"arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz
"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": [
"arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab
",
"arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz
"
]
}
]
}
Salve e feche o arquivo . Em seguida, use o comando put-role-policy para adicionar a política à função do IAM.
Por exemplo
$
aws iam put-role-policy \
--role-name AWSDataLifecycleManagerDefaultRole
\
--policy-name CopyPolicy
\
--policy-document file://AdminPolicy.json
Especificar filtros de descrição de snapshot
Quando você cria a política de cópia de snapshot na conta de destino, especifique um filtro de descrição de snapshot. O filtro de descrição do snapshot permite especificar um nível adicional de filtragem que permite controlar quais snapshots são copiados pela política. Isso significa que um snapshot só será copiado pela política se for compartilhado por uma das contas de origem especificadas e tiver uma descrição de snapshot que corresponda ao filtro especificado. Em outras palavras, se um snapshot for compartilhado por uma das contas de curso especificadas, mas não tiver uma descrição que corresponda ao filtro especificado, ele não será copiado pela política.
A descrição do filtro de snapshot deve ser especificada usando uma expressão regular. É um campo obrigatório ao criar políticas de eventos de cópia entre contas usando o console e a linha de comando. A seguir estão exemplos de expressões regulares que podem ser usadas:
-
.*
—Esse filtro corresponde a todas as descrições de snapshot. Se você usar essa expressão, a política copiará todos os snapshots compartilhados por uma das contas de origem especificadas.
-
Created for policy: policy-0123456789abcdef0.*
—Este filtro corresponde apenas aos snapshots criados por uma política com um ID de policy-0123456789abcdef0
. Se você usar uma expressão como esta, apenas snapshots que são compartilhados com sua conta por uma das contas de origem especificadas e que foram criados por uma política com o ID especificado serão copiados pela política.
-
.*production.*
—Esse filtro corresponde a qualquer snapshot que tenha a palavra production
em qualquer lugar em sua descrição. Se você usar essa expressão, a política copiará todos os snapshots compartilhados por uma das contas de origem especificadas e que tenham o texto especificado em sua descrição.
Considerações sobre políticas de cópia de snapshot entre contas
As seguintes considerações se aplicam às políticas de eventos de cópia entre contas:
-
Você só pode copiar snapshots não criptografados ou criptografados usando uma chave gerenciada pelo cliente.
-
É possível criar uma política de eventos de cópia entre contas para copiar snapshots compartilhados fora do Amazon Data Lifecycle Manager.
-
Se você quiser criptografar snapshots na conta de destino, a função do IAM selecionada para a política de eventos de cópia entre contas deve ter permissão para usar a Chave do KMS necessária.
Recursos adicionais
Para obter mais informações, consulte Automatização da cópia de snapshots do Amazon EBS criptografados entre contas da AWS no blog de armazenamento da AWS.