Zugriff auf Vertex AI-Endpunkte steuern

Auf dieser Seite wird erläutert, wie Sie den Zugriff auf einen Vertex AI-Endpunkt steuern. Dazu legen Sie eine IAM-Richtlinie fest. Es wird davon ausgegangen, dass Sie mit IAM-Konzepten wie Richtlinien, Rollen, Berechtigungen und Hauptkonten vertraut sind, wie unter Vertex AI-Zugriffssteuerung mit IAM und Konzepte der Zugriffsverwaltung beschrieben.

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.

IAM-Richtlinie abrufen

Sie können die aktuelle IAM-Richtlinie an einem Vertex AI-Endpunkt mithilfe der REST API aufrufen. Dazu benötigen Sie die Berechtigung endpoints.getIamPolicy für den Endpunkt oder das Projekt. Die Rolle "Vertex AI-Administrator" (roles/aiplatform.admin) gewährt diese Berechtigung.

REST

Senden Sie zum Abrufen der IAM-Richtlinie aus einer Ressource eine POST-Anfrage, die die Methode getIamPolicy verwendet.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Endpunkt befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • ENDPOINT_ID: Die ID des Endpunkts.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort mit der aktuellen IAM-Richtlinie erhalten:

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

IAM-Richtlinie festlegen

Mit der REST API können Sie eine IAM-Richtlinie an einem Endpunkt festlegen. Dazu benötigen Sie die Berechtigung endpoints.setIamPolicy für den Endpunkt oder das Projekt. Die Rolle "Vertex AI-Administrator" (roles/aiplatform.admin) gewährt diese Berechtigung.

REST

Senden Sie eine POST-Anfrage, die die Methode setIamPolicy verwendet, um die IAM-Richtlinie für eine Ressource festzulegen.

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, bedeutet dies, dass durch eine gleichzeitige setIamPolicy-Anfrage die Richtlinie bereits aktualisiert wurde. Verwenden Sie die Methode getIamPolicy, um das aktualisierte etag der Richtlinie abzurufen. Wiederholen Sie dann die setIamPolicy-Anfrage mit dem neuen etag.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Endpunkt befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • ENDPOINT_ID: Die ID des Endpunkts.
  • ROLE: Eine IAM-Rolle mit den zu erteilenden Berechtigungen, z. B. roles/aiplatform.user.
  • PRINCIPAL: Das Hauptkonto, dem die Berechtigungen der Rolle erteilt werden, z. B. user:myuser@example.com.
  • 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 https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort mit der aktuellen IAM-Richtlinie erhalten:

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

IAM-Berechtigungen eines Nutzers für einen Endpunkt prüfen

Sie können prüfen, ob der aktuell authentifizierte Nutzer bestimmte IAM-Berechtigungen für einen Endpunkt 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 Endpunkt hat.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Endpunkt befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • ENDPOINT_ID: Die ID des Endpunkts.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d

JSON-Text der Anfrage:

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

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 \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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 "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_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/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}