Criar concessões - Amazon Simple Storage Service

Criar concessões

Uma concessão de acesso individual em uma instância do recurso Concessão de Acesso do S3 permite que uma identidade específica, ou seja, uma entidade principal do AWS Identity and Access Management (IAM), um usuário ou um grupo em um diretório corporativo, acesse uma localização registrada na instância do recurso Concessão de Acesso do S3. Uma localização associa buckets ou prefixos a um perfil do IAM. O recurso Concessão de Acesso do S3 assume esse perfil do IAM para distribuir credenciais temporárias aos beneficiários.

Depois de registrar pelo menos uma localização na instância do recurso Concessão de Acesso do S3, você poderá criar uma concessão de acesso.

O beneficiário pode ser um usuário ou um perfil do IAM ou um usuário ou um grupo de diretório. Um usuário de diretório é um usuário do seu diretório corporativo ou fonte de identidades externa que você associou à instância do recurso Concessão de Acesso do S3. Para obter mais informações, consulte Concessões de Acesso do S3 e identidades de diretórios corporativos. Para criar uma concessão para um usuário ou um grupo de diretório específico do Centro de Identidade do IAM, encontre o GUID usado para identificar esse usuário no Centro de Identidade do IAM, por exemplo, a1b2c3d4-5678-90ab-cdef-EXAMPLE11111. Para ter mais informações sobre como usar o Centro de Identidade do IAM para visualizar as informações do usuário, consulte View user and group assignments no Manual do usuário do AWS IAM Identity Center.

É possível conceder acesso a um bucket, um prefixo ou um objeto. Um prefixo no Amazon S3 é uma string de caracteres no início de um nome de chave de objeto que é usado para organizar os objetos dentro de um bucket. Pode ser qualquer string de caracteres permitidos, por exemplo, nomes de chave de objeto em um bucket que comece com o prefixo engineering/.

Subprefixo

