

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.

# Implémentation de l'autorisation dans Amazon Verified Permissions
<a name="authorization"></a>

Une fois que vous avez créé votre magasin de politiques, vos politiques, vos modèles, votre schéma et votre modèle d'autorisation, vous êtes prêt à autoriser les demandes à l'aide des autorisations vérifiées par Amazon. Pour implémenter l'autorisation des autorisations vérifiées, vous devez combiner la configuration des politiques d'autorisation AWS avec l'intégration dans une application. Pour intégrer les autorisations vérifiées à votre application, ajoutez un AWS SDK et implémentez les méthodes qui invoquent l'API Verified Permissions et génèrent des décisions d'autorisation par rapport à votre magasin de politiques.

L'autorisation avec autorisations vérifiées est utile pour les *autorisations UX* et *les autorisations API* dans vos applications.

**Autorisations d'expérience utilisateur**  
Contrôlez l'accès des utilisateurs à l'expérience utilisateur de votre application. Vous pouvez autoriser un utilisateur à afficher uniquement les formulaires, boutons, graphiques et autres ressources exacts auxquels il a besoin pour accéder. Par exemple, lorsqu'un utilisateur se connecte, vous souhaiterez peut-être déterminer si le bouton « Transférer des fonds » est visible sur son compte. Vous pouvez également contrôler les actions qu'un utilisateur peut effectuer. Par exemple, dans la même application bancaire, vous souhaiterez peut-être déterminer si votre utilisateur est autorisé à modifier la catégorie d'une transaction.

**Autorisations d'API**  
Contrôlez l'accès des utilisateurs aux données. Les applications font souvent partie d'un système distribué et contiennent des informations provenant de l'extérieur APIs. Dans l'exemple de l'application bancaire où les autorisations vérifiées ont autorisé l'affichage d'un bouton « Transférer des fonds », une décision d'autorisation plus complexe doit être prise lorsque votre utilisateur initie un transfert. Les autorisations vérifiées peuvent autoriser la demande d'API qui répertorie les comptes de destination qui sont des cibles de transfert éligibles, puis la demande de transfert vers l'autre compte.

Les exemples illustrant ce contenu proviennent d'un [exemple de magasin de politiques](policy-stores-create.md#policy-stores-create.title). Pour suivre, créez le magasin **DigitalPetStore**d'exemples de règles dans votre environnement de test.

Pour un exemple d'application de bout en bout qui implémente les autorisations UX à l'aide d'une autorisation par lots, consultez [Utiliser les autorisations vérifiées par Amazon pour une autorisation précise à grande échelle](https://aws.amazon.com/blogs/security/use-amazon-verified-permissions-for-fine-grained-authorization-at-scale/) sur le blog *AWS de sécurité*.

**Topics**
+ [Opérations d'API disponibles pour l'autorisation](#authorization-operations)
+ [Tester votre modèle d'autorisation](authorization-testing.md)
+ [Intégration de vos modèles d'autorisation aux applications](authorization-sdk.md)

## Opérations d'API disponibles pour l'autorisation
<a name="authorization-operations"></a>

L'API Verified Permissions effectue les opérations d'autorisation suivantes.

**[IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html)**  
Le fonctionnement de l'`IsAuthorized`API est le point d'entrée des demandes d'autorisation avec des autorisations vérifiées. Vous devez soumettre des éléments principaux, d'action, de ressources, de contexte et d'entités. Verified Permissions évalue votre demande par rapport à toutes les politiques du magasin de politiques demandé qui s'appliquent aux entités de la demande.

**[IsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)**  
L'`IsAuthorizedWithToken`opération génère une demande d'autorisation à partir des données utilisateur contenues dans des jetons Web JSON (JWTs). Verified Permissions fonctionne directement avec les fournisseurs OIDC, par exemple Amazon Cognito en tant que source d'identité dans votre magasin de politiques. Verified Permissions renseigne tous les attributs du principal de votre demande à partir des demandes figurant dans les identifiants des utilisateurs ou les jetons d'accès. Vous pouvez autoriser des actions et des ressources à partir des attributs utilisateur ou de l'appartenance à un groupe dans une source d'identité.  
Vous ne pouvez pas inclure d'informations sur les types principaux de groupes ou d'utilisateurs dans une `IsAuthorizedWithToken` demande. Vous devez renseigner toutes les données principales dans le JWT que vous fournissez.

**[BatchIsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorized.html)**  
L'`BatchIsAuthorized`opération traite plusieurs décisions d'autorisation pour un seul principal ou une seule ressource dans le cadre d'une seule demande d'API. Cette opération regroupe les demandes en une seule opération par lots qui minimise l'[utilisation des quotas](quotas.md#quotas-tps.title) et renvoie les décisions d'autorisation pour chacune des 30 actions imbriquées complexes (maximum). Avec l'autorisation par lots pour une seule ressource, vous pouvez filtrer les actions qu'un utilisateur peut effectuer sur une ressource. Avec l'autorisation par lots pour un seul principal, vous pouvez filtrer les ressources sur lesquelles un utilisateur peut agir.

**[BatchIsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorizedWithToken.html)**  
L'`BatchIsAuthorizedWithToken`opération traite plusieurs décisions d'autorisation pour un seul principal dans une seule demande d'API. Le principal est fourni par la source d'identité de votre magasin de politiques sous forme d'identifiant ou de jeton d'accès. Cette opération regroupe les demandes en une seule opération par lots qui minimise [l'utilisation des quotas](quotas.md#quotas-tps.title) et renvoie les décisions d'autorisation pour chacune des 30 demandes d'actions et de ressources (maximum). Dans vos politiques, vous pouvez autoriser leur accès à partir de leurs attributs ou de leur appartenance à un groupe dans un annuaire d'utilisateurs.  
Comme pour le `IsAuthorizedWithToken` cas, vous ne pouvez pas inclure d'informations sur les types principaux de groupes ou d'utilisateurs dans une `BatchIsAuthorizedWithToken` demande. Vous devez renseigner toutes les données principales dans le JWT que vous fournissez.

# Tester votre modèle d'autorisation
<a name="authorization-testing"></a>

Pour comprendre l'effet de la décision d'autorisation Amazon Verified Permissions lorsque vous déployez votre application, vous pouvez évaluer vos politiques au fur [Utilisation du banc de test Amazon Verified Permissions](test-bench.md) et à mesure que vous les développez à l'aide des demandes d'API REST HTTPS adressées à Verified Permissions. Le banc de test est un outil permettant d' AWS Management Console évaluer les demandes d'autorisation et les réponses dans votre magasin de politiques.

L'API REST Verified Permissions est la prochaine étape de votre développement alors que vous passez de la compréhension conceptuelle à la conception d'applications. L'API Verified Permissions accepte les demandes d'autorisation avec [IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html)et [BatchIsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_BatchIsAuthorized.html)sous forme de [demandes d' AWS API signées adressées](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) aux [points de terminaison des services](https://docs.aws.amazon.com/general/latest/gr/verifiedpermissions.html) régionaux. [IsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html) Pour tester votre modèle d'autorisation, vous pouvez générer des demandes auprès de n'importe quel client d'API et vérifier que vos politiques renvoient les décisions d'autorisation comme prévu.

Par exemple, vous pouvez effectuer un test `IsAuthorized` dans un exemple de magasin de politiques en suivant la procédure suivante.

------
#### [ Test bench ]

1. Ouvrez la console Permissions vérifiées dans la [console Permissions vérifiées](https://console.aws.amazon.com/verifiedpermissions/). Créez un magasin de politiques à partir du **magasin de politiques Sample** avec le nom **DigitalPetStore**.

1. Sélectionnez **Test bench** dans votre nouveau magasin de polices.

1. Remplissez votre demande de banc de test [IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)dans la référence de l'API Verified Permissions. Les détails suivants reproduisent les conditions de l'**exemple 4** qui fait référence à l'**DigitalPetStore**échantillon.

   1. Définissez Alice comme directrice. Pour que **le principal passe à l'action**, choisissez `DigitalPetStore::User` et entrez`Alice`.

   1. Définissez le rôle d'Alice en tant que cliente. Choisissez **Ajouter un parent**`DigitalPetStore::Role`, puis saisissez Client.

   1. Définissez la ressource dans l'ordre « 1234 ». Pour la **ressource sur laquelle le principal agit**, choisissez `DigitalPetStore::Order` et entrez`1234`.

   1. La `DigitalPetStore::Order` ressource nécessite un `owner` attribut. Définissez Alice comme propriétaire de la commande. Choisissez `DigitalPetStore::User` et entrez `Alice`

   1. Alice a demandé à voir la commande. Dans la **zone Action entreprise par le principal**, sélectionnez`DigitalPetStore::Action::"GetOrder"`.

1. Choisissez **Exécuter la demande d'autorisation**. Dans un magasin de politiques non modifié, cette demande aboutit à une `ALLOW` décision. Notez la **politique Satisfied** qui a renvoyé la décision.

1. Choisissez **Politiques** dans la barre de navigation de gauche. Passez en revue la politique statique avec la description **Rôle du client - Obtenir une commande**.

1. Notez que Verified Permissions a autorisé la demande parce que le principal occupait un rôle de client et était le propriétaire de la ressource.

------
#### [ REST API ]

1. Ouvrez la console Permissions vérifiées dans la [console Permissions vérifiées](https://console.aws.amazon.com/verifiedpermissions/). Créez un magasin de politiques à partir du **magasin de politiques Sample** avec le nom **DigitalPetStore**.

1. Notez l'**ID du magasin Policy** de votre nouveau Policy Store.

1. [IsAuthorized](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)Dans la référence de l'API Verified Permissions, copiez le corps de la demande de l'**exemple 4** qui fait référence à l'**DigitalPetStore**exemple.

1. Ouvrez votre client API et créez une demande auprès du point de terminaison du service régional pour votre magasin de politiques. [Remplissez les en-têtes comme indiqué dans l'exemple.](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorized.html#API_IsAuthorized_Examples)

1. Collez le corps de la demande d'exemple et remplacez la valeur de par `policyStoreId` l'ID du magasin de politiques que vous avez indiqué précédemment.

1. Soumettez la demande et examinez les résultats. Dans un magasin **DigitalPetStore**de politiques par défaut, cette demande renvoie une `ALLOW` décision.

------

Vous pouvez modifier les politiques, le schéma et les demandes dans votre environnement de test afin de modifier les résultats et de prendre des décisions plus complexes.

1. Modifiez la demande de manière à modifier la décision prise à partir des autorisations vérifiées. Par exemple, remplacez le rôle d'Alice par `Employee` ou modifiez l'`owner`attribut de l'ordre 1234 par`Bob`.

1. Modifiez les politiques de manière à affecter les décisions d'autorisation. Par exemple, modifiez la politique avec la description **Rôle du client - Obtenir la commande** pour supprimer la condition selon laquelle `User` il doit être le propriétaire du `Resource` et modifiez la demande afin que `Bob` celui-ci souhaite consulter la commande.

1. Modifiez le schéma pour permettre aux politiques de prendre des décisions plus complexes. Mettez à jour les entités de demande afin qu'Alice puisse satisfaire aux nouvelles exigences. Par exemple, modifiez le schéma pour autoriser `User` à être membre de `ActiveUsers` ou`InactiveUsers`. Mettez à jour la politique afin que seuls les utilisateurs actifs puissent consulter leurs propres commandes. Mettez à jour les entités de demande afin qu'Alice soit une utilisateur active ou inactive.

# Intégration de vos modèles d'autorisation aux applications
<a name="authorization-sdk"></a>

Pour implémenter les autorisations vérifiées par Amazon dans votre application, vous devez définir les politiques et le schéma que vous souhaitez que votre application applique. Une fois votre modèle d'autorisation en place et testé, l'étape suivante consiste à commencer à générer des demandes d'API dès leur mise en application. Pour ce faire, vous devez configurer la logique de l'application afin de collecter les données utilisateur et de les renseigner en fonction des demandes d'autorisation.

**Comment une application autorise les demandes avec des autorisations vérifiées**

1. Rassemblez des informations sur l'utilisateur actuel. Généralement, les informations d'un utilisateur sont fournies dans les détails d'une session authentifiée, comme un JWT ou un cookie de session Web. Ces données utilisateur peuvent provenir d'une [source d' Amazon Cognito identité](identity-sources.md#identity-sources.title) liée à votre magasin de politiques ou d'un autre fournisseur [OpenID Connect (OIDC)](cognito-validation.md#identity-sources-other-idp.title).

1. Rassemblez des informations sur la ressource à laquelle un utilisateur souhaite accéder. En règle générale, votre application reçoit des informations sur la ressource lorsqu'un utilisateur effectue une sélection nécessitant le chargement d'une nouvelle ressource par votre application.

1. Déterminez l'action que votre utilisateur souhaite effectuer.

1. Générez une demande d'autorisation auprès de Verified Permissions avec le principal, l'action, la ressource et les entités correspondant à la tentative d'opération de votre utilisateur. Verified Permissions évalue la demande par rapport aux politiques de votre magasin de politiques et renvoie une décision d'autorisation.

1. Votre application lit la réponse d'autorisation ou de refus de Verified Permissions et applique la décision concernant la demande de l'utilisateur.

Les opérations de l'API Verified Permissions sont intégrées AWS SDKs. Pour inclure des autorisations vérifiées dans une application, intégrez le AWS SDK correspondant à la langue de votre choix dans le package de l'application.

Pour en savoir plus et télécharger AWS SDKs, consultez la section [Outils pour Amazon Web Services](https://aws.amazon.com/tools/).

Vous trouverez ci-dessous des liens vers la documentation des différentes ressources relatives aux autorisations vérifiées AWS SDKs.
+ [AWS SDK pour .NET](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/VerifiedPermissions/NVerifiedPermissions.html)
+ [AWS SDK pour C\$1\$1](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-verifiedpermissions/html/class_aws_1_1_verified_permissions_1_1_verified_permissions_client.html)
+ [AWS SDK pour Go](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/verifiedpermissions)
+ [AWS SDK pour Java](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/verifiedpermissions/package-summary.html)
+ [AWS SDK pour JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/verifiedpermissions/)
+ [AWS SDK pour PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-verifiedpermissions-2021-12-01.html)
+ [AWS SDK pour Python (Boto)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/verifiedpermissions.html)
+ [AWS SDK pour Ruby](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/VerifiedPermissions/Client.html)
+ [AWS SDK pour Rust](https://docs.rs/aws-sdk-verifiedpermissions/latest/aws_sdk_verifiedpermissions/)

L' AWS SDK pour JavaScript exemple suivant `IsAuthorized` provient de [Simplify fined authorization with Amazon Verified Permissions et Amazon Cognito](https://aws.amazon.com/blogs/security/simplify-fine-grained-authorization-with-amazon-verified-permissions-and-amazon-cognito/).

```
const authResult = await avp.isAuthorized({
    principal: 'User::"alice"',
    action: 'Action::"view"',
    resource: 'Photo::"VacationPhoto94.jpg"',
    // whenever our policy references attributes of the entity,
    // isAuthorized needs an entity argument that provides    
    // those attributes
    entities: {
       entityList: [
         {
            "identifier": {
                "entityType": "User",
                "entityId": "alice"
            },
            "attributes": {
                "location": {
                    "String": "USA"
                }
            }
         }
       ]
    }
});
```

**Plus de ressources pour les développeurs**
+ [Atelier sur les autorisations vérifiées par Amazon](https://catalog.workshops.aws/verified-permissions-in-action)
+ [Autorisations vérifiées par Amazon - Ressources](https://aws.amazon.com/verified-permissions/resources/)
+ [Implémenter un fournisseur de politique d'autorisation personnalisé pour les applications ASP.NET Core à l'aide d'Amazon Verified Permissions](https://aws.amazon.com/blogs/dotnet/implement-a-custom-authorization-policy-provider-for-asp-net-core-apps-using-amazon-verified-permissions/)
+ [Créez un service d'autorisation pour les applications professionnelles à l'aide d'Amazon Verified Permissions](https://aws.amazon.com/blogs/security/build-an-entitlement-service-for-business-applications-using-amazon-verified-permissions/)
+ [Simplifiez les autorisations détaillées avec Amazon Verified Permissions et Amazon Cognito](https://aws.amazon.com/blogs/security/simplify-fine-grained-authorization-with-amazon-verified-permissions-and-amazon-cognito/)