Contrôler l'accès aux ressources Vertex AI Feature Store (ancien)

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. Par exemple :

  • Une stratégie 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 les utilisateurs autorisés à 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.

Points à prendre en compte

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

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Sélectionnez une région dans la liste déroulante Région.
  3. 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é.
  4. Cliquez sur Autorisations.
  5. 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.

  6. 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

  1. Dans la section "Vertex AI" de Google Cloud Console, accédez à la page Caractéristiques.

    Accéder à la page "Caractéristiques"

  2. Sélectionnez une région dans la liste déroulante Région.
  3. 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é.
  4. Cliquez sur Autorisations.
  5. Cliquez sur Ajouter un compte principal.
  6. Spécifiez un compte principal et un ou plusieurs rôles à associer au compte principal.
  7. 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
Vous devriez recevoir une réponse JSON semblable à la suivante. La réponse n'inclut que les autorisations du corps JSON de la requête qui sont disponibles pour l'utilisateur actuellement authentifié.
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}