Vous pouvez contrôler l'accès aux ressources Vertex AI Feature Store (ancien) en définissant des stratégies IAM à différents niveaux de la hiérarchie des ressources. Exemple :
Une stratégie IAM au niveau du projet s'applique à toutes les ressources d'un projet. Vous pouvez définir une stratégie au niveau du projet pour accorder aux utilisateurs des autorisations de lire tous les magasins de caractéristiques de votre projet.
Une stratégie IAM au niveau des ressources vous permet de spécifier quels utilisateurs peuvent accéder à des ressources spécifiques. Pour un sous-ensemble d'utilisateurs, vous pouvez définir une stratégie au niveau des ressources pour accorder des autorisations en écriture à des magasins de caractéristiques spécifiques de votre projet.
Vous pouvez définir des stratégies Identity and Access Management (IAM) au niveau des ressources sur les ressources Vertex AI Feature Store (ancien) suivantes :
Magasin de caractéristiques : lorsque vous définissez une stratégie Identity and Access Management sur un magasin de caractéristiques, la règle s'applique au magasin de caractéristiques et à tous les types d'entités créés dans ce magasin de caractéristiques.
Type d'entité : lorsque vous définissez une stratégie Identity and Access Management sur un type d'entité, la règle ne s'applique qu'au type d'entité et au magasin de caractéristiques dans lequel il est créé.
Une stratégie IAM comprend une ou plusieurs liaisons de rôle qui définissent les rôles IAM associés aux comptes principaux. Un rôle est un ensemble d'autorisations que vous accordez à un compte principal. Vertex AI fournit des rôles prédéfinis que vous pouvez utiliser dans vos stratégies. Vous pouvez également créer vos propres rôles personnalisés.
Remarques
Vous ne pouvez pas définir de règles de ressources conditionnelles. Par exemple, vous ne pouvez pas créer de stratégie accordant l'accès à toute ressource portant ou ayant un nom commençant par une chaîne spécifique telle que testing
.
Exemple de cas d'utilisation
Par exemple, imaginons que votre organisation dispose de deux ensembles d'utilisateurs. Un ensemble gère votre infrastructure de base dans un rôle d'administrateur DevOps. Un autre ensemble gère des types d'entités spécifiques et leurs caractéristiques, tels qu'un ingénieur de données.
Un administrateur DevOps gère les featurestores et les types d'entités au niveau du projet. Lorsque les ingénieurs de données demandent un nouveau type d'entité, un administrateur DevOps peut créer et déléguer la propriété de ce type d'entité aux ingénieurs de données. Les ingénieurs de données peuvent gérer librement les fonctionnalités dans les types d'entités qu'ils possèdent, mais ils ne peuvent pas effectuer d'opérations sur le featurestore ni d'autres types d'entités. Ce contrôle permet, par exemple, aux administrateurs DevOps de limiter l'accès aux types d'entités contenant des informations sensibles.
Dans ce scénario, l'administrateur DevOps dispose du rôle aiplatform.featurestoreAdmin
au niveau du projet. Ensuite, lorsqu'un ingénieur de données demande un nouveau type d'entité, l'administrateur crée un type d'entité puis attribue le rôle aiplatform.entityTypeOwner
à l'ingénieur de données au niveau du type d'entité (en tant que stratégie au niveau des ressources).
Obtenir les règles IAM
Vous pouvez afficher la stratégie IAM actuelle sur un featurestore ou un type d'entité à l'aide de la console Google Cloud ou de l'API.
UI Web
- Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.
- Sélectionnez une région dans la liste déroulante Région.
- Dans le tableau de fonctionnalités, sélectionnez un magasin de caractéristiques ou un type d'entité dans la colonne Magasin de caractéristiques ou Type d'entité.
- Cliquez sur Autorisations.
- Pour afficher les autorisations au niveau des ressources, désactivez l'option Afficher les autorisations héritées.
Les comptes principaux ayant accès à la ressource sélectionnée sont regroupés par rôle.
- Développez un rôle pour voir quels comptes principaux sont attribués à ce rôle.
REST
Pour obtenir la stratégie IAM d'une ressource, envoyez une requête POST utilisant la méthode getIamPolicy
. L'exemple suivant récupère une stratégie de type d'entité.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où se trouve le featurestore, par exemple
us-central1
. - PROJECT_ID : l'ID de votre projet.
- FEATURESTORE_ID : ID du featurestore.
- ENTITY_TYPE_ID : ID du type d'entité.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "members": [ "user:example@example.com" ] } ] }
Définir une stratégie IAM
Vous pouvez définir une stratégie IAM sur un magasin de caractéristiques ou un type d'entité.
UI Web
- Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.
- Sélectionnez une région dans la liste déroulante Région.
- Dans le tableau de fonctionnalités, sélectionnez un magasin de caractéristiques ou un type d'entité dans la colonne Magasin de caractéristiques ou Type d'entité.
- Cliquez sur Autorisations.
- Cliquez sur Ajouter un compte principal.
- Spécifiez un compte principal et un ou plusieurs rôles à associer au compte principal.
- Cliquez sur Enregistrer.
REST
Pour définir la stratégie IAM d'une ressource, envoyez une requête POST utilisant la méthode setIamPolicy
. L'exemple suivant définit une règle sur un type d'entité.
La définition d'une stratégie IAM remplace toute stratégie existante (les modifications ne sont pas ajoutées). Si vous souhaitez modifier la stratégie existante d'une ressource, utilisez la méthode getIamPolicy
pour obtenir sa stratégie existante, puis effectuez des modifications. Incluez la stratégie modifiée avec la valeur etag
dans votre requête setIamPolicy
.
Si vous recevez un code d'erreur 409
, une requête SetIamPolicy
simultanée a mis à jour la règle. Exécutez une commande GetIamPolicy
pour obtenir l'ETag mis à jour, puis relancez la requête SetIamPolicy
en incluant le nouvel ETag.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où se trouve le featurestore, par exemple
us-central1
. - PROJECT_ID : l'ID de votre projet.
- FEATURESTORE_ID : ID du featurestore.
- ENTITY_TYPE_ID : ID du type d'entité.
- ROLE : rôle Cloud IAM qui inclut les autorisations à accorder, par exemple
roles/aiplatform.featurestoreDataViewer
. - PRINCIPAL : compte principal disposant des autorisations du rôle, par exemple
user:myuser@example.com
. - ETAG : valeur de chaîne utilisée pour empêcher les mises à jour simultanées d'une stratégie de s'écraser. Cette valeur est renvoyée dans la réponse
getIamPolicy
.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy
Corps JSON de la requête :
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "members": [ "user:user1@example.com" ] }, { "role": "roles/aiplatform.featurestoreDataViewer", "members": [ "user:user2@example.com", "user:user3@example.com" ] }, { "role": "roles/aiplatform.featurestoreDataWriter", "members": [ "user:user4@example.com", ] } ] }
Vérifier les autorisations IAM d'une ressource
Vous pouvez vérifier si l'utilisateur actuellement authentifié dispose d'autorisations IAM spécifiques pour un magasin de caractéristiques ou un type d'entité.
REST
Pour vérifier si un utilisateur dispose d'autorisations IAM spécifiques pour une ressource, envoyez une requête POST utilisant la méthode testIamPermissions
.
L'exemple suivant vous permet de vérifier si l'utilisateur actuellement authentifié dispose d'un ensemble d'autorisations IAM pour un type d'entité.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où se trouve le featurestore, par exemple
us-central1
. - PROJECT_ID : l'ID de votre projet.
- FEATURESTORE_ID : ID du featurestore.
- ENTITY_TYPE_ID : ID du type d'entité.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d
Corps JSON de la requête :
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }