Controlla l'accesso agli endpoint Vertex AI

Questa pagina descrive come controllare l'accesso a un endpoint Vertex AI impostando un criterio IAM. Si presume che tu abbia già familiarità con i concetti IAM come criteri, ruoli, autorizzazioni e entità, come descritto in Controllo dell'accesso a controllo dell'accesso AI con IAM e Concetti relativi alla gestione degli accessi.

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 concesse a un'entità. Vertex AI fornisce ruoli predefiniti che puoi utilizzare nei tuoi criteri. In alternativa, puoi creare ruoli personalizzati.

Recupero di un criterio IAM

Puoi visualizzare l'attuale criterio IAM su un endpoint Vertex AI utilizzando l'API REST. Per farlo, devi disporre dell'autorizzazione endpoints.getIamPolicy nell'endpoint o nel progetto. Il ruolo Amministratore Vertex AI (roles/aiplatform.admin) concede questa autorizzazione.

REST

Per ottenere il criterio IAM da una risorsa, invia una richiesta POST che utilizzi il metodo getIamPolicy.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • ENDPOINT_ID: l'ID dell'endpoint.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON con il criterio IAM attuale:

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

Imposta un criterio IAM

Puoi impostare un criterio IAM su un endpoint utilizzando l'API REST. Per farlo, devi disporre dell'autorizzazione endpoints.setIamPolicy nell'endpoint o nel progetto. Il ruolo Amministratore Vertex AI (roles/aiplatform.admin) concede questa autorizzazione.

REST

Per impostare il criterio IAM su una risorsa, invia una richiesta POST che utilizzi il metodo setIamPolicy.

L'impostazione di un criterio IAM sostituisce qualsiasi criterio esistente; le modifiche non vengono aggiunte. Per modificare il criterio esistente di una risorsa, utilizza il metodo getIamPolicy per ottenere il criterio esistente e poi apportare modifiche. Includi il criterio modificato insieme a etag nella richiesta setIamPolicy.

Se ricevi un codice di errore 409, significa che una richiesta setIamPolicy in parallelo ha già aggiornato le norme. Utilizza il metodo getIamPolicy per aggiornare il criterio etag, quindi riprova a inviare la richiesta setIamPolicy con il nuovo etag.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo 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 sono state concesse le autorizzazioni del ruolo, come user:[email protected].
  • ETAG: un valore stringa utilizzato per impedire che gli aggiornamenti simultanei di un criterio si sovrascrivano a vicenda. Questo valore viene restituito come parte della risposta getIamPolicy.

Metodo HTTP e URL:

POST http://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 delle seguenti opzioni:

arricciatura

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON con il criterio IAM attuale:

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

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 utilizzi il metodo testIamPermissions. L'esempio seguente ti consente di verificare se l'utente attualmente autenticato ha un set di autorizzazioni IAM per un endpoint.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui si trova l'endpoint, ad esempio us-central1.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • ENDPOINT_ID: l'ID dell'endpoint.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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
Dovresti ricevere una risposta in formato JSON simile alla seguente. La risposta include solo le autorizzazioni del corpo JSON della richiesta che sono disponibili per l'utente attualmente autenticato.
{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}