Como posso acessar um bucket em outra conta usando um ponto de acesso S3 restrito a uma VPC?

5 minuto de leitura
0

Tenho uma entidade e um bucket do AWS Identity and Access Management (IAM) em diferentes contas da AWS. Quero conceder à entidade do IAM acesso entre contas ao bucket usando um ponto de acesso do Amazon Simple Storage Service (Amazon S3) restrito a uma Amazon Virtual Private Cloud (Amazon VPC).

Resolução

Para conceder a um perfil ou usuário do IAM em uma conta da AWS (Conta A) acesso a um bucket do Amazon S3 em outra conta da AWS (Conta B) usando um ponto de acesso S3 restrito a uma Amazon VPC, faça o seguinte:

  1. Crie e conecte um ponto de acesso Amazon S3 ao bucket na Conta B.
  2. Crie um endpoint do Amazon S3 VPC Gateway na Conta A.
  3. Anexe as políticas do ponto de acesso, do bucket e do IAM.

Crie e conecte um ponto de acesso Amazon S3 ao bucket na Conta B

  1. Abra o console do Amazon S3.
  2. No painel de navegação, escolha Access Points (Pontos de acesso).
  3. Escolha Create access point (Criar ponto de acesso).
  4. Em Access point name (Nome do ponto de acesso), insira um nome para o ponto de acesso. Para obter mais informações, consulte Regras para nomear pontos de acesso do Amazon S3.
  5. Em Bucket name (Nome do bucket), insira o nome do bucket da Conta B ao qual deseja conectar o ponto de acesso.
  6. Escolha Virtual Private Cloud (VPC) (Nuvem Privada Virtual (VPC)) para aNetwork Origin (Origem da rede).
  7. Para VPC ID, insira o ID da VPC da primeira conta da AWS (Conta A).
  8. Em Block Public Access settings for this Access Point (Bloquear configurações de acesso público para este ponto de acesso), escolha as configurações de bloqueio de acesso público que você deseja aplicar ao ponto de acesso. 
    Observação: atualmente, o Amazon S3 não oferece suporte à alteração das configurações de bloqueio de acesso público de um ponto de acesso após a criação do ponto de acesso.
  9. Deixe a Access Point policy (Política de pontos de acesso) em branco.
  10. Escolha Create access point (Criar ponto de acesso).

Criar um endpoint do Amazon S3 VPC Gateway na Conta A

Crie um endpoint da VPC do S3 Gateway na conta inicial da AWS (Conta A) na mesma região do bucket ao qual você está concedendo acesso entre contas.

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, escolha Endpoints.
  3. Escolha Create endpoint (Criar endpoint).
  4. Em Service category (Categoria serviço), escolha AWS services (serviços da AWS).
  5. Em Services (Serviços), adicione o filtro Type: Gateway (Tipo: gateway) e selecione a mesma região usada para criar o ponto de acesso.
  6. Em VPC, escolha a mesma VPC usada para criar o ponto de acesso.
  7. Em Route tables (tabelas de rotas), escolha as tabelas de rotas a serem usadas pelo endpoint.
  8. Escolha a Política de Full access (acesso completo). Ou escolha Custom (Personalizado) e certifique-se de que a política permita as ações necessárias do S3.

Observação: os endpoints do Gateway não permitem acesso de outras regiões da AWS. Abaixo está um exemplo de política de endpoint da VPC que permite todas as ações do S3 em todos os buckets:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:*"
 }]
}

Anexar as políticas de ponto de acesso, bucket e IAM

Para permitir o acesso entre contas da entidade do IAM da conta inicial da AWS (Conta A) ao bucket da outra conta da AWS (Conta B) por meio do ponto de acesso, você deve conceder permissões do ponto de acesso, do bucket e das políticas do IAM. Abaixo estão as políticas que concedem as permissões necessárias para cada uma.

Política de pontos de acesso:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "DelegateControlToAccessPoint",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
  ]
 }]
}

Observação: esta política concede ao usuário ou perfil do IAM da conta da AWS de origem (Conta A) permissão para o ponto de acesso na conta da AWS de destino (Conta B).

Política de bucket:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccess",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:GetObject",
   "s3:ListBucket",
   "s3:PutObject"
  ],
  "Resource": [
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ],
  "Condition": {
   "StringEquals": {
    "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
   }
  }
 }]
}

Observação: esta política concede ao usuário do IAM da conta da AWS de origem (Conta A) permissão para o bucket (Conta B) usando o ponto de acesso.

Política do IAM

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccessToBucketAndAP",
  "Effect": "Allow",
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ]
 }]
}

Observação: esta política do IAM anexada ao perfil ou usuário do IAM da conta da AWS de origem (Conta A) concede permissão ao bucket e ao ponto de acesso da conta da AWS de destino (Conta B).

Exemplos de comandos da CLI da AWS para realizar operações do S3 no bucket usando o ponto de acesso:

Observação: se você receber erros ao executar os comandos da AWS CLI, utilize a versão mais recente da AWS CLI.

Lista:

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Carregar:

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Download:

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

Observação: a solicitação deve ser originada de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) na VPC e na mesma região do bucket.


AWS OFICIAL
AWS OFICIALAtualizada há um ano