Zugriff auf Vertex AI Feature Store-Ressourcen (Legacy) steuern

Sie können den Zugriff auf Vertex AI Feature Store-Ressourcen (Legacy) steuern, indem Sie IAM-Richtlinien auf verschiedenen Ebenen der Ressourcenhierarchie festlegen. Beispiel:

  • Eine IAM-Richtlinie auf Projektebene gilt für alle Ressourcen in einem Projekt. Sie können eine Richtlinie auf Projektebene festlegen, um Nutzern Berechtigungen zum Lesen aller Feature Stores in Ihrem Projekt zu gewähren.

  • Mit einer IAM-Richtlinie auf Ressourcenebene können Sie angeben, welche Nutzer auf bestimmte Ressourcen zugreifen können. Für eine Untergruppe von Nutzern können Sie eine Richtlinie auf Ressourcenebene festlegen, um bestimmten Featurestores in Ihrem Projekt Schreibberechtigungen zu gewähren.

Sie können IAM-Richtlinien (Identity and Access Management) auf Ressourcenebene für die folgenden Vertex AI Feature Store-Ressourcen (Legacy) festlegen:

  • Feature Store: Wenn Sie eine Identity and Access Management-Richtlinie für einen Feature Store festlegen, gilt die Richtlinie für den Feature Store und alle in diesem Feature erstellten Entitätstypen.

  • Entitätstyp: Wenn Sie eine Identitäts- und Zugriffsverwaltungsrichtlinie für einen Entitätstyp festlegen, gilt die Richtlinie nur für den Entitätstyp und den Feature Store, in dem der Entitätstyp erstellt wird.

Eine IAM-Richtlinie enthält eine oder mehrere Rollenbindungen, die definieren, welche IAM-Rollen welchen Hauptkonten zugeordnet sind. Eine Rolle ist eine Sammlung von Berechtigungen, die Sie einem Hauptkonto erteilen. Vertex AI bietet vordefinierte Rollen, die Sie in Ihren Richtlinien verwenden können. Sie können auch eigene benutzerdefinierte Rollen erstellen.

Hinweise

Sie können keine bedingten Ressourcenrichtlinien festlegen. Beispielsweise können Sie keine Richtlinie erstellen, die Zugriff auf Ressourcen mit einem Namen gewährt, der mit einem bestimmten String wie testing beginnt.

Beispielanwendungsfall

Angenommen, Ihre Organisation hat zwei Nutzergruppen. Ein Satz verwaltet Ihre zentrale Infrastruktur in einer DevOps-Administratorrolle. Ein anderer Satz verwaltet bestimmte Entitätstypen und deren Features, z. B. einen Data Engineer.

Ein DevOps-Administrator verwaltet Feature Stores und Entitätstypen auf Projektebene. Wenn Data Engineers einen neuen Entitätstyp anfordern, kann ein DevOps-Administrator die Inhaberschaft dieses Entitätstyps erstellen und an die Data Engineers delegieren. Data Engineers können Features in ihren Entitätstypen frei verwalten, aber nicht mit dem Feature Store oder anderen Entitätstypen arbeiten. So können beispielsweise DevOps-Administratoren den Zugriff auf Entitätstypen beschränken, die vertrauliche Informationen enthalten.

In diesem Szenario hat der DevOps-Administrator die Rolle aiplatform.featurestoreAdmin auf Projektebene. Wenn ein Data Engineer dann einen neuen Entitätstyp anfordert, erstellt der Administrator einen neuen Entitätstyp und weist dann dem Data Engineer auf Ebene des Entitätstyps die Rolle aiplatform.entityTypeOwner zu (als Richtlinie auf Ressourcenebene).

IAM-Richtlinie abrufen

Sie können die aktuelle IAM-Richtlinie für einen Feature Store oder Entitätstyp mithilfe der Google Cloud Console oder der API aufrufen.

Web-UI

  1. Rufen Sie im Bereich "Vertex AI" der Google Cloud Console die Seite Features auf.

    Zur Seite „Features“

  2. Wählen Sie eine Region aus der Drop-down-Liste Region aus.
  3. Wählen Sie in der Tabelle der Features einen Feature Store oder Entitätstyp aus der Spalte Feature Store oder Entitätstyp aus.
  4. Klicken Sie auf Berechtigungen.
  5. Um Berechtigungen auf Ressourcenebene anzuzeigen, deaktivieren Sie Übernommene Berechtigungen anzeigen.

    Hauptkonten, die Zugriff auf die ausgewählte Ressource haben, werden nach Rolle gruppiert.

  6. Maximieren Sie eine Rolle, um zu sehen, welche Hauptkonten dieser Rolle zugewiesen sind.

REST

Senden Sie zum Abrufen der IAM-Richtlinie aus einer Ressource eine POST-Anfrage, die die Methode getIamPolicy verwendet. Im folgenden Beispiel wird eine Richtlinie für Entitätstypen abgerufen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.

HTTP-Methode und URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

IAM-Richtlinie festlegen

Sie können eine IAM-Richtlinie für einen Feature Store oder Entitätstyp festlegen.

Web-UI

  1. Rufen Sie im Bereich "Vertex AI" der Google Cloud Console die Seite Features auf.

    Zur Seite „Features“

  2. Wählen Sie eine Region aus der Drop-down-Liste Region aus.
  3. Wählen Sie in der Tabelle der Features einen Feature Store oder Entitätstyp aus der Spalte Feature Store oder Entitätstyp aus.
  4. Klicken Sie auf Berechtigungen.
  5. Klicken Sie auf Hauptkonto hinzufügen.
  6. Geben Sie ein Hauptkonto und eine oder mehrere Rollen an, die dem Hauptkonto zugeordnet werden sollen.
  7. Klicken Sie auf Speichern.

REST

Senden Sie eine POST-Anfrage, die die Methode setIamPolicy verwendet, um die IAM-Richtlinie für eine Ressource festzulegen. Im folgenden Beispiel wird eine Richtlinie für einen Entitätstyp festgelegt.

Durch das Festlegen einer IAM-Richtlinie werden alle vorhandenen Richtlinien überschrieben (Änderungen werden nicht angehängt). Wenn Sie die vorhandene Richtlinie einer Ressource ändern möchten, verwenden Sie die Methode getIamPolicy, um die vorhandene Richtlinie abzurufen und dann Änderungen vorzunehmen. Fügen Sie Ihre geänderte Richtlinie zusammen mit dem etag in Ihre setIamPolicy-Anfrage ein.

Wenn Sie den Fehlercode 409 erhalten, gab es gleichzeitig eine SetIamPolicy-Anfrage, durch die die Richtlinie aktualisiert wurde. Stellen Sie eine GetIamPolicy-Anfrage, um das aktualisierte ETag der Richtlinie abzurufen. Wiederholen Sie dann die SetIamPolicy-Anfrage, indem Sie das neue ETag einschließen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • ROLE: Eine IAM-Rolle mit den zu erteilenden Berechtigungen, z. B. roles/aiplatform.featurestoreDataViewer.
  • PRINCIPAL: Das Hauptkonto, dem die Berechtigungen der Rolle erteilt werden, z. B. user:[email protected].
  • ETAG: Ein Stringwert, mit dem verhindert wird, dass sich gleichzeitige Aktualisierungen einer Richtlinie gegenseitig überschreiben. Dieser Wert wird als Teil der getIamPolicy-Antwort zurückgegeben.

HTTP-Methode und URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy

JSON-Text der Anfrage:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "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]",
      ]
    }
  ]
}

IAM-Berechtigungen für eine Ressource prüfen

Sie können prüfen, ob der aktuell authentifizierte Nutzer bestimmte IAM-Berechtigungen für einen Feature Store oder Entitätstyp hat.

REST

Senden Sie eine POST-Anfrage, die die Methode testIamPermissions verwendet, um zu prüfen, ob ein Nutzer bestimmte IAM-Berechtigungen für eine Ressource hat. Im folgenden Beispiel können Sie testen, ob der aktuell authentifizierte Nutzer eine Reihe von IAM-Berechtigungen für einen Entitätstyp hat.

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Featurestore befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.

HTTP-Methode und URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

JSON-Text der Anfrage:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten: Die Antwort enthält nur die Berechtigungen aus dem JSON-Text der Anfrage, die dem derzeit authentifizierten Nutzer zur Verfügung stehen.
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}