Solicitar acesso aos dados do Amazon S3 por meio da funcionalidade Concessões de Acesso do S3 - Amazon Simple Storage Service

Solicitar acesso aos dados do Amazon S3 por meio da funcionalidade Concessões de Acesso do S3

Depois de usar a funcionalidade Concessões de Acesso do Amazon S3 para criar uma concessão de acesso que dá acesso aos dados do S3 para as entidades principais do AWS Identity and Access Management (IAM), suas identidades de diretório corporativo ou as aplicações autorizadas, os beneficiários poderão solicitar credenciais para acessar esses dados.

Quando uma aplicação ou AWS service (Serviço da AWS) usa a operação de API GetDataAccess para pedir à funcionalidade Concessões de Acesso do S3 acesso aos dados do S3 em nome de um beneficiário, primeiro a funcionalidade Concessões de Acesso do S3 verifica se você concedeu acesso aos dados para essa entidade. Em seguida, a funcionalidade Concessões de Acesso do S3 usa a operação de API AssumeRole para obter um token de credencial temporário e o envia ao solicitante. Esse token temporário de credencial é um token do AWS Security Token Service (AWS STS).

A solicitação GetDataAccess deve incluir o parâmetro target, que especifica o escopo dos dados do S3 aos quais as credenciais temporárias se aplicam. Esse escopo target pode ser igual ao escopo da concessão ou um subconjunto desse escopo, mas o escopo target deve estar dentro do escopo da concessão concedida ao solicitante. A solicitação também deve especificar o parâmetro permission para indicar o nível de permissão das credenciais temporárias, seja READ, WRITE ou READWRITE.

O solicitante pode especificar o nível de privilégio do token temporário na solicitação de credencial. Usando o parâmetro privilege, o solicitante pode reduzir ou aumentar o escopo de acesso das credenciais temporárias, dentro dos limites do escopo da concessão. O valor padrão do parâmetro privilege é Default, o que significa que o escopo target da credencial retornada é o escopo original da concessão. O outro valor possível para privilege é Minimal. Se o escopo target for reduzido do escopo original da concessão, a credencial temporária será reduzida para corresponder ao escopo target, desde que o escopo target esteja dentro do escopo da concessão.

A tabela a seguir detalha o efeito do parâmetro privilege em duas concessões. Uma concessão tem o escopo S3://DOC-EXAMPLE-BUCKET1/bob/*, que inclui todo o prefixo bob/ no bucket DOC-EXAMPLE-BUCKET1. A outra concessão tem o escopo S3://DOC-EXAMPLE-BUCKET1/bob/reports/*, que inclui apenas o prefixo bob/reports/ no bucket DOC-EXAMPLE-BUCKET1.

Escopo da concessão Escopo solicitado Privilege Escopo retornado Efeito
S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/* Default DOC-EXAMPLE-BUCKET1/bob/*

O solicitante tem acesso a todos os objetos que têm nomes de chave que começam com o prefixo bob/ no bucket DOC-EXAMPLE-BUCKET1.

S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/ Minimal DOC-EXAMPLE-BUCKET1/bob/

Sem um caractere curinga * depois do nome do prefixo bob/, o solicitante tem acesso somente ao objeto chamado bob/ no bucket DOC-EXAMPLE-BUCKET1. Não é comum ter esse objeto. O solicitante não tem acesso a nenhum outro objeto, incluindo aqueles que têm nomes de chave que começam com o prefixo bob/.

S3://DOC-EXAMPLE-BUCKET1/bob/* DOC-EXAMPLE-BUCKET1/bob/images/* Minimal DOC-EXAMPLE-BUCKET1/bob/images/*

O solicitante tem acesso a todos os objetos que têm nomes de chave que começam com o prefixo bob/images/* no bucket DOC-EXAMPLE-BUCKET1.

S3://DOC-EXAMPLE-BUCKET1/bob/reports/* DOC-EXAMPLE-BUCKET1/bob/reports/file.txt Default DOC-EXAMPLE-BUCKET1/bob/reports/*

O solicitante tem acesso a todos os objetos que têm nomes de chave que começam com o prefixo bob/reports no bucket DOC-EXAMPLE-BUCKET1, que é o escopo da concessão correspondente.

S3://DOC-EXAMPLE-BUCKET1/bob/reports/* DOC-EXAMPLE-BUCKET1/bob/reports/file.txt Minimal DOC-EXAMPLE-BUCKET1/bob/reports/file.txt

O solicitante tem acesso somente ao objeto com o nome de chave bob/reports/file.txt no bucket DOC-EXAMPLE-BUCKET1. O solicitante não tem acesso a nenhum outro objeto.

O parâmetro durationSeconds define a duração da credencial temporária, em segundos. O valor padrão é 3600 segundos (1 hora), mas o solicitante (o beneficiário) pode especificar um intervalo que varia de 900 segundos (15 minutos) até 43200 segundos (12 horas). Se o beneficiário solicitar um valor maior do que esse máximo, a solicitação falhará.

nota

Na solicitação de token temporário, se o local for um objeto, defina o valor do parâmetro targetType na solicitação como Object. Esse parâmetro só será necessário se o local for um objeto e o nível de privilégio for Minimal. Se o local for um bucket ou um prefixo, você não precisará especificar esse parâmetro.

Para obter mais informações, consulte GetDataAccess na Referência da API do Amazon Simple Storage Service.

Você pode solicitar credenciais temporárias usando a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 e os AWS SDKs.

Para instalar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.

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

exemplo Solicitar credenciais temporárias

Solicitação:

aws s3control get-data-access \ --account-id 111122223333 \ --target s3://DOC-EXAMPLE-BUCKET/prefixA* \ --permission READ \ --privilege Default \ --region us-east-2

Resposta:

{ "Credentials": { "AccessKeyId": "Example-key-id", "SecretAccessKey": "Example-access-key", "SessionToken": "Example-session-token", "Expiration": "2023-06-14T18:56:45+00:00"}, "MatchedGrantTarget": "s3://DOC-EXAMPLE-BUCKET/prefixA**" }

Para obter informações sobre o suporte à API REST do Amazon S3 para solicitar credenciais temporárias da funcionalidade Concessões de Acesso do S3, consulte GetDataAccess na Referência da API do Amazon Simple Storage Service.

Esta seção fornece um exemplo de como os beneficiários solicitam credenciais temporárias da funcionalidade Concessões de Acesso do S3 usando os AWS SDKs.

Java

O exemplo de código a seguir retorna as credenciais temporárias que o beneficiário usa para acessar os dados do S3. Para usar esse exemplo de código, substitua os user input placeholders por suas próprias informações.

exemplo Obter credenciais temporárias

Solicitação:

public void getDataAccess() { GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder() .accountId("111122223333") .permission(Permission.READ) .privilege(Privilege.MINIMAL) .target("s3://DOC-EXAMPLE-BUCKET/prefixA*") .build(); GetDataAccessResponse getDataAccessResponse = s3Control.getDataAccess(getDataAccessRequest); LOGGER.info("GetDataAccessResponse: " + getDataAccessResponse); }

Resposta:

GetDataAccessResponse( Credentials=Credentials( AccessKeyId="Example-access-key-id", SecretAccessKey="Example-secret-access-key", SessionToken="Example-session-token", Expiration=2023-06-07T06:55:24Z ))