Benutzerdefiniertes Dienstkonto verwenden

Sie können AI Platform Prediction so konfigurieren, dass ein Dienstkonto Ihrer Wahl verwendet wird, wenn benutzerdefinierter Code für Vorhersagen ausgeführt wird. Dabei haben Sie die Möglichkeit, ein benutzerdefiniertes Dienstkonto mit einem der folgenden Schritte auszuführen:

Mit einem benutzerdefinierten Dienstkonto können Sie festlegen, auf welche Google Cloud-Ressourcen Ihr benutzerdefinierter Bereitstellungscode zugreifen darf, ohne dass Sie dem Dienstkonto, das AI Platform Prediction standardmäßig verwendet, zu viele Berechtigungen erteilen müssen.

Der Schwerpunkt der Anleitung liegt auf den Berechtigungen von AI Platform Prediction-Ressourcen für den Zugriff auf andere Google Cloud-Ressourcen. Weitere Informationen zu den Berechtigungen, die Sie benötigen, um auf AI Platform Prediction-Ressourcen zuzugreifen, finden Sie unter Zugriffssteuerung.

Informationen zum Dienst-Agent

Standardmäßig verwendet AI Platform Prediction einen Dienst-Agent, um Onlinevorhersagen von Modellversionen bereitzustellen, die keine benutzerdefinierten Container verwenden. Dieser Dienst-Agent wird durch eine E-Mail-Adresse mit dem folgenden Format identifiziert:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER muss durch die Projektnummer für Ihr Google Cloud-Projekt ersetzt werden.

Suchen Sie das entsprechende Dienstkonto für Ihr Projekt in der Google Cloud Console oder mithilfe der Google Cloud CLI:

Google Cloud Console

Rufen Sie in der Google Cloud Console die Seite IAM auf, wählen Sie Von Google bereitgestellte Rollenzuweisungen hinzufügen aus und suchen Sie das Hauptkonto, das mit dem E-Mail-Adressformat übereinstimmt, wie im vorherigen Abschnitt beschrieben. Das Dienstkonto hat auch den Namen Google Cloud ML Engine Service Agent.

Zur Seite "IAM"

gcloud

Führen Sie den folgenden Befehl in einer Shell-Umgebung aus, in der Sie die gcloud CLI initialisiert haben:

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

Dieser Befehl gibt Folgendes aus:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT ist die E-Mail-Adresse des AI Platform-Dienst-Agents Ihres Projekts.

Dieser Dienst-Agent hat Berechtigungen, die für die meisten Modellversionen angemessen sind. Beispielsweise kann es aus Cloud Storage-Buckets im selben Google Cloud-Projekt lesen.

Wenn Ihre benutzerdefinierten Vorhersageroutinen mit zusätzlichen Berechtigungen ausgeführt werden sollen, können Sie diesem Dienstkonto weitere Rollen der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) zuweisen. Beispielsweise haben Sie die Möglichkeit, Zugriff auf Cloud Storage-Buckets in anderen Google Cloud-Projekten zu gewähren.

Standardmäßig in benutzerdefinierten Containern verwendetes Dienstkonto

Wenn Ihre Modellversion einen benutzerdefinierten Container verwendet, wird der Container standardmäßig nicht mit dem AI Platform-Dienst-Agent ausgeführt. Stattdessen wird er mit einem Dienstkonto ausgeführt, das von AI Platform Prediction verwaltet wird. Dieses Dienstkonto hat die Berechtigung Modellartefakte lesen, mit der AI Platform Prediction unter einem in der Umgebungsvariable AIP_STORAGE_URI gespeicherten URI verfügbar gemacht werden kann.

Sie können die Berechtigungen dieses Dienstkontos, die standardmäßig in benutzerdefinierten Containern verwendet werden, nicht ändern. Wenn Sie die für Ihren benutzerdefinierten Container verfügbaren Berechtigungen anpassen möchten, finden Sie in den folgenden Abschnitten Informationen zur Verwendung eines benutzerdefinierten Dienstkontos mit Ihrer Modellversion.

Benutzerdefiniertes Dienstkonto verwenden

Wenn Sie Google Cloud-Berechtigungen für eine bestimmte Modellversion gewähren oder einschränken möchten, verwenden Sie ein benutzerdefiniertes Dienstkonto anstelle des Dienst-Agents.

Richten Sie dazu als Erstes ein benutzerdefiniertes Dienstkonto ein. Geben Sie dann dieses benutzerdefinierte Dienstkonto an, wenn Sie eine Modellversion erstellen.

Benutzerdefiniertes Dienstkonto einrichten

So richten Sie ein benutzerdefiniertes Dienstkonto ein:

  1. Erstellen Sie ein vom Nutzer verwaltetes Dienstkonto.

  2. Weisen Sie dem neuen Dienstkonto IAM-Rollen zu, um den Code für die Vorhersage mit allen Berechtigungen bereitzustellen, die für die Ausführung erforderlich sind.

  3. Wenn sich das nutzerverwaltete Dienstkonto in einem anderen Projekt als Ihre Modellversionen befindet, konfigurieren Sie das nutzerverwaltete Dienstkonto, damit Sie es an Ihren Modellversionen anhängen können.

  1. Gewähren Sie dem AI Platform-Dienst-Agent Ihres Projekts die Rolle „Dienstkontoadministrator“ (roles/iam.serviceAccountAdmin) für das neue benutzerdefinierte Dienstkonto. Verwenden Sie dazu die gcloud CLI, um den folgenden Befehl auszuführen:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    Ersetzen Sie in diesem Befehl die folgenden Platzhalter:

    • GOOGLE_MANAGED_SERVICE_ACCOUNT ist die E-Mail-Adresse des Google Cloud ML Engine Service Agent Ihres Projekts. Informationen zum Ermitteln dieser E-Mail-Adresse erhalten Sie in einem vorherigen Abschnitt dieses Leitfadens.

    • CUSTOM_SERVICE_ACCOUNT ist die E-Mail-Adresse des neuen nutzerverwalteten Dienstkontos, das Sie in einem vorherigen Schritt dieses Abschnitts erstellt haben.

Benutzerdefiniertes Dienstkonto für Ihre Modellversion angeben

Um dem Code zur Vorhersagebereitstellung Zugriff auf ein benutzerdefiniertes Dienstkonto zu gewähren, legen Sie beim Erstellen einer Modellversion das Feld serviceAccount fest. Beachten Sie, dass die Modellversion entweder einen benutzerdefinierten Container oder einen benutzerdefinierten Vorhersageablauf verwenden muss.

Wenn Sie mit der gcloud CLI eine Modellversion erstellen, können Sie das Flag --service-account mit der Komponente gcloud beta verwenden. Beispiel:

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

Ersetzen Sie Folgendes:

Nächste Schritte