Location multiple pour les Agents Cortex¶
La location multiple permet à un seul Agent Cortex de servir plusieurs locataires tout en garantissant l’isolation des données entre eux. Pour assurer l’isolation des locataires, vous configurez des attributs de session dans le bloc variables dans l’API agent:run et les associez à des politiques d’accès aux lignes (RAP) sur vos tables Snowflake. Avant que l’agent n’exécute du SQL généré, Snowflake définit les attributs de session que vous fournissez, et la politique d’accès aux lignes filtre les lignes en fonction de ces valeurs.
Cette approche suit un modèle de responsabilité partagée. Snowflake fournit les outils (attributs de session et politiques d’accès aux lignes), et il vous appartient de les configurer correctement pour faire respecter les limites de votre locataire.
Comment fonctionne la location multiple¶
Lorsque vous appelez l’API agent:run, vous pouvez inclure un bloc variables qui définit un ou plusieurs attributs de session immuables. La politique d’accès aux lignes de votre table fait référence à ces attributs pour filtrer les données du locataire actuel.
Le flux d’exécution est le suivant :
Vous appelez une API
agent:runavec un blocvariablesqui inclut des valeurs spécifiques au locataire.Avant d’exécuter du SQL généré, les attributs sont définis sur la session Snowflake.
Le SQL généré s’exécute dans la session où les variables sont actives.
La politique d’accès aux lignes sur la table évalue les attributs de session et filtre les lignes en conséquence.
Attributs de session¶
Le bloc variables prend en charge des attributs de session immuables, configurés à l’aide de is_immutable_session_attribute: true. Une fois que la valeur d’un attribut est définie, elle ne peut pas être modifiée par le SQL généré, l’exécution de code ou l’invocation d’outil pendant la session. Ainsi, le contexte du locataire ne peut pas être modifié pendant l’exécution de l’agent.
Pour configurer des attributs de session dans le bloc variables, dans l’API agent:run, utilisez le paramètre suivant :
Propriété |
Type |
Description |
|---|---|---|
|
Booléen |
Définit la variable comme attribut de session immuable qui ne peut pas être modifié pendant la session. |
Configurer les variables dans agent:run¶
Transmettez les variables dans l’API agent:run pour définir le contexte du locataire pour chaque appel :
Dans cet exemple, region est défini comme attribut de session immuable. La clé est region et la valeur est NORTH. La valeur est définie avant l’exécution de la requête, afin que la politique d’accès aux lignes puisse y faire référence. Les attributs de session persistent pendant la durée de l’interaction et ne peuvent pas être écrasés.
Politiques d’accès aux lignes avec des attributs de session¶
Pour appliquer l’isolation des locataires, Snowflake recommande fortement d’utiliser un attribut de session dans une politique d’accès aux lignes. La politique filtre les lignes de manière à ce que chaque locataire ne voie que ses propres données.
Créer une politique d’accès aux lignes
L’exemple suivant crée une politique d’accès aux lignes qui filtre les lignes en fonction de l’attribut de session region :
Appliquez la politique à votre table :
Lorsque l’agent exécute une requête sur la table sales, la politique d’accès aux lignes évalue l’attribut de session region et ne renvoie que les lignes où la colonne region correspond à la valeur définie dans l’appel agent:run.
Meilleures pratiques¶
Suivez ces recommandations lors de la configuration de la location multiple avec des Agents Cortex :
Utilisez des attributs de session immuables pour les politiques d’accès aux lignes. Définissez
is_immutable_session_attribute: truepour n’importe quelle variable référencée par une politique d’accès aux lignes. Les attributs immuables ne peuvent pas être modifiés par du SQL généré ou une exécution d’outil.Limitez la portée des variables au strict minimum. Définissez uniquement les variables nécessaires à chaque invocation. Ne transmettez pas de variables dont l’agent n’a pas besoin pour la requête en cours.
Testez vos politiques d’accès aux lignes indépendamment. Vérifiez que vos politiques d’accès aux lignes filtrent correctement en les testant avec des instructions
SETen dehors de l’agent avant le déploiement.
Contrôle d’accès¶
Le tableau suivant décrit les privilèges requis pour la configuration de la location multiple :
Privilège |
Objet |
Obligatoire pour |
|---|---|---|
MODIFY |
Agent |
Configuration des instructions de l’agent avec des variables d’invite |
USAGE |
Agent |
Invocation de l’agent avec des attributs de session |
CREATE ROW ACCESS POLICY |
Schéma |
Création de politiques d’accès aux lignes |
ADD ROW ACCESS POLICY |
Table |
Application d’une politique d’accès aux lignes à une table |
OWNERSHIP |
Agent |
Accès total sur la configuration de l’agent |
Limitations¶
Les limites suivantes s’appliquent à la location multiple avec les Agents Cortex :
Portée de la session : Les attributs de session persistent pendant la durée de l’interaction et ne peuvent pas être écrasés.
Snowflake fournit des attributs de session immuables et des politiques d’accès aux lignes comme outils d’isolation des locataires. Il vous appartient de les configurer correctement pour faire respecter les limites de votre locataire.