

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Demande d’un accès aux données Amazon S3 via S3 Access Grants
<a name="access-grants-credentials"></a>

Une fois que vous avez [créé une autorisation d’accès](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html) à l’aide de S3 Access Grants, les bénéficiaires peuvent demander des informations d’identification pour accéder aux données S3 auxquelles ils ont été autorisés à accéder. Les bénéficiaires peuvent être des directeurs Gestion des identités et des accès AWS (IAM), des identités de votre annuaire d'entreprise ou des applications autorisées. 

Une application Service AWS peut utiliser l'opération d'`GetDataAccess`API S3 Access Grants pour demander à S3 Access Grants l'accès à vos données S3 au nom d'un bénéficiaire. `GetDataAccess`vérifie d'abord que vous avez accordé à cette identité l'accès aux données. S3 Access Grants utilise l’opération d’API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) pour obtenir un jeton d’informations d’identification temporaire et le transmettent au demandeur. Ce jeton d’informations d’identification temporaire est un jeton AWS Security Token Service (AWS STS).

La demande `GetDataAccess` doit inclure le paramètre `target`, qui spécifie la portée des données S3 à laquelle s’appliquent les informations d’identification temporaires. Cette portée `target` peut être identique à celle de l’autorisation ou à un sous-ensemble de cette portée, mais la portée `target` doit être comprise dans la portée de l’autorisation accordée au bénéficiaire. La demande doit également spécifier le paramètre `permission` pour indiquer le niveau d’autorisation pour les informations d’identification temporaires, que ce soit `READ`, `WRITE` ou `READWRITE`.

**Privilège**  
Le demandeur peut spécifier le niveau de privilège du jeton temporaire dans sa demande d’informations d’identification. À l’aide du paramètre `privilege`, le demandeur peut réduire ou augmenter la portée d’accès des informations d’identification temporaires, dans les limites de la portée de l’octroi. La valeur par défaut du paramètre `privilege` est `Default`, ce qui signifie que la portée cible des informations d’identification renvoyées est la portée de l’octroi d’origine. L’autre valeur possible pour `privilege` est `Minimal`. Si la portée `target` est réduite par rapport à la portée de l’octroi d’origine, la portée des informations d’identification temporaires est désactivée pour correspondre à la portée `target`, à condition que la portée `target` soit comprise dans la portée de l’octroi. 

Le tableau suivant détaille l’effet du paramètre `privilege` sur deux octrois. Un octroi a la portée `S3://{{amzn-s3-demo-bucket1}}/bob/*`, qui inclut l’intégralité du préfixe `bob/` dans le compartiment `{{amzn-s3-demo-bucket1}}`. L’autre octroi a la portée `S3://{{amzn-s3-demo-bucket1}}/bob/reports/*`, qui inclut uniquement le préfixe `bob/reports/` dans le compartiment `{{amzn-s3-demo-bucket1}}`. 


