Questa pagina descrive come controllare l'accesso a un endpoint Vertex AI impostando un criterio IAM. Si presuppone che tu abbia già familiarità con i concetti IAM come criteri, ruoli, autorizzazioni e principal, come descritto in Controllo dell'accesso di controllo dell'accesso AI con IAM e Concetti relativi alla gestione dell'accesso.
Un criterio IAM include una o più associazioni di ruoli che definiscono quali ruoli IAM sono associati a quali entità. Un ruolo è una raccolta di autorizzazioni che concedi a un'entità. Vertex AI fornisce ruoli predefiniti che puoi utilizzare nelle tue policy. In alternativa, puoi creare ruoli personalizzati.
Recupero di un criterio IAM
Puoi visualizzare i criteri IAM attuali su un endpoint Vertex AI utilizzando l'API REST. Per farlo, devi disporre dell'autorizzazione
endpoints.getIamPolicy sull'endpoint o sul progetto.
Il ruolo Vertex AI Administrator (roles/aiplatform.admin)
concede questa autorizzazione.
REST
Per ottenere il criterio IAM da una risorsa, invia una richiesta POST che
utilizza il metodo getIamPolicy.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio
us-central1. - PROJECT_ID: l'ID progetto Google Cloud .
- ENDPOINT_ID: l'ID dell'endpoint.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON con la policy IAM attuale:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.user",
"members": [
"user:example@example.com"
]
}
]
}
Imposta un criterio IAM
Puoi impostare un criterio IAM su un endpoint utilizzando l'API REST.
Per farlo, devi disporre dell'autorizzazione endpoints.setIamPolicy sull'endpoint o sul progetto.
Il ruolo Vertex AI Administrator (roles/aiplatform.admin)
concede questa autorizzazione.
REST
Per impostare il criterio IAM su una risorsa, invia una richiesta POST che
utilizza il metodo setIamPolicy.
L'impostazione di una policy IAM sostituisce qualsiasi policy esistente; le modifiche non vengono aggiunte. Per modificare la policy esistente di una risorsa, utilizza il
metodo getIamPolicy per ottenere la policy esistente e poi apportare
le modifiche. Includi le norme modificate insieme al etag nella
tua richiesta setIamPolicy.
Se ricevi un codice di errore 409, significa che una richiesta
setIamPolicy simultanea ha già aggiornato il criterio.
Utilizza il metodo getIamPolicy per ottenere il valore etag aggiornato della norma, quindi riprova la richiesta setIamPolicy con il nuovo valore etag.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio
us-central1. - PROJECT_ID: l'ID progetto Google Cloud .
- ENDPOINT_ID: l'ID dell'endpoint.
- ROLE: un ruolo IAM che include le autorizzazioni
da concedere, ad esempio
roles/aiplatform.user. - PRINCIPAL: l'entità a cui vengono concesse le autorizzazioni del ruolo, ad esempio
user:myuser@example.com. - ETAG: un valore stringa utilizzato per impedire che gli aggiornamenti simultanei di una policy si sovrascrivano a vicenda. Questo valore viene restituito
come parte della risposta
getIamPolicy.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy
Corpo JSON della richiesta:
{
"policy": {
"bindings": [
{
"role": "ROLE",
"members": [
"PRINCIPAL"
]
},
...
],
"etag": "ETAG"
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON con la policy IAM attuale:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.user",
"members": [
"user:example@example.com"
]
}
]
}
Verificare le autorizzazioni IAM di un utente per un endpoint
Puoi verificare se l'utente attualmente autenticato dispone di autorizzazioni IAM specifiche per un endpoint.
REST
Per verificare se un utente dispone di autorizzazioni IAM specifiche per una risorsa, invia una richiesta POST che utilizza il metodo testIamPermissions.
L'esempio seguente ti consente di verificare se l'utente attualmente autenticato
dispone di un insieme di autorizzazioni IAM per un endpoint.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio
us-central1. - PROJECT_ID: l'ID progetto Google Cloud .
- ENDPOINT_ID: l'ID dell'endpoint.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions
Corpo JSON della richiesta:
{
"permissions": [
"aiplatform.googleapis.com/aiplatform.endpoints.get",
"aiplatform.googleapis.com/aiplatform.endpoints.predict"
]
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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" | Select-Object -Expand Content
{
"permissions": [
"aiplatform.googleapis.com/aiplatform.endpoints.get",
"aiplatform.googleapis.com/aiplatform.endpoints.predict"
]
}
Passaggi successivi
Per scoprire di più su come configurare i progetti con controllo dell'accesso più sicuro degli endpoint, consulta Configurare un progetto per un team.