Implémentation d'un PDP à l'aide de l'OPA - AWS Directives prescriptives

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 d'un PDP à l'aide de l'OPA

L'Open Policy Agent (OPA) est un moteur de politique open source à usage général. L'OPA a de nombreux cas d'utilisation, mais le cas d'utilisation pertinent pour la mise en œuvre du PDP est sa capacité à dissocier la logique d'autorisation d'une application. C'est ce que l'on appelle le découplage des politiques. L'OPA est utile pour mettre en œuvre un PDP pour plusieurs raisons. Il utilise un langage déclaratif de haut niveau appelé Rego pour rédiger des politiques et des règles. Ces politiques et règles existent séparément d'une application et peuvent rendre des décisions d'autorisation sans aucune logique spécifique à l'application. OPA expose également une API RESTful pour rendre la récupération des décisions d'autorisation simple et directe. Pour prendre une décision d'autorisation, une application interroge OPA avec une entrée JSON, et OPA évalue l'entrée par rapport aux politiques spécifiées pour renvoyer une décision d'accès en JSON. L'OPA est également capable d'importer des données externes susceptibles d'être pertinentes pour prendre une décision d'autorisation.

Utiliser l'OPA pour implémenter un PDP

L'OPA présente plusieurs avantages par rapport aux moteurs de politiques personnalisés :

  • L'OPA et son évaluation des politiques avec Rego fournissent un moteur de politiques flexible et prédéfini qui ne nécessite que l'insertion de politiques et de toutes les données nécessaires pour prendre des décisions d'autorisation. Cette logique d'évaluation des politiques devrait être recréée dans une solution de moteur de politiques personnalisée.

  • L'OPA simplifie la logique d'autorisation en écrivant les politiques dans un langage déclaratif. Vous pouvez modifier et administrer ces politiques et règles indépendamment de tout code d'application, sans compétences en développement d'applications.

  • OPA expose une API RESTful, qui simplifie l'intégration avec les points d'application des politiques (PEP).

  • OPA fournit un support intégré pour la validation et le décodage des jetons Web JSON (JWT).

  • L'OPA est une norme d'autorisation reconnue, ce qui signifie que la documentation et les exemples sont nombreux si vous avez besoin d'assistance ou de recherches pour résoudre un problème particulier.

  • L'adoption d'une norme d'autorisation telle que l'OPA permet de partager les politiques écrites dans Rego entre les équipes, quel que soit le langage de programmation utilisé par l'application d'une équipe.

Il y a deux choses que l'OPA ne fournit pas automatiquement :

  • L'OPA ne dispose pas d'un plan de contrôle robuste pour mettre à jour et gérer les politiques. L'OPA fournit certains modèles de base pour la mise en œuvre des mises à jour des politiques, la surveillance et l'agrégation des journaux en exposant une API de gestion, mais l'intégration avec cette API doit être gérée par l'utilisateur OPA. La meilleure pratique consiste à utiliser un pipeline d'intégration et de déploiement continus (CI/CD) pour administrer, modifier et suivre les versions des politiques et gérer les politiques dans OPA.

  • OPA ne peut pas récupérer de données provenant de sources externes par défaut. Une source de données externe pour une décision d'autorisation peut être une base de données contenant les attributs des utilisateurs. Il existe une certaine flexibilité dans la manière dont les données externes sont fournies à l'OPA : elles peuvent être mises en cache localement à l'avance ou récupérées dynamiquement à partir d'une API lorsqu'une décision d'autorisation est demandée, mais l'OPA ne peut pas obtenir ces informations en votre nom.