Contrôler l'accès aux points de terminaison Vertex AI

Cette page explique comment contrôler l'accès à un point de terminaison Vertex AI en définissant une stratégie IAM sur celui-ci. Nous partons du principe que vous connaissez déjà les concepts IAM tels que les stratégies, les rôles, les autorisations et les comptes principaux, comme décrit dans la section Contrôle des accès Vertex AI avec IAM et Concepts liés à la gestion des accès.

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.

Obtenir une stratégie IAM

Vous pouvez afficher la stratégie IAM actuelle sur un point de terminaison Vertex AI à l'aide de l'API REST. Pour ce faire, vous devez disposer de l'autorisation endpoints.getIamPolicy sur le point de terminaison ou le projet. Le rôle Administrateur Vertex AI (roles/aiplatform.admin) accorde cette autorisation.

REST

Pour obtenir la stratégie IAM d'une ressource, envoyez une requête POST utilisant la méthode getIamPolicy.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve le point de terminaison, par exemple, us-central1.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • ENDPOINT_ID : ID du point de terminaison.

Méthode HTTP et URL :

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON contenant la stratégie IAM actuelle :

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

Définir une stratégie IAM

Vous pouvez définir une stratégie IAM sur un point de terminaison à l'aide de l'API REST. Pour ce faire, vous devez disposer de l'autorisation endpoints.setIamPolicy sur le point de terminaison ou sur le projet. Le rôle Administrateur Vertex AI (roles/aiplatform.admin) accorde cette autorisation.

REST

Pour définir la stratégie IAM d'une ressource, envoyez une requête POST utilisant la méthode setIamPolicy.

La définition d'une stratégie IAM remplace toute stratégie existante, les modifications ne sont pas ajoutées. Pour modifier la stratégie existante d'une ressource, utilisez la méthode getIamPolicy pour obtenir sa stratégie existante, puis effectuez les modifications. Incluez la stratégie modifiée avec la valeur etag dans votre requête setIamPolicy.

Si vous recevez un code d'erreur 409, cela signifie qu'une requête setIamPolicy simultanée a déjà mis à jour la règle. Utilisez la méthode getIamPolicy pour obtenir le etag mis à jour de la stratégie, puis relancez la requête setIamPolicy avec le nouveau etag.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve le point de terminaison, par exemple, us-central1.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • ENDPOINT_ID : ID du point de terminaison.
  • ROLE : rôle Cloud IAM qui inclut les autorisations à accorder, par exemple roles/aiplatform.user.
  • PRINCIPAL : compte principal disposant des autorisations du rôle, par exemple user:[email protected].
  • 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 http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON contenant la stratégie IAM actuelle :

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

Vérifier les autorisations IAM d'un utilisateur pour un point de terminaison

Vous pouvez vérifier si l'utilisateur actuellement authentifié dispose d'autorisations IAM spécifiques pour un point de terminaison.

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 tester si l'utilisateur actuellement authentifié dispose d'un ensemble d'autorisations IAM pour un point de terminaison.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région où se trouve le point de terminaison, par exemple, us-central1.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • ENDPOINT_ID : ID du point de terminaison.

Méthode HTTP et URL :

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d

Corps JSON de la requête :

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}