Ao conceder acesso a uma localização registrada, é possível usar o campo Subprefix para restringir o escopo de acesso a um subconjunto do escopo da localização. Se a localização registrada que você escolher para a concessão for o caminho padrão do S3 (s3://), você deverá restringir o escopo da concessão. Não é possível criar uma concessão de acesso para a localização padrão (s3://), o que concederia ao beneficiário acesso a todos os buckets em uma Região da AWS. Em vez disso, é necessário restringir o escopo da concessão a um dos seguintes:

  • Um bucket: s3://bucket/*

  • Um prefixo em um bucket: s3://bucket/prefix*

  • Um prefixo em um prefixo: s3://bucket/prefixA/prefixB*

  • Um objeto: s3://bucket/object-key-name

Se você estiver criando uma concessão de acesso em que a localização registrada seja um bucket, poderá enviar uma das seguintes opções no campo Subprefix para restringir o escopo da concessão:

  • Um prefixo no bucket: prefix*

  • Um prefixo em um prefixo: prefixA/prefixB*

  • Um objeto: /object-key-name

Depois de criar a concessão, o escopo da concessão exibido no console do Amazon S3 ou o GrantScope exibido na resposta da API ou da AWS Command Line Interface (AWS CLI) é o resultado da concatenação do caminho da localização com o Subprefix. Garanta que esse caminho concatenado seja mapeado corretamente para o bucket, prefixo ou objeto do S3 ao qual você deseja conceder acesso.

nota
  • Se você precisar criar uma concessão de acesso que dê acesso a apenas um objeto, deverá especificar que o tipo de concessão é para um objeto. Para fazer isso em uma chamada de API ou em um comando da CLI, transmita o parâmetro s3PrefixType com o valor Object. No console do Amazon S3, ao criar a concessão, depois de selecionar uma localização, em Escopo da concessão, marque a caixa de seleção O escopo da concessão é um objeto.

  • Não é possível criar uma concessão para um bucket que ainda não existe. No entanto, é possível criar uma concessão para um prefixo que ainda não existe.

  • Para ter o número máximo de concessões que você pode criar na instância do recurso Concessão de Acesso do S3, consulte Limitações da funcionalidade Concessões de Acesso do S3.

Você pode criar uma concessão de acesso usando o console do Amazon S3, a AWS CLI, a API REST do Amazon S3 ou os AWS SDKs.

Como criar uma concessão de acesso
  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 2: Registrar um local e navegue até a Etapa 3 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 Criar concessão na guia Concessões.

    1. Na seção Escopo da concessão, selecione ou insira um local registrado.

      Se você selecionou o local s3:// padrão, use a caixa Subprefixo para restringir o escopo da concessão de acesso. Para obter mais informações, consulte Subprefix. Se você estiver concedendo acesso somente a um objeto, selecione O escopo da concessão é um objeto.

    2. Em Permissões e acesso, selecione o nível de Permissão: Leitura, Gravação ou ambos.

      Depois, escolha o Tipo de beneficiário. Se você adicionou seu diretório corporativo ao Centro de Identidade do IAM e associou essa instância do Centro de Identidade do IAM à instância da funcionalidade Concessões de Acesso do S3, poderá escolher a opção Identidade de diretório do Centro de Identidade do IAM. Se você escolher essa opção, obtenha o ID do usuário ou grupo no Centro de Identidade do IAM e insira-o nesta seção.

      Se o Tipo de beneficiário for um usuário ou perfil do IAM, escolha Entidade principal do IAM. Em Tipo de entidade principal do IAM, escolha Usuário ou Perfil. Depois, em Usuário da entidade principal do IAM, escolha na lista ou insira o ID da identidade.

    3. Para criar a concessão da funcionalidade Concessões de Acesso do S3, escolha Próximo ou Criar concessão.

  4. Se as opções Próximo ou Criar concessão estiverem desabilitadas:

    Não é possível criar concessão
    • Poderá ser necessário registrar um local na instância da funcionalidade Concessões de Acesso do S3 primeiro.

    • Talvez você não tenha a permissão s3:CreateAccessGrant para criar uma concessão de acesso. 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.

Os exemplos a seguir mostram como criar uma solicitação de concessão de acesso para uma entidade principal do IAM e como criar uma solicitação de concessão de acesso para um usuário ou grupo de diretório corporativo.

Para usar os comandos a seguir, substitua os user input placeholders por suas próprias informações.

nota

Se você estiver criando uma concessão de acesso que dá acesso a apenas um objeto, inclua o parâmetro --s3-prefix-type Object necessário.

exemplo Criar uma solicitação de concessão de acesso para uma entidade principal do IAM
aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --access-grants-location-configuration S3SubPrefix=prefixB* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::123456789012:user/data-consumer-3
exemplo Criar uma resposta de concessão de acesso
{"CreatedAt": "2023-05-31T18:41:34.663000+00:00", "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3" }, "AccessGrantsLocationId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "AccessGrantsLocationConfiguration": { "S3SubPrefix": "prefixB*" }, "GrantScope": "s3://DOC-BUCKET-EXAMPLE/prefix*", "Permission": "READ" }
Criar uma solicitação de concessão de acesso para um usuário ou grupo de diretório

Para criar uma solicitação de concessão de acesso para um usuário ou grupo de diretório, primeiro é necessário obter o GUID do usuário ou grupo de diretório por meio da execução de um dos comandos a seguir.

exemplo Obter o GUID de um usuário ou grupo de diretório

Você pode encontrar o GUID de um usuário do Centro de Identidade do IAM por meio do console do Centro de Identidade do IAM ou usando a AWS CLI ou os AWS SDKs. O comando a seguir lista os usuários na instância especificada do Centro de Identidade do IAM, com os respectivos nomes e identificadores.

aws identitystore list-users --identity-store-id d-1a2b3c4d1234

Esse comando lista os grupos na instância especificada do Centro de Identidade do IAM.

aws identitystore list-groups --identity-store-id d-1a2b3c4d1234
exemplo Criar uma concessão de acesso para um usuário ou grupo de diretório

Esse comando é semelhante à criação de uma concessão para usuários ou perfis do IAM, exceto que o tipo de beneficiário é DIRECTORY_USER ou DIRECTORY_GROUP e o identificador do beneficiário é o GUID do usuário ou grupo de diretório.

aws s3control create-access-grant \ --account-id 123456789012 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix="amzn-s3-demo-bucket/rafael/*" \ --permission READWRITE \ --grantee GranteeType=DIRECTORY_USER,GranteeIdentifier=83d43802-00b1-7054-db02-f1d683aacba5 \

Para obter informações sobre o suporte à API REST do Amazon S3 para gerenciar concessões de acesso, consulte as seguintes seções na Referência da API do Amazon Simple Storage Service:

Esta seção fornece exemplos de como criar uma concessão de acesso usando os AWS SDKs.

Java

Para usar o exemplo a seguir, substitua user input placeholders por suas próprias informações.

nota

Se você estiver criando uma concessão de acesso que dá acesso a apenas um objeto, inclua o parâmetro .s3PrefixType(S3PrefixType.Object) necessário.

exemplo Criar uma solicitação de concessão de acesso
public void createAccessGrant() { CreateAccessGrantRequest createRequest = CreateAccessGrantRequest.builder() .accountId("111122223333") .accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa") .permission("READ") .accessGrantsLocationConfiguration(AccessGrantsLocationConfiguration.builder().s3SubPrefix("prefixB*").build()) .grantee(Grantee.builder().granteeType("IAM").granteeIdentifier("arn:aws:iam::111122223333:user/data-consumer-3").build()) .build(); CreateAccessGrantResponse createResponse = s3Control.createAccessGrant(createRequest); LOGGER.info("CreateAccessGrantResponse: " + createResponse); }
exemplo Criar uma resposta de concessão de acesso
CreateAccessGrantResponse( CreatedAt=2023-06-07T05:20:26.330Z, AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, AccessGrantArn=arn:aws:s3:us-east-2:444455556666:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, Grantee=Grantee( GranteeType=IAM, GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3 ), AccessGrantsLocationId=a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa, AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration( S3SubPrefix=prefixB* ), GrantScope=s3://DOC-BUCKET-EXAMPLE/prefixB, Permission=READ )