Tenho uma entidade do AWS Identity and Access Management (IAM) e um bucket do Amazon Simple Storage Service (Amazon S3) em diferentes contas da AWS. Quero conceder à entidade IAM acesso entre contas ao bucket por meio de um ponto de acesso do Amazon S3. O ponto de acesso é restrito a uma Amazon Virtual Private Cloud (Amazon VPC).
Breve descrição
Você pode conceder a um perfil ou usuário do IAM em uma conta da AWS acesso a um bucket do Amazon S3 em outra conta da AWS por meio de um ponto de acesso do S3 restrito a uma Amazon VPC.
Suponha que a entidade IAM esteja na Conta A e o bucket do S3 esteja na Conta B. Para conceder à entidade IAM acesso ao bucket por meio de um ponto de acesso do S3 restrito a uma Amazon VPC, conclua as seguintes etapas:
- Crie e conecte um ponto de acesso do Amazon S3 ao bucket na Conta B.
- Crie um endpoint de gateway Amazon S3 VPC na Conta A.
- Anexe políticas ao ponto de acesso, ao bucket e à entidade IAM.
**Observação:**A identidade do IAM na conta A deve estar na mesma região da AWS que o bucket do S3 na conta B.
Solução
Crie e conecte um ponto de acesso do Amazon S3 ao bucket na Conta B
Para criar e anexar um ponto de acesso do Amazon S3 ao bucket na Conta B, conclua as seguintes etapas:
- Abra o console do Amazon S3.
- No painel de navegação, escolha Pontos ** de ** acesso.
- Escolha Criar ponto de acesso.
- Em Nome do ponto de acesso, digite o nome do ponto de acesso. Para obter mais informações sobre como nomear pontos de acesso, consulte Regras para nomear pontos de acesso do Amazon S3.
- Em Nome do bucket, escolha Escolha um bucket nesta conta e insira o nome do bucket ao qual você deseja anexar o ponto de acesso.
- Em Origem da rede, escolha Nuvem privada virtual (VPC).
- Para a ID da VPC, insira a ID da VPC da outra conta da AWS (Conta A).
- Em Bloquear configurações de acesso público para esse ponto de acesso, escolha as configurações de bloqueio de acesso público que você deseja aplicar ao ponto de acesso.
**Observação:**Depois de criar um ponto de acesso, você não pode alterar suas configurações de bloqueio de acesso público.
- Deixe a Política de pontos de acesso em branco.
- Escolha Criar ponto de acesso.
Crie um endpoint de gateway Amazon S3 VPC na Conta A
Para criar um endpoint de gateway S3 VPC na Conta A que conceda acesso ao bucket Amazon S3 na Conta B, conclua as seguintes etapas:
- Abra o console da Amazon VPC.
- No painel de navegação, selecione Endpoints.
- Escolha Criar endpoint.
- Em Categoria de serviço, selecione Serviços da AWS.
- Em Serviços, adicione o filtro Type = Gateway e selecione com.amazonaws.<region>.s3.
- Para VPC, selecione a VPC que você usou para criar o ponto de acesso na Conta B.
- Para Tabelas de rotas, escolha as tabelas de rotas que você precisa que seu endpoint use.
- Em Política, selecione Acesso total para permitir todas as operações por todos os participantes em todos os recursos no endpoint da VPC. Ou selecione Personalizar e use sua própria política que permita as ações necessárias do S3.
Por exemplo, a seguinte política de VPC endpoint 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:*"
}
]
}
**Observação:**Os endpoints do gateway não permitem o acesso de outras regiões da AWS.
Anexe políticas ao ponto de acesso, bucket e entidade IAM
Para conceder à entidade IAM na Conta A acesso ao bucket na Conta B por meio do ponto de acesso, você deve anexar políticas aos seguintes:
- O ponto de acesso
- Um bucket do S3
- A entidade IAM
Política de pontos de acesso
Para conceder permissão à entidade IAM na Conta A ao ponto de acesso S3 na Conta B, anexe a seguinte política ao seu ponto 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"
]
}
]
}
Política de Buckets
Para conceder permissão à entidade IAM na Conta A para o bucket na Conta B por meio do ponto de acesso, anexe a seguinte política ao seu 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"
}
}
}
]
}
Política do IAM
Para conceder permissão à entidade IAM na Conta A ao bucket e ao ponto de acesso na Conta B, anexe a seguinte política à sua entidade 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/*"
]
}
]
}
Exemplo de comandos da CLI da AWS para realizar operações do S3 no bucket por meio do ponto de acesso
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para listar os objetos por meio do ponto de acesso, execute o comando ls:
aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point
Para fazer upload de arquivos pelo ponto de acesso, execute o comando cp:
aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point
Você também pode usar o comando cp para baixar arquivos por meio do ponto de acesso:
aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt
**Observação:**A solicitação deve se originar de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que esteja na mesma VPC e na mesma região do bucket.