Per impostazione predefinita, le autorizzazioni IAM (Identity and Access Management) per le sessioni sono a livello di progetto. Questo documento descrive come utilizzare le condizioni IAM per controllare l'accesso più granulare alle risorse delle sessioni di Vertex AI Agent Engine.
Panoramica
Le condizioni IAM consentono di concedere l'accesso alle risorse di sessione e agli eventi di sessione
solo se sono soddisfatte le condizioni specificate. Puoi controllare l'accesso alle sessioni in base
alla stringa userId all'interno della risorsa Sessione utilizzando l'attributo API
aiplatform.googleapis.com/sessionUserId con un'espressione scritta in Common
Expression Language. L'ID utente è una stringa arbitraria fornita durante
la creazione di sessioni, ad esempio userId = "userA".
Questi criteri Identity and Access Management condizionali vengono creati a livello di progetto e si applicano a tutte le sessioni e a tutti gli eventi di sessione all'interno di un progetto. Puoi applicare le condizioni IAM a tutti i tipi di entità, inclusi gli utenti del tuo progetto e i service account.
Le condizioni IAM sono utili per concedere le autorizzazioni Identity and Access Management (IAM) a molte risorse di sessione correlate contemporaneamente, incluse quelle che non esistono ancora. Puoi limitare l'accesso alle tue sessioni ed eventi in modo che un utente possa accedere solo alle proprie informazioni o in modo che gli sviluppatori possano visualizzare solo determinate risorse Session senza concessioni di autorizzazioni speciali.
Prima di iniziare
Per configurare le policy Identity and Access Management condizionali per le sessioni e gli eventi di sessione, procedi nel seguente modo:
- Esamina le condizioni IAM: acquisisci familiarità con la panoramica delle condizioni IAM.
- Determina i ruoli necessari: identifica quali ruoli IAM di sessione specializzati sono appropriati per il tuo caso d'uso per garantire il principio del privilegio minimo.
-
Identifica le entità interessate: identifica chi nella tua
organizzazione deve ricevere quali autorizzazioni. Ad esempio, considera quanto segue:
- Gli utenti devono essere in grado di vedere le sessioni di un altro utente?
- Gli sviluppatori devono essere in grado di vedere tutte le sessioni?
- Gli amministratori del progetto devono essere in grado di vedere tutte le sessioni?
- Determinate identità dell'agente devono poter accedere a determinate sessioni?
-
Concedi ruoli IAM: assicurati di disporre dei ruoli richiesti
che contengono le autorizzazioni necessarie per eseguire le attività descritte in questo
documento.
Per ottenere le autorizzazioni necessarie per applicare le condizioni IAM alle risorse di sessione di Vertex AI Agent Engine, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Per i progetti: Amministratore IAM progetto (`roles/resourcemanager.projectIamAdmin`)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per applicare le condizioni IAM alle risorse di sessione di Vertex AI Agent Engine. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per applicare le condizioni IAM alle risorse di sessione di Vertex AI Agent Engine sono necessarie le seguenti autorizzazioni:
- Imposta l'accesso IAM condizionale a livello di progetto: `resourcemanager.projects.setIamPolicy`
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Se prevedi di utilizzare le condizioni IAM in tutta l'organizzazione, devi anche disporre delle autorizzazioni per gestire le policy dell'organizzazione.
Creazione dell'accesso condizionale per le sessioni
Concedi l'accesso condizionale alle sessioni aggiungendo una condizione a un'associazione di policy Identity and Access Management a livello di progetto. La condizione utilizza la funzione
api.getAttribute('aiplatform.googleapis.com/sessionUserId', "") per
ispezionare l'ID utente della risorsa sessione. Definisci un ID utente quando
crei una sessione.
Per una guida dettagliata alla creazione di policy IAM con condizioni, consulta Condizioni nelle policy di autorizzazione.
Per concedere un singolo ruolo a un'entità:
Console
Nella console Cloud de Confiance , vai alla pagina IAM.
Seleziona il progetto.
Seleziona un'entità a cui assegnare un ruolo:
Per concedere un ruolo a un'entità che ha già altri ruoli nella risorsa, individua una riga contenente l'entità, fai clic su Modifica entità in quella riga e fai clic su Aggiungi un altro ruolo.
Per concedere un ruolo a un agente di servizio, seleziona la casella di controllo Includi concessioni di ruoli fornite da S3NS per visualizzarne l'indirizzo email.
Per concedere un ruolo a un'entità che non ha ruoli esistenti per la risorsa, fai clic su Concedi accesso, quindi inserisci un identificatore dell'entità. Ad esempio,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.como//iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.
Seleziona un ruolo da concedere dall'elenco a discesa. Per le best practice di sicurezza, scegli un ruolo che includa solo le autorizzazioni necessarie all'entità. Puoi scegliere uno dei ruoli IAM di sessione specializzati.
Aggiungi una condizione al ruolo utilizzando
aiplatform.googleapis.com/sessionUserIdcome attributo API. Vedi gli esempi riportati di seguito per alcune possibili istruzioni di condizione.Fai clic su Salva. All'entità viene concesso il ruolo sulla risorsa.
gcloud
-
Nella console Cloud de Confiance , attiva Cloud Shell.
Nella parte inferiore della console Cloud de Confiance viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Il comando
add-iam-policy-bindingti consente di concedere rapidamente un ruolo a un'entità.Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
PROJECT_ID: l'ID progetto Cloud de Confiance . Gli ID progetto sono alfanumerici, ad esempiomy-project. -
PRINCIPAL: un identificatore per l'entità o il membro, che di solito ha il seguente formato:PRINCIPAL_TYPE:ID. Ad esempio,principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.comoprincipalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com. Per un elenco completo dei valori che può assumerePRINCIPAL, consulta Identificatori delle entità. -
ROLE_NAME: il nome del ruolo che vuoi revocare. Utilizza uno dei seguenti formati:- Ruoli predefiniti:
roles/aiplatform.IDENTIFIER - Ruoli personalizzati a livello di progetto:
projects/PROJECT_ID/roles/IDENTIFIER
Seleziona un ruolo da concedere dall'elenco a discesa. Per le best practice di sicurezza, scegli un ruolo che includa solo le autorizzazioni necessarie all'entità. Puoi scegliere uno dei ruoli IAM di sessione specializzati.
- Ruoli predefiniti:
-
CONDITION: aggiungi una condizione al ruolo utilizzandoaiplatform.googleapis.com/sessionUserIdcome attributo API. Vedi gli esempi riportati di seguito per alcune possibili istruzioni condizionali.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL --role=ROLE_NAME \ --condition=CONDITION
Windows (PowerShell)
gcloud projects add-iam-policy-binding PROJECT_ID ` --member=PRINCIPAL --role=ROLE_NAME ` --condition=CONDITION
Windows (cmd.exe)
gcloud projects add-iam-policy-binding PROJECT_ID ^ --member=PRINCIPAL --role=ROLE_NAME ^ --condition=CONDITION
La risposta contiene la policy IAM aggiornata.
-
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per saperne di più, consulta la documentazione di riferimento del fornitore Terraform.
Se utilizzi Terraform per impostare le tue policy IAM, puoi includere una condizione nella risorsa google_project_iam_member per limitare l'accesso di un membro alle sessioni.
resource "google_project_iam_member" "example" { project = "PROJECT_ID" role = "ROLE" member = "MEMBER" condition { title = "Session Access Condition" description = "IAM condition for Session" expression = "CONDITION" } }
Sostituisci le seguenti variabili:
-
PROJECT_ID: l'ID progetto Cloud de Confiance . Gli ID progetto sono alfanumerici, ad esempiomy-project. -
ROLE: il ruolo IAM da concedere, ad esempioroles/aiplatform.sessionEditor. -
MEMBER: L'entità a cui concedere il ruolo, ad esempiouser:developerA@corp.com. Per un elenco completo dei valori che può assumereMEMBER, consulta Identificatori delle entità. -
CONDITION: l'istruzione della condizione IAM che utilizzaaiplatform.googleapis.com/sessionUserIdcome attributo API. Vedi gli esempi riportati di seguito per alcune possibili istruzioni condizionali.
Best practice per le autorizzazioni a livello di ID utente
Quando crei condizioni per le sessioni, segui queste best practice:
Utilizza ruoli IAM di sessione specializzati: le condizioni IAM di sessione devono essere utilizzate solo per i ruoli che si applicano alle sessioni e agli eventi di sessione. Puoi utilizzare ruoli specializzati come
aiplatform.googleapis.com/sessionViewer,aiplatform.googleapis.com/sessionEditoreaiplatform.googleapis.com/sessionUserper impedire un accesso eccessivamente permissivo. Per ulteriori dettagli, consulta la sezione Ruoli IAM per sessioni specializzate.Utilizza condizioni positive: ti consigliamo di utilizzare condizioni positive (ad esempio controlli di uguaglianza o presenza di prefissi) su
aiplatform.googleapis.com/sessionUserIdper una maggiore accuratezza. Poiché i tipi e i servizi non supportati sono rappresentati da un ID utente vuoto, le condizioni negative (come i controlli di disuguaglianza) potrebbero corrispondere inavvertitamente a un'ampia gamma di risorse, il che può essere eccessivamente permissivo e consentire la concessione imprevista di autorizzazioni.Abbrevia le condizioni, se possibile: ti consigliamo di utilizzare la logica più breve e semplice nelle espressioni delle condizioni IAM, soprattutto se prevedi di avere un numero elevato di condizioni. I criteri di autorizzazione IAM hanno una limitazione delle dimensioni e la semplificazione delle condizioni eviterà di incorrere nelle limitazioni di IAM. Per ulteriori dettagli, consulta la sezione Limitazioni. Ad esempio, puoi semplificare il controllo di due diversi ID utente combinando l'istruzione composta:
api.getAttribute('aiplatform.googleapis.com/sessionUserId', '') == 'sessionA' || api.getAttribute('aiplatform.googleapis.com/sessionUserId', '') == sessionB'in quanto restituisce lo stesso risultato dell'istruzione più breveapi.getAttribute('aiplatform.googleapis.com/sessionUserId', '') in ['sessionA', 'sessionB'].
Ruoli IAM di sessione specializzati
È fondamentale impedire criteri IAM eccessivamente permissivi quando utilizzi le condizioni IAM. La tabella seguente elenca i ruoli specializzati che puoi utilizzare quando concedi ruoli IAM condizionali per le API di sessione:
| Nome ruolo | Descrizione | Autorizzazioni incluse |
|---|---|---|
roles/aiplatform.sessionViewer |
Concede l'accesso di sola lettura a sessioni ed eventi di schede. |
|
roles/aiplatform.sessionEditor |
Concede l'accesso in scrittura alle sessioni e agli eventi di accodamento. |
|
roles/aiplatform.sessionUser |
Concede l'accesso completo a sessioni ed eventi, incluse tutte le autorizzazioni di visualizzatore e editor. |
Include tutte le autorizzazioni di sessionEditor e
sessionViewer.
|
Utilizzo delle condizioni IAM con le sessioni
Questa sezione illustra i seguenti esempi di utilizzo delle condizioni IAM con le sessioni:
Concedi l'accesso in lettura alle sessioni con corrispondenza esatta dell'ID utente.
Concedere l'accesso in scrittura alle sessioni contenenti un prefisso specifico nell'ID utente.
Concedi l'accesso completo alle sessioni contenenti uno dei due ID utente.
Concedere l'accesso in lettura alle sessioni con corrispondenza esatta dell'ID utente
La seguente condizione concede all'individuo userA@gmail.com l'accesso in visualizzazione
alle sessioni che hanno l'ID utente esatto userA.
Ciò significa che l'individuo ha la possibilità di ottenere sessioni ed elencare gli
eventi di sessione, a condizione che l'ID utente sia esattamente userA. L'utente non ha
accesso alle sessioni con ID utente come userB.
{ "members": ["user:userA@gmail.com"], "role": "roles/aiplatform.sessionViewer", "condition": { "title": "Session Access Condition", "expression": "api.getAttribute('aiplatform.googleapis.com/sessionUserId', '') == 'userA'" } }
Concedere l'accesso in scrittura alle sessioni contenenti un prefisso specifico nell'ID utente
La seguente condizione concede all'individuo developerA@corp.com l'accesso in modifica
a tutte le sessioni che contengono l'ID utente che inizia con user. Puoi utilizzare
startsWith per il controllo del prefisso e endsWith per il controllo del suffisso.
Ciò significa che lo sviluppatore ha la possibilità di creare, aggiornare ed eliminare
sessioni, nonché di aggiungere eventi, con ID utente come userA o
user1234.
{ "members": ["user:developerA@corp.com"], "role": "roles/aiplatform.sessionEditor", "condition": { "title": "Session Access Condition", "expression": "api.getAttribute('aiplatform.googleapis.com/sessionUserId', '').startsWith('user')" } }
Concedere l'accesso completo alle sessioni contenenti uno dei due ID utente
La seguente condizione concede all'utente del gruppo group:engineering@corp.com
(visualizzatore ed editor) l'accesso alle sessioni che hanno solo ID utente userA o
user123.
{ "members": ["group:engineering@corp.com"], "role": "roles/aiplatform.sessionUser", "condition": { "title": "Session Access Condition", "expression": "api.getAttribute('aiplatform.googleapis.com/sessionUserId', '') in ['userA', 'user123']" } }
Limitazioni
Limite di entità: le policy IAM sono limitate a 1500 entità uniche. Questo limite può essere gestito utilizzando i gruppi Google. Scopri di più su Limiti per tutti i principal.
Supporto dell'API
ListSessions: l'API ListSessions non supporta le condizioni IAM. Per concedere le autorizzazioni ListSessions, devi concedere al principal un ruolo incondizionato, ad esempioaiplatform.googleapis.com/sessionViewer,aiplatform.googleapis.com/sessionUsero un ruolo Gemini Enterprise Agent Platform incondizionato pertinente.