Registrar um local - Amazon Simple Storage Service

Registrar um local

Depois de criar uma instância da funcionalidade Concessões de Acesso do Amazon S3 em uma Região da AWS em sua conta, você pode registrar um local do S3 nessa instância. Um local é um recurso do S3 que contém dados aos quais você deseja conceder acesso. Você pode registrar o local padrão s3://, que incluir todos os seus buckets na Região da AWS, depois restringir o escopo de acesso por meio de concessões de acesso individuais. Você também pode registrar um bucket específico, ou um bucket e um prefixo, como um local.

Primeiro, você deve registrar pelo menos um local com a instância da funcionalidade Concessões de Acesso do S3 antes de poder criar concessões de acesso. Ao registrar um local, você também deve especificar o perfil do AWS Identity and Access Management (IAM) que a funcionalidade Concessões de Acesso do S3 assume para atender às solicitações de tempo de execução do local e reduzir o escopo das permissões até a concessão específica no tempo de execução.

URI do S3 IAM role (Perfil do IAM) Descrição
s3:// Default-IAM-role

O local padrão s3:// inclui todos os buckets na Região da AWS.

s3://DOC-EXAMPLE-BUCKET1/ IAM-role-For-bucket

Esse local inclui todos os objetos no bucket especificado.

Antes de poder registrar um local, 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.

    Para adicionar um prefixo a um bucket, consulte Criar nomes de chave de objeto.

  • Crie um perfil do IAM e conceda à entidade principal de serviço da funcionalidade Concessões de Acesso do S3 acesso a esse perfil no arquivo da política de recursos. 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", "sts:SetContext"], "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 user input placeholders por suas próprias informações.

    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 fazer isso, substitua o ARN da instância da funcionalidade Concessões de Acesso do S3 na declaração de condição pelo ARN da instância da funcionalidade Concessões 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"] } } }, { "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.

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
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação, escolha Access Grants.

  3. 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.

    1. 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.

    2. 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 e sts: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.

    3. Para finalizar, escolha Próximo ou Registrar local.

  4. 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 user input placeholders por suas próprias informações.

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 \ --region us-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 user input placeholders por suas próprias informações.

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: InstanceArn) na política do IAM. Ao usar o exemplo de política a seguir, substitua os user input placeholders por suas próprias informações.

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-scope s3:// \ --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-scope s3://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 user input placeholders por suas próprias informações.

Java

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 user input placeholders por suas próprias informações.

exemplo Registrar um local padrão

Solicitação:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://") .iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Resposta:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:11.027Z, 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

Solicitação:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://DOC-BUCKET-EXAMPLE/") .iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Resposta:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:10.027Z, AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666, LocationScope= s3://test-bucket-access-grants-user123/, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )