Controllare l'accesso alle risorse di Vertex AI Feature Store (legacy)

Puoi controllare l'accesso alle risorse di Vertex AI Feature Store (legacy) impostando i criteri IAM su diversi livelli della gerarchia delle risorse. Ad esempio:

  • Un criterio IAM a livello di progetto si applica a tutte le risorse in un progetto. Puoi impostare un criterio a livello di progetto per concedere agli utenti le autorizzazioni per leggere tutti gli archivi di caratteristiche del tuo progetto.

  • Un criterio IAM a livello di risorsa 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 archivi di caratteristiche specifici nel progetto.

Puoi impostare criteri di Identity and Access Management (IAM) a livello di risorsa nelle seguenti risorse Vertex AI Feature Store (legacy):

  • Featurestore: quando imposti un criterio di Identity and Access Management su un archivio di caratteristiche, il criterio viene applicato all'archivio di caratteristiche e a tutti i tipi di entità creati in quell'archivio di caratteristiche.

  • Tipo di entità: quando imposti un criterio di Identity and Access Management su un tipo di entità, il criterio viene applicato solo al tipo di entità e all'archivio di caratteristiche in cui viene creato il tipo di entità.

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.

Considerazioni

Non puoi impostare i criteri condizionali delle risorse. 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, immagina che la tua organizzazione abbia due insiemi di utenti. Un set gestisce la tua infrastruttura di base nel ruolo di amministratore DevOps. Un altro gruppo gestisce determinati tipi di entità e le loro caratteristiche, come un data engineer.

Un amministratore DevOps gestisce archivi di caratteristiche e 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. I data engineer possono gestire liberamente le funzionalità nei tipi di entità di loro proprietà, ma non possono operare sull'archivio di caratteristiche o su 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. Quando un data engineer richiede un nuovo tipo di entità, l'amministratore crea un nuovo tipo di entità e assegna il ruolo aiplatform.entityTypeOwner al data engineer a livello di tipo di entità (come criterio a livello di risorsa).

Ottieni criterio IAM

Puoi visualizzare l'attuale criterio IAM su un archivio di caratteristiche o un tipo di entità utilizzando l'API o la console Google Cloud.

UI web

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Funzionalità.

    Vai alla pagina Funzionalità

  2. Seleziona una regione dall'elenco a discesa Regione.
  3. Nella tabella delle funzionalità, seleziona un archivio di caratteristiche o un tipo di entità dalla colonna Archivio di caratteristiche o Tipo di entità.
  4. Fai clic su Autorizzazioni.
  5. Per visualizzare le autorizzazioni a livello di risorsa, disattiva Mostra autorizzazioni ereditate.

    Le entità che hanno accesso alla risorsa selezionata sono raggruppate per ruolo.

  6. Espandi un ruolo per vedere quali entità sono assegnate a quel ruolo.

REST

Per ottenere il criterio IAM da una risorsa, invia una richiesta POST che utilizzi il metodo getIamPolicy. L'esempio seguente ottiene un criterio relativo al tipo di entità.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.

Metodo HTTP e URL:

POST http://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 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/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 "http://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:[email protected]"
      ]
    }
  ]
}

Imposta un criterio IAM

Puoi impostare un criterio IAM su un archivio di caratteristiche o un tipo di entità.

UI web

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Funzionalità.

    Vai alla pagina Funzionalità

  2. Seleziona una regione dall'elenco a discesa Regione.
  3. Nella tabella delle funzionalità, seleziona un archivio di caratteristiche o un tipo di entità dalla colonna Archivio di caratteristiche o Tipo di entità.
  4. Fai clic su Autorizzazioni.
  5. Fai clic su Aggiungi entità.
  6. Specifica un'entità e uno o più ruoli da associare all'entità.
  7. Fai clic su Salva.

REST

Per impostare il criterio IAM su una risorsa, invia una richiesta POST che utilizzi il metodo setIamPolicy. L'esempio seguente imposta un criterio su un tipo di entità.

L'impostazione di un criterio IAM sostituisce qualsiasi criterio esistente (le modifiche non vengono aggiunte). Se vuoi 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, è stata rilevata una richiesta SetIamPolicy in parallelo che ha aggiornato il criterio. Crea un GetIamPolicy per ottenere l'etag aggiornato del criterio, poi riprova a effettuare la richiesta SetIamPolicy includendo il nuovo etag.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • 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 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/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 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/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 "http://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:[email protected]"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:[email protected]",
        "user:[email protected]"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:[email protected]",
      ]
    }
  ]
}

Verificare le autorizzazioni IAM per una risorsa

Puoi verificare se l'utente attualmente autenticato dispone di autorizzazioni IAM specifiche per un archivio di caratteristiche o un tipo di entità.

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 consente di verificare se l'utente attualmente autenticato dispone di un set di autorizzazioni IAM per un tipo di entità.

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

  • LOCATION_ID: regione in cui si trova l'archivio di caratteristiche, ad esempio us-central1.
  • PROJECT_ID: il tuo ID progetto.
  • FEATURESTORE_ID: ID dell'archivio di caratteristiche.
  • ENTITY_TYPE_ID: ID del tipo di entità.

Metodo HTTP e URL:

POST http://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 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/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 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}