Puoi controllare l'accesso alle risorse di Vertex AI Feature Store (legacy) impostando i criteri IAM a diversi livelli della gerarchia delle risorse. Ad esempio:
Un criterio IAM a livello di progetto si applica a tutte le risorse di un progetto. Puoi impostare un criterio a livello di progetto per concedere agli utenti le autorizzazioni per leggere tutti gli store delle funzionalità del progetto.
Un criterio IAM a livello di risorsa ti consente di specificare quali utenti possono accedere a risorse specifiche. Per un sottoinsieme di utenti, puoi impostare un criterio a livello di risorsa per concedere autorizzazioni di scrittura a feature store specifici nel tuo progetto.
Puoi impostare policy IAM (Identity and Access Management) a livello di risorsa sulle seguenti risorse Vertex AI Feature Store (legacy):
Featurestore: quando imposti un criterio Identity and Access Management su un featurestore, il criterio viene applicato al featurestore e a tutti i tipi di entità creati in quel featurestore.
Tipo di entità: quando imposti un criterio Identity and Access Management su un tipo di entità, il criterio si applica solo al tipo di entità e al featurestore in cui è stato creato.
Un criterio IAM include una o più associazioni di ruoli che definiscono quali ruoli IAM sono associati a quali entità. Un ruolo è un insieme di autorizzazioni che concedi a un'entità. Vertex AI fornisce ruoli predefiniti che puoi utilizzare nelle tue policy. In alternativa, puoi creare ruoli personalizzati.
Considerazioni
Non puoi impostare criteri delle risorse condizionali. Ad esempio, non puoi creare un criterio che conceda l'accesso a qualsiasi risorsa che ha o avrà un nome che inizia con una stringa specifica come testing.
Caso d'uso di esempio
Ad esempio, supponiamo che la tua organizzazione abbia due gruppi di utenti. Un insieme gestisce l'infrastruttura di base con il ruolo di amministratore DevOps. Un altro insieme gestisce tipi di entità particolari e le relative funzionalità, ad esempio un data engineer.
Un amministratore DevOps gestisce i feature store e i tipi di entità a livello di progetto. Quando i data engineer richiedono un nuovo tipo di entità, un amministratore DevOps può creare e delegare la proprietà di quel tipo di entità ai data engineer. Gli ingegneri dei dati possono gestire liberamente le funzionalità nei tipi di entità di loro proprietà, ma non possono operare su Feature Store o altri tipi di entità. Questo controllo, ad esempio, consente agli amministratori DevOps di limitare l'accesso ai tipi di entità che contengono informazioni sensibili.
In questo scenario, l'amministratore DevOps ha il ruolo aiplatform.featurestoreAdmin
a livello di progetto. Poi, quando un data engineer richiede un nuovo tipo di entità, l'amministratore crea un nuovo tipo di entità e poi assegna il ruolo aiplatform.entityTypeOwner al data engineer a livello di tipo di entità (come criterio a livello di risorsa).
Recupero del criterio IAM
Puoi visualizzare la policy IAM attuale per un archivio di caratteristiche o un tipo di entità utilizzando la console Google Cloud o l'API.
UI web
- Nella sezione Vertex AI della console Google Cloud , vai alla pagina Funzionalità.
- Seleziona una regione dall'elenco a discesa Regione.
- Nella tabella delle caratteristiche, seleziona un archivio di caratteristiche o un tipo di entità dalla colonna Archivio di caratteristiche o Tipo di entità.
- Fai clic su Autorizzazioni.
- Per mostrare le autorizzazioni a livello di risorsa, disattiva Mostra autorizzazioni
ereditate.
Le entità che hanno accesso alla risorsa selezionata sono raggruppate per ruolo.
- Espandi un ruolo per visualizzare le entità a cui è assegnato.
REST
Per ottenere il criterio IAM da una risorsa, invia una richiesta POST che
utilizza il metodo getIamPolicy. L'esempio seguente recupera una
policy del tipo di entità.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova lo store delle funzionalità, ad esempio
us-central1. - PROJECT_ID: il tuo ID progetto
- FEATURESTORE_ID: l'ID del feature store.
- ENTITY_TYPE_ID: ID del tipo di entità.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.entityTypeOwner",
"members": [
"user:example@example.com"
]
}
]
}
Imposta un criterio IAM
Puoi impostare un criterio IAM su un featurestore o un tipo di entità.
UI web
- Nella sezione Vertex AI della console Google Cloud , vai alla pagina Funzionalità.
- Seleziona una regione dall'elenco a discesa Regione.
- Nella tabella delle caratteristiche, seleziona un archivio di caratteristiche o un tipo di entità dalla colonna Archivio di caratteristiche o Tipo di entità.
- Fai clic su Autorizzazioni.
- Fai clic su Aggiungi entità.
- Specifica un'entità e uno o più ruoli da associare all'entità.
- Fai clic su Salva.
REST
Per impostare la policy IAM su una risorsa, invia una richiesta POST che
utilizza il metodo setIamPolicy. L'esempio seguente imposta un criterio su un tipo di entità.
L'impostazione di una policy IAM sostituisce qualsiasi policy esistente (le modifiche non vengono aggiunte). Se vuoi 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, è stata eseguita una richiesta SetIamPolicy simultanea
che ha aggiornato il criterio. Invia una richiesta GetIamPolicy per ottenere l'etag aggiornato della policy,
quindi riprova la richiesta SetIamPolicy includendo il nuovo etag.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova lo store delle funzionalità, ad esempio
us-central1. - PROJECT_ID: il tuo ID progetto
- FEATURESTORE_ID: l'ID del feature store.
- ENTITY_TYPE_ID: ID del tipo di entità.
- ROLE: un ruolo IAM che include le autorizzazioni
da concedere, ad esempio
roles/aiplatform.featurestoreDataViewer. - 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.entityTypeOwner",
"members": [
"user:user1@example.com"
]
},
{
"role": "roles/aiplatform.featurestoreDataViewer",
"members": [
"user:user2@example.com",
"user:user3@example.com"
]
},
{
"role": "roles/aiplatform.featurestoreDataWriter",
"members": [
"user:user4@example.com",
]
}
]
}
Verifica le autorizzazioni IAM per una risorsa
Puoi verificare se l'utente autenticato dispone di autorizzazioni IAM specifiche per un feature store o un tipo di entità.
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 consente di verificare se l'utente attualmente autenticato dispone di un insieme di autorizzazioni IAM per un tipo di entità.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova lo store delle funzionalità, ad esempio
us-central1. - PROJECT_ID: il tuo ID progetto
- FEATURESTORE_ID: l'ID del feature store.
- ENTITY_TYPE_ID: ID del tipo di entità.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d
Corpo JSON della richiesta:
{
"permissions": [
"aiplatform.googleapis.com/entityTypes.get",
"aiplatform.googleapis.com/entityTypes.readFeatureValues",
"aiplatform.googleapis.com/entityTypes.writeFeatureValues"
]
}
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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"
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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
{
"permissions": [
"aiplatform.googleapis.com/entityTypes.get",
"aiplatform.googleapis.com/entityTypes.readFeatureValues",
"aiplatform.googleapis.com/entityTypes.writeFeatureValues"
]
}