Controllare l'accesso agli endpoint di Agent Platform

Questa pagina spiega come controllare l'accesso a un endpoint di Gemini Enterprise Agent Platform impostando una policy IAM. Presuppone che tu abbia già familiarità con i concetti IAM come policy, ruoli, autorizzazioni ed entità, come descritto in Controllo dell'accesso ad Agent Platform con IAM e Concetti relativi alla gestione dell'accesso.

Una policy IAM include uno o più binding di ruoli che definiscono quali ruoli IAM sono associati a quali entità. Un ruolo è un insieme di autorizzazioni che concedi a un' entità. Gemini Enterprise Agent Platform fornisce ruoli predefiniti che puoi utilizzare nelle tue policy. In alternativa, puoi creare ruoli personalizzati.

Recupero di una policy IAM

Puoi visualizzare la policy IAM corrente su un endpoint di Gemini Enterprise Agent Platform utilizzando l'API REST. Per farlo, devi disporre dell'autorizzazione endpoints.getIamPolicy sull'endpoint o sul progetto. Il ruolo Amministratore di Agent Platform (roles/aiplatform.admin) concede questa autorizzazione.

REST

Per recuperare la policy IAM da una risorsa, invia una POST richiesta che utilizza il getIamPolicy metodo.

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' Google Cloud ID progetto.
  • 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 corrente:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Impostazione di una policy IAM

Puoi impostare una policy IAM su un endpoint utilizzando l'API REST. Per farlo, devi disporre dell'autorizzazione endpoints.setIamPolicy sull'endpoint o sul progetto. Il ruolo Amministratore di Agent Platform (roles/aiplatform.admin) concede questa autorizzazione.

REST

Per impostare la policy 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 recuperare la policy esistente e poi apportare le modifiche. Includi la policy modificata insieme a etag nella richiesta setIamPolicy.

Se ricevi un codice di errore 409, significa che una richiesta setIamPolicy simultanea ha già aggiornato la policy. Utilizza il metodo getIamPolicy per recuperare l'etag aggiornato della policy, quindi riprova a inviare la richiesta setIamPolicy con il nuovo 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' Google Cloud ID progetto.
  • 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 getIamPolicy risposta.

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, e 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 corrente:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Verifica delle 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 testIamPermissions metodo. 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' Google Cloud ID progetto.
  • 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, e 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
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"
  ]
}

Passaggi successivi

Per scoprire di più su come configurare i progetti con un controllo dell'accesso più sicuro degli endpoint, consulta Configurare un progetto per un team.