

# Solicitar acesso aos dados do Amazon S3 por meio da funcionalidade Concessões de Acesso do S3
<a name="access-grants-credentials"></a>

Depois de [criar uma concessão de acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html) usando a funcionalidade Concessão de Acesso do S3, os beneficiários podem solicitar credenciais para acessar os dados do S3 aos quais receberam acesso. Os beneficiários podem ser entidades principais do AWS Identity and Access Management (IAM), suas identidades de diretório corporativo ou aplicações autorizadas. 

Uma aplicação ou um AWS service (Serviço da AWS) pode usar a operação de API `GetDataAccess` da Concessão de Acesso do S3 para pedir a esse recurso acesso aos dados do S3 em nome de um beneficiário. Primeiro, `GetDataAccess` verifica se você concedeu acesso aos dados a essa entidade. Em seguida, a funcionalidade Concessões de Acesso do S3 usa a operação de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 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 dada à entidade autorizada. 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`.

**Privilege**  
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://{{amzn-s3-demo-bucket1}}/bob/*`, que inclui todo o prefixo `bob/` no bucket `{{amzn-s3-demo-bucket1}}`. A outra concessão tem o escopo `S3://{{amzn-s3-demo-bucket1}}/bob/reports/*`, que inclui apenas o prefixo `bob/reports/` no bucket `{{amzn-s3-demo-bucket1}}`. 


|  Escopo da concessão  |  Escopo solicitado  |  Privilege  |  Escopo retornado  |  Efeito  | 
| --- | --- | --- | --- | --- | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/\* | Default  | {{amzn-s3-demo-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 `{{amzn-s3-demo-bucket1}}`. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/  | Minimal  | {{amzn-s3-demo-bucket1}}/bob/  | Sem um caractere curinga \* depois do nome do prefixo `bob/`, o solicitante tem acesso somente ao objeto chamado `bob/` no bucket `{{amzn-s3-demo-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://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/images/\*  | Minimal  | {{amzn-s3-demo-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 `{{amzn-s3-demo-bucket1}}`. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/reports/\* | {{amzn-s3-demo-bucket1}}/bob/reports/file.txt  | Default  | {{amzn-s3-demo-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 `{{amzn-s3-demo-bucket1}}`, que é o escopo da concessão correspondente. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/reports/\* | {{amzn-s3-demo-bucket1}}/bob/reports/file.txt  | Minimal  | {{amzn-s3-demo-bucket1}}/bob/reports/file.txt  | O solicitante tem acesso somente ao objeto com o nome de chave `bob/reports/file.txt` no bucket `{{amzn-s3-demo-bucket1}}`. O solicitante não tem acesso a nenhum outro objeto.  | 

**Identidades de diretório**  
`GetDataAccess` considera todas as identidades envolvidas em uma solicitação ao correlacionar concessões adequadas. Para identidades de diretórios corporativos, `GetDataAccess` também retorna as concessões da identidade do IAM que é usada para a sessão com reconhecimento de identidade. Consulte mais informações sobre sessões com reconhecimento de identidade em [Como conceder permissões para usar sessões de console com reconhecimento de identidade](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_sts-setcontext.html) no *Guia do usuário do AWS Identity and Access Management*. `GetDataAccess` gera credenciais que restringem o escopo à concessão mais restritiva, conforme mostrado na seguinte tabela:


|  Escopo de concessão para identidade do IAM |  Escopo de concessão para identidade de diretório |  Escopo solicitado  |  Escopo retornado  |  Privilege  |  Efeito  | 
| --- | --- | --- | --- | --- | --- | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/images/\* | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | S3://{{amzn-s3-demo-bucket1}}/bob/images/\*  | Default | O solicitante tem acesso a todos os objetos que têm nomes de chave que começam com o prefixo *bob/* como parte da concessão para o perfil do IAM, mas está restrito aos prefixos *bob/images/* como parte da concessão para a identidade do diretório. Tanto o perfil do IAM quanto a identidade do diretório fornecem acesso ao escopo solicitado, que é `bob/images/image1.jpeg`, mas a identidade do diretório tem uma concessão mais restritiva. Portanto, o escopo retornado é restrito à concessão mais restritiva da identidade do diretório. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/images/\* | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | Minimal | Como o privilégio está definido como `Minimal`, mesmo que a identidade tenha acesso a um escopo maior, somente o escopo `bob/images/image1.jpeg` solicitado é retornado. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/images/\* | {{amzn-s3-demo-bucket1}}/bob/\* | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | S3://{{amzn-s3-demo-bucket1}}/bob/images/\*  | Default | O solicitante tem acesso a todos os objetos que têm nomes de chave que começam com o prefixo *bob/* como parte da concessão da identidade do diretório, mas está restrito aos prefixos *bob/images/* como parte da concessão para o perfil do IAM. Tanto o perfil do IAM quanto a identidade do diretório fornecem acesso ao escopo solicitado, que é `bob/images/image1.jpeg`, mas o perfil do IAM tem uma concessão mais restritiva. Portanto, o escopo retornado é restrito à concessão mais restritiva do perfil do IAM. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/images/\* | {{amzn-s3-demo-bucket1}}/bob/\* | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | S3://{{amzn-s3-demo-bucket1}}/bob/images/image1.jpeg  | Minimal | Como o privilégio está definido como `Minimal`, mesmo que a identidade tenha acesso a um escopo maior, somente o escopo `bob/images/image1.jpeg` solicitado é retornado. | 

**Duração**  
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.

**Exemplos**  
É possível solicitar credenciais temporárias usando a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3 e os SDKs da AWS. Consulte estes exemplos.

Consulte mais informações em [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) na *Referência de API do Amazon Simple Storage Service*.

## Como usar o AWS CLI
<a name="access-grants-credentials-cli"></a>

Para instalar a AWS CLI, consulte [Instalar a AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 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.

**Example Solicitar credenciais temporárias**  
Solicitação:  

```
aws s3control get-data-access \
--account-id {{111122223333}} \
--target {{s3://{{amzn-s3-demo-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://{{amzn-s3-demo-bucket}}/prefixA*}}*",
"Grantee": {
    "GranteeType": "IAM",
    "GranteeIdentifier": "arn:aws:iam::{{111122223333}}:role/{{role-name}}"
 }
}
```

## Uso da API REST
<a name="access-grants-credentials-rest-api"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) na *Referência da API do Amazon Simple Storage Service*.

## Usar SDKs da AWS
<a name="access-grants-credentials-using-sdk"></a>

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.

**Example Obter credenciais temporárias**  
Solicitação:  

```
public void getDataAccess() {
GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder()
.accountId("{{111122223333}}")
.permission(Permission.{{READ}})
.privilege(Privilege.{{MINIMAL}})
.target("{{s3://{{amzn-s3-demo-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}}
))
```

------