Récupération de données externes pour un PDP dans OPA - AWS Conseils prescriptifs

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.

Récupération de données externes pour un PDP dans OPA

Pour OPA, si toutes les données requises pour une décision d'autorisation peuvent être fournies en entrée ou dans le cadre d'un jeton Web JSON (JWT) transmis en tant que composant de la requête, aucune configuration supplémentaire n'est requise. (Il est relativement simple de transmettre JWTs des données contextuelles SaaS à OPA dans le cadre de la saisie des requêtes.) L'OPA peut accepter une entrée JSON arbitraire dans le cadre de ce que l'on appelle l'approche d'entrée par surcharge. Si un PDP nécessite des données autres que celles qui peuvent être incluses en entrée ou en tant que JWT, OPA propose plusieurs options pour récupérer ces données. Il s'agit notamment du regroupement, du transfert de données (réplication) et de la récupération dynamique des données.

Regroupement OPA

La fonctionnalité de regroupement OPA prend en charge le processus suivant pour la récupération de données externes :

  1. Le point d'application des politiques (PEP) demande une décision d'autorisation.

  2. L'OPA télécharge de nouveaux ensembles de politiques, y compris des données externes.

  3. Le service de regroupement réplique les données à partir de sources de données.

Lorsque vous utilisez la fonctionnalité de regroupement, OPA télécharge régulièrement des politiques et des ensembles de données à partir d'un service de regroupement centralisé. (OPA ne fournit pas la mise en œuvre et la configuration d'un service groupé.) Toutes les politiques et données externes extraites du service groupé sont stockées en mémoire. Cette option ne fonctionnera pas si la taille des données externes est trop importante pour être stockée en mémoire ou si les données changent trop fréquemment.

Pour plus d'informations sur la fonctionnalité de regroupement, consultez la documentation OPA.

Réplication OPA (transmission de données)

L'approche de réplication OPA prend en charge le processus suivant pour la récupération de données externes :

  1. Le PEP demande une décision d'autorisation.

  2. Le réplicateur de données transmet les données à l'OPA.

  3. Le réplicateur de données réplique les données à partir de sources de données.

Dans cette alternative à l'approche de regroupement, les données sont transmises à l'OPA au lieu d'être périodiquement extraites par celle-ci. (OPA ne fournit pas la mise en œuvre et la configuration d'un réplicateur.) L'approche push présente les mêmes limites de taille de données que l'approche de regroupement, car OPA stocke toutes les données en mémoire. Le principal avantage de l'option push est que vous pouvez mettre à jour les données dans OPA avec des deltas au lieu de remplacer toutes les données externes à chaque fois. Cela rend l'option push plus appropriée pour les ensembles de données qui changent fréquemment. 

Pour plus d'informations sur l'option de réplication, consultez la documentation OPA.

Récupération dynamique des données OPA

Si les données externes à récupérer sont trop volumineuses pour être mises en cache dans la mémoire de l'OPA, les données peuvent être extraites dynamiquement d'une source externe lors de l'évaluation d'une décision d'autorisation. Lorsque vous utilisez cette approche, les données sont toujours à jour. Cette approche présente deux inconvénients : la latence du réseau et l'accessibilité. Actuellement, OPA ne peut récupérer des données au moment de l'exécution que par le biais d'une requête HTTP. Si les appels destinés à une source de données externe ne peuvent pas renvoyer de données sous forme de réponse HTTP, ils ont besoin d'une API personnalisée ou d'un autre mécanisme pour fournir ces données à l'OPA. Étant donné qu'OPA ne peut récupérer des données que par le biais de requêtes HTTP et que la vitesse de récupération des données est essentielle, nous vous recommandons d'utiliser un outil Service AWS tel qu'Amazon DynamoDB pour conserver des données externes dans la mesure du possible.

Pour plus d'informations sur l'approche pull, consultez la documentation de l'OPA.

Utilisation d'un service d'autorisation pour la mise en œuvre avec OPA

Lorsque vous récupérez des données externes en utilisant le regroupement, la réplication ou une approche d'extraction dynamique, nous recommandons que le service d'autorisation facilite cette interaction. En effet, le service d'autorisation peut récupérer des données externes et les transformer en JSON pour que l'OPA prenne des décisions d'autorisation. Le schéma suivant montre comment un service d'autorisation peut fonctionner avec ces trois approches de récupération de données externes.

Récupération de données externes avec OPA

Extraction de données externes pour le flux OPA : extraction groupée ou dynamique de données au moment de la décision (illustrée par des légendes numérotées en rouge dans le schéma) :

  1. L'OPA appelle le point de terminaison de l'API local pour le service d'autorisation, qui est configuré comme point de terminaison du bundle ou comme point de terminaison pour la récupération dynamique des données lors des décisions d'autorisation.

  2. Le service d'autorisation interroge ou appelle la source de données externe pour récupérer des données externes. (Pour un point de terminaison groupé, ces données doivent également contenir des politiques et des règles OPA. Les mises à jour du bundle remplacent tout, à la fois les données et les politiques, dans le cache d'OPA.)

  3. Le service d'autorisation effectue toute transformation nécessaire sur les données renvoyées pour les transformer en entrée JSON attendue.

  4. Les données sont renvoyées à l'OPA. Il est mis en cache en mémoire pour la configuration du bundle et utilisé immédiatement pour les décisions d'autorisation dynamiques.

Récupération de données externes pour le flux OPA — réplicateur (illustrées par des légendes numérotées en bleu dans le schéma) :

  1. Le réplicateur (qui fait partie du service d'autorisation) appelle la source de données externe et récupère toutes les données à mettre à jour dans OPA. Cela peut inclure des politiques, des règles et des données externes. Cet appel peut être effectué à une cadence définie ou en réponse à des mises à jour de données dans la source externe.

  2. Le service d'autorisation effectue toutes les transformations nécessaires sur les données renvoyées pour les transformer en entrée JSON attendue.

  3. Le service d'autorisation appelle OPA et met les données en cache en mémoire. Le service d'autorisation peut mettre à jour les données, les politiques et les règles de manière sélective.