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 https://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 "" \
"https://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 "https://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:example@example.com" ] } ] }
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 stratégie.
Utilisez la méthode getIamPolicy
pour obtenir le etag
de la stratégie mis à jour, 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: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/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 \
"https://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 "https://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:example@example.com" ] } ] }
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 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 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 https://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 \
"https://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 "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }