Configurar políticas do IAM para usar pontos de acesso para buckets de diretório
Os pontos de acesso comportam 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 outras condições. Para que uma aplicação ou usuário acesse objetos por meio de um ponto de acesso, tanto o ponto de acesso quanto o a política do bucket subjacente devem permitir a solicitação.
Importante
Adicionar um ponto de acesso a um bucket não altera o comportamento do bucket quando ele é acessado diretamente pelo nome do bucket. 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 ou em um escopo de ponto de acesso se aplicam somente a solicitações feitas por meio desse ponto de acesso.
Ao usar políticas de recursos do IAM, solucione avisos de segurança, erros, avisos gerais e sugestões do AWS Identity and Access Management Access Analyzer antes de salvar a política. O IAM Access Analyzer executa verificações de política para validar sua política em relação à gramática das políticas e às práticas recomendadas do IAM. Essas verificações geram descobertas e fornecem recomendações que ajudam a criar políticas que sejam funcionais e estejam em conformidade com as práticas recomendadas de segurança.
Para saber mais sobre a validação de políticas usando o IAM Access Analyzer, consulte Validação de políticas do IAM Access Analyzer no Guia do usuário do IAM. Para visualizar uma lista de avisos, erros e sugestões retornados pelo IAM Access Analyzer, consulte Referência de verificação de políticas do IAM Access Analyzer.
Exemplos de política de ponto de acesso para buckets de diretório
As políticas de ponto de acesso a seguir demonstram como controlar as solicitações um bucket de diretório. As políticas de ponto de acesso exigem ARNs de bucket ou ARNs de ponto de acesso. Não é possível usar aliases de ponto de acesso nas políticas. Abaixo é apresentado um exemplo de ARN de ponto de acesso:
arn:aws:s3express:
region
:account-id
:accesspoint/myaccesspoint
--zoneID
--xa-s3
Você pode visualizar o ARN do ponto de acesso nos detalhes do ponto de acesso. Para obter mais informações, consulte Visualizar detalhes dos pontos de acesso para buckets de diretório.
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:
-
(Recomendado) Delegue o controle de acesso do bucket para o ponto de acesso conforme descrito em Delegar controle de acesso a pontos de acesso.
-
Adicione as mesmas permissões contidas na política de ponto de acesso à política do bucket subjacente.
exemplo 1: política de controle de serviços para limitar os pontos de acesso a origens de rede de VPC
A política de controle de serviços a seguir requer que todos os novos pontos de acesso sejam criados com uma origem de rede de nuvem privada virtual (VPC). Com essa política em vigor, os usuários da sua organização não podem criar nenhum ponto de acesso acessível pela internet.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3express:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }
exemplo 2: política de ponto de acesso para limitar o acesso ao bucket por pontos de acesso com uma origem de rede da VPC
A política de ponto de acesso a seguir limita todo o acesso ao bucket amzn-s3-demo-bucket--zoneID--x-s3
por um ponto de acesso com uma origem de rede da VPC.
{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Action": "s3express:CreateSession", "Effect": "Deny", "Resource": "arn:aws:s3express:
region
:111122223333
:bucket/amzn-s3-demo-bucket--zoneID--x-s3", "Condition": { "StringNotEqualsIfExists": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }
Chaves de condição
Os pontos de acesso para buckets de diretório têm chaves de condição que podem ser usadas em políticas do IAM para controlar o acesso aos recursos. As chaves de condição a seguir representam somente parte de uma política do IAM. Para obter exemplos de políticas completas, consulte Exemplos de política de ponto de acesso para buckets de diretório, Delegar controle de acesso a pontos de acesso e Conceder permissões para pontos de acesso entre contas.
s3express:DataAccessPointArn
-
Este exemplo mostra como filtrar o acesso pelo nome do recurso da Amazon (ARN) de um ponto de acesso e faz a correspondência com todos os pontos de acesso referentes à Conta da AWS
111122223333
na regiãoregion
:"Condition" : { "StringLike": { "s3express:DataAccessPointArn": "arn:aws:s3express:
region
:111122223333
:accesspoint/*" } } s3express:DataAccessPointAccount
-
Este exemplo mostra um operador de string que você pode utilizar para estabelecer correspondência com o ID da conta do proprietário de um ponto de acesso. O exemplo a seguir estabelece correspondência com todos os pontos de acesso pertencentes à Conta da AWS
.111122223333
"Condition" : { "StringEquals": { "s3express:DataAccessPointAccount": "
111122223333
" } } s3express:AccessPointNetworkOrigin
-
Este exemplo mostra um operador de string que você pode utilizar para estabelecer correspondência com a origem da rede,
Internet
ouVPC
. O exemplo a seguir corresponde apenas a pontos de acesso com uma origem de VPC."Condition" : { "StringEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } }
s3express:Permissions
-
Você pode usar
s3express:Permissions
para restringir o acesso a operações de API no escopo do ponto de acesso. As seguintes operações de API são compatíveis:PutObject
GetObject
DeleteObject
ListBucket
(obrigatório paraListObjectsV2
)GetObjectAttributes
AbortMultipartUpload
ListBucketMultipartUploads
ListMultipartUploadParts
nota
Ao utilizar chaves de condição de vários valores, recomendamos que você use
ForAllValues
com instruçõesAllow
eForAnyValue
com instruçõesDeny
. Para obter mais informações, consulte Chaves de contexto de múltiplos valores no “Guia do usuário do IAM”.
Consulte mais informações sobre como usar chaves de condição com o Amazon S3 em Actions, resources, and condition keys for Amazon S3 na Referência de autorização do serviço.
Para ter mais informações sobre as permissões para operações de API do S3 de acordo com os tipos de recurso do S3, consulte Permissões obrigatórias para operações de API do Amazon S3.
Delegar controle de acesso a pontos de acesso
É possível delegar o controle de acesso da política de bucket à política de ponto de acesso. O exemplo de política de bucket a seguir permite acesso total a todos os pontos de acesso pertencentes à conta do proprietário do bucket. Após a aplicação da política, todo acesso a esse bucket é controlado por políticas de ponto 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 que delega controle de acesso a pontos de acesso
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "
Bucket ARN
", "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount" : "Bucket owner's account ID
" } } }] }
Conceder permissões para pontos de acesso entre contas
Para criar um ponto de acesso para um bucket pertencente a outra conta, primeiro você deve criar o ponto de acesso especificando o nome do bucket e o ID do proprietário da conta. Depois, o proprietário do bucket deve atualizar a política do bucket para autorizar solicitações do ponto de acesso. Criar um ponto de acesso é semelhante à criação de um DNS CNAME, pois o ponto de acesso não fornece acesso ao conteúdo do bucket. Todo acesso ao bucket é controlado pela política de bucket. O exemplo de política de bucket a seguir permite solicitações GET
e LIST
no bucket de um ponto de acesso pertencente a uma Conta da AWS confiável.
Substitua Bucket ARN
pelo ARN do bucket.
exemplo de política de bucket que delega permissões a outra Conta da AWS
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "s3express:CreateSession", "Resource" : [ "
Bucket ARN
" ], "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount": "Access point owner's account ID
" }, "ForAllValues:StringEquals": { "s3express:Permissions": [ "GetObject", "ListBucket" ] } } }] }