Registrar um local
Depois de criar uma instância do recurso Concessão de Acesso do Amazon S3 em uma Região da AWS na sua conta, registre uma localidade do S3 nessa instância. Uma localização do recurso Concessão de Acesso do S3 associa a localização padrão do S3 (s3://
), um bucket ou um prefixo a um perfil do AWS Identity and Access Management (IAM). O recurso Concessão de Acesso do S3 assume esse perfil do IAM para distribuir credenciais temporárias ao beneficiário que está acessando aquela localização específica. Primeiro, é necessário registrar pelo menos uma localização na instância do recurso Concessão de Acesso do S3 para poder criar uma concessão de acesso.
Caso de uso recomendado
Recomendamos registrar a localização padrão (s3://
) e associá-la a um perfil do IAM. A localização no caminho padrão do S3 (s3://
) abrange o acesso a todos os seus buckets do S3 nessa Região da AWS da sua conta. Ao criar uma concessão de acesso, é possível restringir o escopo da concessão a um bucket, um prefixo ou um objeto dentro da localização padrão.
Casos de uso de gerenciamento de acesso complexo
Casos de uso de gerenciamento de acesso mais complexos podem exigir que você registre mais do que a localização padrão. Alguns exemplos desses casos de uso são:
-
Suponha que
amzn-s3-demo-bucket
seja uma localização registrada em sua instância do recurso Concessão de Acesso do S3 com um perfil do IAM associado a ela, mas esse perfil do IAM tenha acesso negado a um prefixo específico no bucket. Nesse caso, é possível registrar o prefixo ao qual o perfil do IAM não tem acesso como uma localização separada e associar essa localização a um perfil do IAM diferente com o acesso necessário. -
Suponha que você queira criar concessões que restrinjam o acesso apenas aos usuários em um endpoint de nuvem privada virtual (VPC). Nesse caso, é possível registrar uma localização para um bucket no qual o perfil do IAM restringe o acesso ao endpoint da VPC. Posteriormente, quando um beneficiário solicita credenciais ao recurso Concessão de Acesso do S3, ele assume o perfil do IAM da localização para distribuir credenciais temporárias. Essa credencial negará acesso ao bucket específico, a menos que o chamador esteja dentro do endpoint da VPC. Essa permissão de negação é aplicada além da permissão READ, WRITE ou READWRITE normal especificada na concessão.
Ao registrar uma localização, também é necessário especificar o perfil do IAM que o recurso Concessão de Acesso do S3 assume para distribuir credenciais temporárias e definir o escopo das permissões de uma concessão específica.
Se seu caso de uso exigir que você registre várias localizações em sua instância do recurso Concessão de Acesso do S3, você poderá registrar qualquer um dos seguintes:
URI do S3 | IAM role (Perfil do IAM) | Descrição |
---|---|---|
s3:// |
|
O local padrão |
s3:// |
|
Esse local inclui todos os objetos no bucket especificado. |
s3:// |
|
Essa localização inclui todos os objetos no bucket com um nome de chave de objeto que começa com esse prefixo. |
Para registrar um bucket ou um prefixo específico, faça o seguinte:
-
Crie um ou mais buckets que contenham os dados aos quais você deseja conceder acesso. Esses buckets devem estar localizados na mesma Região da AWS da instância da funcionalidade Concessões de Acesso do S3. Para mais informações, consulte Criar um bucket.
Adicionar um prefixo é uma etapa opcional. Os prefixos são strings no início do nome da chave de um objeto. É possível usá-los para organizar objetos no bucket, bem como para gerenciar o acesso. Para adicionar um prefixo a um bucket, consulte Criar nomes de chave de objeto.
-
Crie um perfil do IAM com as permissões para acessar os dados do S3 na Região da AWS. Para ter mais informações, consulte Criação de funções do IAM no Guia do usuário do AWS IAM Identity Center.
Na política de confiança do perfil do IAM, dê à entidade principal do serviço Concessão de Acesso do S3 (
access-grants.s3.amazonaws.com
) acesso ao perfil do IAM que você criou. Para fazer isso, você pode criar um arquivo JSON que contém as instruções a seguir. Para adicionar a política de confiança à sua conta, consulte Criar uma função usando políticas de confiança personalizadas.TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"}, "Condition":{ "StringEquals":{ "aws:SourceAccount":"
accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" } //Optionally, for an IAM Identity Center use case, add: "ForAnyValue:StringEquals": { "aws:RequestContextProvider":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }-
Crie uma política do IAM para anexar permissões do Amazon S3 ao perfil do IAM que você criou. Confira o exemplo de arquivo
iam-policy.json
a seguir e substitua os
por suas próprias informações.user input placeholders
nota
-
Se você usa criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) para criptografar os dados, o exemplo a seguir inclui as permissões do AWS KMS necessárias para o perfil do IAM na política. Se você não usa esse recurso, remova essas permissões da política do IAM.
-
Você pode restringir um perfil do IAM para acessar dados do S3 somente se as credenciais forem fornecidas pela funcionalidade Concessões de Acesso do S3. Este exemplo mostra como adicionar uma instrução
Condition
para uma instância específica da funcionalidade Concessões de Acesso do S3. Para usar essaCondition
, substitua o ARN da instância do recurso Concessão de Acesso do S3 na declaraçãoCondition
pelo ARN da instância do recurso Concessão de Acesso do S3, que tem o formato:arn:aws:s3:
.region
:accountId
:access-grants/default
iam-policy.json
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "
accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region
:accountId
:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Região da AWS
:accountId
:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Região da AWS
:accountId
:access-grants/default"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] } -
Você pode registrar um local na instância da funcionalidade Concessões de Acesso do S3 usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 ou os AWS SDKs.
nota
Depois de registrar a primeira localização na sua instância do recurso Concessão de Acesso do S3, ela ainda não terá nenhuma concessão de acesso individual. Para criar uma concessão de acesso, consulte Criar concessões.
Antes de poder conceder acesso aos dados do S3 com a funcionalidade Concessões de Acesso do S3, é necessário ter pelo menos um local registrado.
Como registrar um local em uma instância da funcionalidade Concessões de Acesso do S3
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
No painel de navegação, escolha Access Grants.
-
Na página Concessões de Acesso do S3, escolha a região que contém a instância da funcionalidade Concessões de Acesso do S3 com a qual você deseja trabalhar.
Se você estiver usando a instância da funcionalidade Concessões de Acesso do S3 pela primeira vez, conclua a Etapa 1: Criar uma instância da funcionalidade Concessões de Acesso do S3 e navegue até a Etapa 2 do assistente Configurar instância do Access Grants. Se você já tiver uma instância da funcionalidade Concessões de Acesso do S3, escolha Visualizar detalhes, depois selecione Registrar local na guia Locais.
-
Em Escopo do local, escolha Procurar no S3 ou insira o caminho do URI do S3 para o local que você deseja registrar. Para conferir os formatos de URI do S3, consulte a tabela de formatos de local. Depois de inserir um URI, você pode escolher Visualizar para procurar o local.
-
Em Perfil do IAM, escolha uma das seguintes opções:
-
Escolher entre perfis do IAM existentes
Escolha um perfil do IAM na lista suspensa. Depois de escolher um perfil, selecione Visualizar para garantir que esse perfil tenha as permissões necessárias para gerenciar o local que você está registrando. Especificamente, garanta que esse perfil conceda à funcionalidade Concessões de Acesso do S3 as permissões
sts:AssumeRole
ests:SetSourceIdentity
. -
Inserir ARN do perfil do IAM
Navegue até o console do IAM
. Copie o nome do recurso da Amazon (ARN) do perfil do IAM e cole-o nesta caixa.
-
-
Para finalizar, escolha Próximo ou Registrar local.
-
-
Solucionar problemas:
Não é possível registrar o local
-
O local pode já estar registrado.
Talvez você não tenha a permissão
s3:CreateAccessGrantsLocation
para registrar locais. Entre em contato com o administrador da conta.
-
Para instalar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.
Você pode registrar o local padrão s3://
ou um local personalizado na instância da funcionalidade Concessões de Acesso do S3. Primeiro, crie um perfil do IAM com acesso de entidade principal ao local, depois conceda permissão à funcionalidade Concessões de Acesso do S3 para assumir esse perfil.
Para usar os comandos a seguir, substitua os
por suas próprias informações.user input
placeholders
exemplo Criar uma política de recursos
Crie uma política que permita que a funcionalidade Concessões de Acesso do S3 assuma o perfil do IAM. Para fazer isso, você pode criar um arquivo JSON que contém as instruções a seguir. Para adicionar a política de recursos à sua conta, consulte Criar e anexar sua primeira política gerenciada pelo cliente.
TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
exemplo Criar o perfil
Execute o comando do IAM a seguir para criar o perfil.
aws iam create-role --role-name
accessGrantsTestRole
\ --regionus-east-2
\ --assume-role-policy-document file://TestRolePolicy.json
A execução do comando create-role
retorna a política:
{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::
111122223333
:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }
Crie uma política do IAM para anexar permissões do Amazon S3 ao perfil do IAM. Confira o exemplo de arquivo iam-policy.json
a seguir e substitua os
por suas próprias informações. user input placeholders
nota
Se você usa criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) para criptografar os dados, o exemplo a seguir adiciona as permissões do AWS KMS necessárias para o perfil do IAM na política. Se você não usa esse recurso, remova essas permissões da política do IAM.
Para garantir que o perfil do IAM só possa ser usado para acessar dados no S3 se as credenciais forem fornecidas pela funcionalidade Concessões de Acesso do S3, esse exemplo mostra como adicionar uma instrução Condition
que especifica a instância da funcionalidade Concessões de Acesso do S3 (s3:AccessGrantsInstance:
) na política do IAM. Ao usar o exemplo de política a seguir, substitua os InstanceArn
por suas próprias informações.user input placeholders
iam-policy.json
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "
accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region
:accountId
:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Região da AWS
:accountId
:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Região da AWS
:accountId
:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }
Execute o seguinte comando:
aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
exemplo Registrar o local padrão
aws s3control create-access-grants-location \ --account-id
111122223333
\ --location-scopes3://
\ --iam-role-arn arn:aws:iam::111122223333
:role/accessGrantsTestRole
Resposta:
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:
us-east-2
:111122223333
:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333
:role/accessGrantsTestRole" }
exemplo Registrar um local personalizado
aws s3control create-access-grants-location \ --account-id
111122223333
\ --location-scopes3://DOC-BUCKET-EXAMPLE/
\ --iam-role-arn arn:aws:iam::123456789012
:role/accessGrantsTestRole
Resposta:
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:
us-east-2
:111122223333
:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333
:role/accessGrantsTestRole" }
Para obter informações sobre o suporte à API REST do Amazon S3 para gerenciar instâncias da funcionalidade Concessões de Acesso do S3, consulte as seguintes seções na Referência da API do Amazon Simple Storage Service:
Esta seção fornece exemplos de como registrar locais usando os AWS SDKs.
Para usar os exemplos a seguir, substitua
por suas próprias informações.user input
placeholders