Configurar políticas do IAM para uso de pontos de acesso - Amazon Simple Storage Service

Configurar políticas do IAM para uso de pontos de acesso

Os pontos de acesso do Amazon S3 são compatíveis com as políticas de recursos do AWS Identity and Access Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou por outras condições. Para que um aplicativo ou usuário possa acessar objetos por meio de um ponto de acesso, tanto o ponto de acesso quanto o bucket subjacente devem permitir a solicitação.

Importante

Adicionar um ponto de acesso S3 a um bucket não altera o comportamento do bucket quando acessado por meio do nome de bucket existente ou do ARN. Todas as operações existentes no bucket continuarão a funcionar como antes. As restrições que você incluir em uma política de ponto de acesso se aplicam somente a solicitações feitas por meio desse ponto de acesso.

Chaves de condição

Os pontos de acesso do S3 apresentam três novas chaves de condição que podem ser usadas em políticas do IAM para controlar o acesso aos recursos:

s3:DataAccessPointArn

Esta é uma string que você pode usar para corresponder um ARN de ponto de acesso. O exemplo a seguir estabelece a correspondência de todos os pontos de acesso da Conta da AWS 123456789012 na região us-west-2:

"Condition" : { "StringLike": { "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*" } }
s3:DataAccessPointAccount

Este é um operador de string que você pode utilizar para corresponder o ID da conta do proprietário de um ponto de acesso. O exemplo a seguir estabelece a correspondência de todos os pontos de acesso pertencentes à Conta da AWS 123456789012.

"Condition" : { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } }
s3:AccessPointNetworkOrigin

Este é um operador de string que você pode utilizar para corresponder a origem da rede, Internet ou VPC. O exemplo a seguir corresponde apenas a pontos de acesso com uma origem de VPC.

"Condition" : { "StringEquals": { "s3:AccessPointNetworkOrigin": "VPC" } }

Para obter mais informações sobre o uso de chaves de condição com o Amazon S3, consulte Ações, recursos e chaves de condição do Amazon S3.

Delegar controle de acesso a pontos de acesso

Você pode delegar o controle de acesso de um bucket aos pontos de acesso do bucket. A política de bucket de exemplo a seguir permite acesso total a todos os pontos de acesso pertencentes à conta do proprietário do bucket. Assim, todo o acesso a esse bucket é controlado pelas políticas anexadas aos seus pontos de acesso. Recomendamos configurar seus buckets dessa maneira para todos os casos de uso que não exigem acesso direto ao bucket.

exemplo Política de bucket para delegar controle de acesso a pontos de acesso

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

Exemplos de política de ponto de acesso

Os exemplos a seguir demonstram como criar políticas do IAM para controlar solicitações feitas por meio de um ponto de acesso.

nota

As permissões concedidas em uma política de ponto de acesso entram em vigor somente se o bucket subjacente também permitir o mesmo acesso. É possível fazer isso de duas maneiras:

  1. (Recomendado) Delegue o controle de acesso do bucket para o ponto de acesso conforme descrito em Delegar controle de acesso a pontos de acesso.

  2. Adicione as mesmas permissões contidas na política de ponto de acesso à política do bucket subjacente. O primeiro exemplo de política de ponto de acesso demonstra como modificar a política de bucket subjacente para permitir o acesso necessário.

exemplo Concessão da política de ponto de acesso

A política de ponto de acesso a seguir concede ao usuário do IAM Alice na conta 123456789012 permissões para objetos GET e PUT com o prefixo Alice/ por meio do ponto de acesso my-access-point em uma conta 123456789012.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Alice/*" }] }
nota

Para que a política de ponto de acesso conceda efetivamente acesso ao usuário Alice, o bucket subjacente também deve permitir o mesmo acesso a Alice. É possível delegar o controle de acesso do bucket para o ponto de acesso conforme descrito em Delegar controle de acesso a pontos de acesso. Ou é possível adicionar a seguinte política ao bucket subjacente para conceder as permissões necessárias à Alice. Observe que a entrada Resource é diferente entre as políticas de ponto de acesso e bucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/Alice/*" }] }

exemplo Política de ponto de acesso com condição de tag

A política de ponto de acesso a seguir concede ao usuário do IAM Bob na conta 123456789012 permissões para objetos GET por meio do ponto de acesso my-access-point na conta 123456789012 que possui a chave de tag data definida com um valor finance.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal" : { "AWS": "arn:aws:iam::123456789012:user/Bob" }, "Action":"s3:GetObject", "Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*", "Condition" : { "StringEquals": { "s3:ExistingObjectTag/data": "finance" } } }] }

exemplo Política de ponto de acesso permitindo a listagem de bucket

A política de ponto de acesso a seguir permite que o usuário do IAM Charles na conta 123456789012 visualize os objetos contidos no ponto de acesso subjacente do bucket my-access-point na conta 123456789012.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Charles" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point" }] }

exemplo Política de controle de serviço

A política de controle de serviço a seguir requer que todos os novos pontos de acesso sejam criados com uma origem de rede da VPC. Com essa política em vigor, os usuários da sua organização não podem criar novos pontos de acesso acessíveis da Internet.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } }] }

exemplo Política de bucket para limitar operações do S3 às origens de rede da VPC

A política de bucket a seguir limita o acesso a todas as operações de objeto do S3 para o bucket examplebucket para pontos de acesso com uma origem de rede da VPC.

Importante

Antes de usar uma instrução como este exemplo, certifique-se de que você não precisa usar recursos que não são compatíveis com pontos de acesso, como replicação entre regiões.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:AbortMultipartUpload", "s3:BypassGovernanceRetention", "s3:DeleteObject", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:DeleteObjectVersionTagging", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectLegalHold", "s3:GetObjectRetention", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionAcl", "s3:PutObjectVersionTagging", "s3:RestoreObject" ], "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } } ] }