|  Portée de l’octroi  |  Portée demandée  |  Privilège  |  Portée renvoyée  |  Effet  | 
| --- | --- | --- | --- | --- | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/\* | Default  | {{amzn-s3-demo-bucket1}}/bob/\*  | Le demandeur a accès à tous les objets qui ont des noms de clé commençant par le préfixe `bob/` dans le compartiment `{{amzn-s3-demo-bucket1}}`. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/  | Minimal  | {{amzn-s3-demo-bucket1}}/bob/  | Sans le caractère générique \* après le nom de préfixe `bob/`, le demandeur n’a accès qu’à l’objet nommé `bob/` dans le compartiment `{{amzn-s3-demo-bucket1}}`. Il n’est pas courant d’avoir un tel objet. Le demandeur n’a accès à aucun autre objet, pas même à ceux ayant des noms de clé commençant par le préfixe `bob/`. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/\* | {{amzn-s3-demo-bucket1}}/bob/images/\*  | Minimal  | {{amzn-s3-demo-bucket1}}/bob/images/\*  | Le demandeur a accès à tous les objets qui ont des noms de clé commençant par le préfixe `bob/images/*` dans le compartiment `{{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/\*  | Le demandeur a accès à tous les objets qui ont des noms de clé commençant par le préfixe `bob/reports` dans le compartiment `{{amzn-s3-demo-bucket1}}`, ce qui correspond à la portée de l’octroi correspondant. | 
| S3://{{amzn-s3-demo-bucket1}}/bob/reports/\* | {{amzn-s3-demo-bucket1}}/bob/reports/file.txt  | Minimal  | {{amzn-s3-demo-bucket1}}/bob/reports/file.txt  | Le demandeur a accès uniquement à l’objet doté du nom de clé `bob/reports/file.txt` dans le compartiment `{{amzn-s3-demo-bucket1}}`. Le demandeur n’a accès à aucun autre objet.  | 

**Identités des annuaires**  
`GetDataAccess` prend en compte toutes les identités impliquées dans une demande lors de la recherche d’autorisations appropriées. Pour les identités d’annuaire d’entreprise, `GetDataAccess` renvoie également les autorisations de l’identité IAM utilisée pour la session basée sur l’identité. Pour plus d’informations sur les sessions basées sur l’identité, consultez [Octroi d’autorisations pour l’utilisation de sessions de console basées sur l’identité](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_sts-setcontext.html) dans le *Guide de l’utilisateur Gestion des identités et des accès AWS *. `GetDataAccess` génère des informations d’identification limitant la portée à l’autorisation la plus restrictive, comme indiqué dans la table suivante :


|  Portée de l’autorisation pour l’identité IAM |  Portée de l’autorisation pour une identité de l’annuaire |  Portée demandée  |  Portée renvoyée  |  Privilège  |  Effet  | 
| --- | --- | --- | --- | --- | --- | 
| 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 | Le demandeur a accès à tous les objets dont le nom de clé commence par le préfixe *bob/* dans le cadre de l’autorisation du rôle IAM. En revanche, l’accès est limité aux préfixes *bob/images/* dans le cadre de l’autorisation de l’identité de l’annuaire. Le rôle IAM et l’identité de l’annuaire fournissent tous deux un accès à la portée demandée, à savoir `bob/images/image1.jpeg`, mais l’identité de l’annuaire bénéficie d’une autorisation plus restrictive. La portée renvoyée est donc limitée à l’autorisation la plus restrictive de l’identité de l’annuaire. | 
| 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 | Étant donné que le privilège est défini sur `Minimal`, même si l’identité a accès à une plus grande porté, seule la portée demandée est renvoyée : `bob/images/image1.jpeg`. | 
| 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 | Le demandeur a accès à tous les objets dont le nom de clé commence par le préfixe *bob/* dans le cadre de l’autorisation de l’identité de l’annuaire. En revanche, l’accès est limité aux préfixes *bob/images/* dans le cadre de l’autorisation du rôle IAM. Le rôle IAM et l’identité de l’annuaire fournissent tous deux un accès à la portée demandée, à savoir `bob/images/image1.jpeg`, mais le rôle IAM bénéficie d’une autorisation plus restrictive. La portée renvoyée est donc limitée à l’autorisation la plus restrictive du rôle 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 | Étant donné que le privilège est défini sur `Minimal`, même si l’identité a accès à une plus grande porté, seule la portée demandée est renvoyée : `bob/images/image1.jpeg`. | 

**Duration**  
Le paramètre `durationSeconds` définit la durée des informations d’identification temporaires, en secondes. La valeur par défaut est de `3600` secondes (1 heure), mais le demandeur (le bénéficiaire) peut spécifier une plage allant de `900` secondes (15 minutes) à `43200` secondes (12 heures). Si le bénéficiaire demande une valeur supérieure à ce maximum, la demande échoue. 

**Note**  
Dans votre demande de jeton temporaire, si l’emplacement est un objet, définissez la valeur du paramètre `targetType` dans votre demande sur `Object`. Ce paramètre est obligatoire seulement si l’emplacement est un objet et que le niveau de privilège est `Minimal`. Si l’emplacement est un compartiment ou un préfixe, vous n’avez pas besoin de spécifier ce paramètre.

**Exemples**  
Vous pouvez demander des informations d'identification temporaires en utilisant le AWS Command Line Interface (AWS CLI), l'API REST Amazon S3 et le AWS SDKs. Veuillez consulter ces exemples.

Pour plus d'informations, consultez [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html)le manuel *Amazon Simple Storage Service API Reference*.

## En utilisant le AWS CLI
<a name="access-grants-credentials-cli"></a>

Pour l'installer AWS CLI, reportez-vous à la section [Installation du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dans le *guide de AWS Command Line Interface l'utilisateur*. 

Pour utiliser l’exemple de commande suivant, remplacez les `{{user input placeholders}}` par vos propres informations.

**Example Demander des informations d’identification temporaires**  
Requête :  

```
aws s3control get-data-access \
--account-id {{111122223333}} \
--target {{s3://{{amzn-s3-demo-bucket}}/prefixA*}} \{{}}
--permission {{READ}} \
--privilege Default \
--region {{us-east-2}}
```
Réponse :  

```
{
"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}}"
 }
}
```

## Utilisation de l'API REST
<a name="access-grants-credentials-rest-api"></a>

Pour plus d'informations sur la prise en charge par l'API REST d'Amazon S3 pour la demande d'informations d'identification temporaires auprès de S3 Access Grants, consultez [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html)le *manuel Amazon Simple Storage Service API Reference*.

## À l'aide du AWS SDKs
<a name="access-grants-credentials-using-sdk"></a>

Cette section fournit un exemple de la façon dont les bénéficiaires demandent des informations d'identification temporaires à S3 Access Grants en utilisant le AWS SDKs.

------
#### [ Java ]

L’exemple de code suivant renvoie les informations d’identification temporaires que le bénéficiaire utilise pour accéder à vos données S3. Pour utiliser cet exemple de code, remplacez les `{{user input placeholders}}` par vos propres informations.

**Example Obtenir des informations d’identification temporaires**  
Requête :  

```
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);
}
```
Réponse :  

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

------