Benutzerdefiniertes Dienstkonto für Cloud Build

Überblick

Cloud Functions nutzt Cloud Build beim Erstellen und Bereitstellen Ihrer Cloud Functions-Funktion. Cloud Functions verwendet beim Ausführen des Builds standardmäßig das Cloud Build-Standarddienstkonto als Hauptkonto. In diesem Dokument wird beschrieben, wie Sie ein vom Nutzer erstelltes Dienstkonto übergeben, das von Cloud Build verwendet werden soll, wenn Sie Ihre Funktion bereitstellen.

Sie können Funktionen mit benutzerdefinierten Dienstkonten über die Google Cloud CLI, die Google Cloud Console oder die Cloud Functions API bereitstellen.

Im Folgenden finden Sie einige Szenarien, in denen Sie möglicherweise ein anderes Dienstkonto angeben möchten, das beim Erstellen der Funktion von Cloud Build verwendet wird:

  • Sie möchten mehr Kontrolle darüber haben, welche Dienstkonten Ihrem VPC-SC-Perimeter hinzugefügt werden sollen.

  • Sie möchten, dass Cloud Build andere Berechtigungen als das Standarddienstkonto hat, ohne jede Berechtigung einzeln widerrufen zu müssen.

  • Sie möchten detaillierte Cloud Build-Berechtigungen für Ihre Funktionen festlegen. Geben Sie dazu kein Cloud Build-Dienstkonto frei, das für andere Zwecke optimiert ist.

APIs aktivieren

Für dieses Feature muss die IAM API aktiviert sein.

Verwenden Sie die Google Cloud CLI, um die APIs zu aktivieren, die zum Bereitstellen einer Cloud Functions-Funktion erforderlich sind, oder verwenden Sie die Google Cloud Console:

gcloud services enable iam.googleapis.com

Dienstkonto konfigurieren

In diesem Dokument wird beschrieben, wie Sie ein neues Dienstkonto erstellen und die erforderlichen Berechtigungen erteilen. Wenn Sie ein vorhandenes Dienstkonto verwenden möchten, benötigen Sie die E-Mail-Adresse des Dienstkontos, das Sie nutzen möchten. Weitere Informationen finden Sie unter Benutzerdefinierte Dienstkonten konfigurieren.

Sie können Ihre vorhandenen Dienstkonten so aufrufen oder die Google Cloud Console verwenden:

gcloud iam service-accounts list

Dienstkonto erstellen

Verwenden Sie die Google Cloud CLI, um Ihr Dienstkonto zu erstellen, oder verwenden Sie die Google Cloud Console:

gcloud iam service-accounts create SA_EMAIL

Ersetzen Sie SA_EMAIL durch die E-Mail-Adresse Ihres Dienstkontos.

Berechtigungen gewähren

Das von Ihnen verwendete Dienstkonto benötigt die folgenden Rollen:

Gewähren Sie die folgenden Rollen über die Google Cloud CLI oder verwenden Sie die Google Cloud Console.

gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
    --role=roles/logging.logWriter

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID..
  • SA_EMAIL: Die E-Mail-Adresse Ihres Dienstkontos.
  • SA_PROJECT_ID: Die Projekt-ID Ihres Dienstkontos.
  • DEPLOYING_USER_EMAIL: Die E-Mail-Adresse des Nutzers, der die Funktion bereitstellt.

Funktion mit benutzerdefiniertem Dienstkonto bereitstellen

Sie können das Google Cloud CLI verwenden, um eine Funktion bereitzustellen, die ein benutzerdefiniertes Dienstkonto für Cloud Build verwendet:

  • Das Flag --build-service-account gibt ein IAM-Dienstkonto an, dessen Anmeldedaten für den Build-Schritt verwendet werden. Wenn kein benutzerdefiniertes Dienstkonto angegeben ist, verwendet die Funktion das Standarddienstkonto des Projekts für Cloud Build.
  • Sie können optional einen privaten Pool verwenden, den Sie mit dem Flag --build-worker-pool angeben.

gcloud beta functions deploy FUNCTION_NAME \
   --gen2 \
   --region=REGION \
   --project=PROJECT_ID \
   --runtime=RUNTIME \
   --entry-point=CODE_ENTRYPOINT \
   --build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
   --memory=256Mi \
   --trigger-http \
   --source=.

Ersetzen Sie Folgendes:

  • FUNCTION_NAME: Der Name, unter dem Sie die Funktion bereitgestellt haben.
  • REGION: Der Name der Google Cloud-Region, in der Sie die Funktion bereitstellen möchten (z. B. us-west1).
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID..
  • RUNTIME: Die Laufzeitversion einer unterstützten Laufzeitversion, um die Funktion auszuführen, z. B. nodejs18.
  • CODE_ENTRYPOINT: Der Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der beim Ausführen der Funktion ausgeführt wird.
  • SA_EMAIL: Die E-Mail-Adresse Ihres Dienstkontos.