Dans l’exemple AWS, une revendication Cognito associe chaque utilisateur externe à un rôle IAM, dont les identifiants temporaires encadrent ensuite les requêtes Athena filtrées par Lake Formation. Le modèle place donc les autorisations au niveau de l’accès aux données. AWS a publié ce tutoriel le 5 novembre 2026. Le billet technique d’AWS décrit le flux et ses règles d’accès.
Pour isoler les données par équipe, l’identité doit déterminer le rôle utilisé pour interroger les données, puis les règles d’accès doivent s’appliquer à la requête.
De la connexion Cognito à la requête Athena
L’utilisateur se connecte avec Amazon Cognito et reçoit notamment un jeton d’identité contenant la revendication custom:team. Le frontend transmet les jetons à AgentCore Gateway : sa validation JWT vérifie le jeton d’accès, puis la passerelle transmet le jeton d’identité à la fonction Lambda cible dans l’en-tête X-ID-Token.
Les règles d’Amazon Cognito Identity Pools associent la valeur de custom:team à un rôle IAM. La fonction Lambda échange alors le jeton d’identité contre des identifiants temporaires associés à ce rôle. Athena exécute la requête avec ces identifiants ; Lake Formation applique les autorisations et filtres de données liés au rôle avant le retour des résultats.
La règle affichée associe Team A à TeamA, et Team B à TeamB. Les valeurs de la revendication et les noms des rôles sont écrits différemment dans cet exemple ; chacun intervient à sa propre étape du mappage.
Pourquoi Lambda sert de courtier d’identifiants
Dans l’architecture décrite par AWS, la fonction Lambda cible sert de courtier entre le jeton Cognito et les identifiants temporaires. Son rôle d’exécution liste deux actions Cognito Identity : cognito-identity:GetId et cognito-identity:GetCredentialsForIdentity. AWS indique qu’elle ne possède pas d’autorisations sur les données Athena, S3 ou Glue. Ce sont les identifiants temporaires du rôle attribué à l’utilisateur qui servent à interroger les données.
Cette séparation place l’identité de l’utilisateur au cœur de la décision d’accès : la fonction qui échange le jeton n’exécute pas elle-même les requêtes de données sous son propre rôle.
Les règles d’équipe filtrent les tables et les lignes
L’exemple AWS utilise les LF-Tags TeamA, TeamB et shared pour accorder l’accès aux tables. La table venue est associée à Team A, category à Team B et users à l’étiquette partagée. La table sales_extended reçoit des filtres de lignes propres à chaque équipe. Dans le scénario décrit, Team A voit ses lignes et les tables venue et users ; Team B voit ses lignes et les tables category et users.
Pour sales_extended, le filtre affiché contient l’expression team = 'Team A' et autorise l’accès à toutes les colonnes. C’est donc un exemple de filtrage des lignes, associé à des règles d’accès aux tables. AWS ne présente pas ici de règle explicite de refus de certaines colonnes ni de validation de l’isolation par colonne.
La revendication custom:team est déclarée modifiable dans l’exemple et détermine le rôle associé à l’utilisateur. Il en découle que le contrôle des modifications de cette revendication fait partie de la frontière d’autorisation : si sa valeur détermine le rôle, son attribution doit rester maîtrisée. AWS ne précise pas dans ce tutoriel quelle politique de modification s’applique à un système déployé.
Identité externe et vérification des accès
AWS présente Cognito User Pools et Identity Pools pour les utilisateurs externes, comme les clients d’un service. Pour les identités professionnelles, le tutoriel cite plutôt IAM Identity Center avec Trusted Identity Propagation. Le choix dépend donc du type d’utilisateur que l’application doit authentifier.
Pour vérifier les règles de son exemple, AWS décrit une connexion avec Team A puis Team B, suivie d’une comparaison des tables visibles et des lignes renvoyées par sales_extended. Le tutoriel décrit aussi une modification d’étiquette et de filtre, puis la vérification des accès qui en résultent. AWS précise que les changements d’autorisations Lake Formation peuvent prendre plusieurs minutes à se propager.