Controlla l'accesso agli endpoint Vertex AI

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

Un criterio IAM include una o più associazioni di ruoli che e definire quali ruoli IAM sono associati a quali entità. R un ruolo è un insieme di autorizzazioni concesse a un principal. Vertex AI offre ruoli predefiniti che puoi utilizzare nelle tue norme. In alternativa, puoi creare ruoli personalizzati.

Recupero di un criterio IAM

Puoi visualizzare il criterio IAM attuale su un'istanza Vertex AI utilizzando l'API REST. Per farlo, devi avere Autorizzazione endpoints.getIamPolicy per l'endpoint o il progetto. 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, 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 https://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:

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 in formato JSON con il criterio 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 per l'endpoint o progetto. 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 un criterio IAM sostituisce qualsiasi criterio esistente; le modifiche sono non aggiunto. Per modificare il criterio esistente di una risorsa, utilizza la classe getIamPolicy per recuperare il criterio esistente e poi renderlo modifiche. Includi la norma modificata insieme al etag in la tua richiesta setIamPolicy.

Se ricevi un codice di errore 409, significa che una richiesta setIamPolicy richiesta ha già aggiornato le norme. Usa il metodo getIamPolicy per aggiornare il criterio etag, e riprova a eseguire 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. concedere, ad esempio roles/aiplatform.user.
  • PRINCIPAL: l'entità a cui viene concesso il ruolo autorizzazioni, come user:myuser@example.com.
  • ETAG: un valore di stringa utilizzato per impedire la simultanea gli aggiornamenti di una norma e non 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 delle seguenti opzioni:

curl

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 \
"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. 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 "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 in formato JSON con il criterio 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 ha specifiche Autorizzazioni IAM per un endpoint.

REST

Per verificare se un utente ha autorizzazioni IAM specifiche per un risorsa, invia una richiesta POST che utilizza la risorsa testIamPermissions. L'esempio seguente ti consente di verificare se l'utente attualmente autenticato dispone di una serie 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 https://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:

curl

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