In diesem Dokument wird beschrieben, wie Sie in Dataform Folgendes tun:
- Erforderlichen Dataform-Zugriff gewähren
- Zugriff auf Dataform mit IAM steuern
- Zugriff auf einzelne Tabellen mit IAM steuern
Hinweis
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Dataform den erforderlichen Zugriff gewähren
In diesem Abschnitt erfahren Sie, wie Sie die IAM-Rollen (Identity and Access Management) zuweisen, die Dataform-Dienstkonten und benutzerdefinierte Dienstkonten zum Ausführen von Workflows in BigQuery benötigen.
Benutzerdefinierte Dienstkonten und Dataform-Dienst-Agents
Sie können benutzerdefinierte Dienstkonten so konfigurieren, dass Workflows in Ihrem Namen ausgeführt werden:
- Auf Repository-Ebene, um alle Workflows in einem bestimmten Repository auszuführen.
- Für jede Workflowkonfiguration einzeln.
Wenn Sie ein Dataform-Repository oder eine Workflow-Konfiguration erstellen, können Sie ein beliebiges Dienstkonto auswählen, für das Sie Berechtigungen zum Ausführen als haben. Sie müssen die erforderlichen „Act-as“-Berechtigungen für alle Dienstkonten konfigurieren, die Ihren Dataform-Ressourcen zugeordnet sind.
Wenn Sie Ihr erstes Dataform-Repository erstellen, wird automatisch ein Dienst-Agent generiert. Dataform verwendet den Dienst-Agent, um in Ihrem Namen mit BigQuery zu interagieren.
Ihre Dataform-Dienst-Agent-ID hat das folgende Format:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Ersetzen Sie PROJECT_NUMBER durch die numerische ID IhresGoogle Cloud -Projekts. Sie finden Ihre Google Cloud Projekt-ID imGoogle Cloud Console-Dashboard. Weitere Informationen finden Sie unter Projektname, -nummer und -ID ermitteln.
Erforderliche Rollen für Dataform-Dienst-Agents, benutzerdefinierte Dienstkonten und Google-Konten
Für die Authentifizierung in Dataform verwendete Dataform-Dienst-Agents, benutzerdefinierte Dienstkonten und Nutzeranmeldedaten für ein Google-Konto (Vorabversion) benötigen die folgenden BigQuery-IAM-Rollen, um Workflows in BigQuery ausführen zu können:
- BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) für Projekte, für die Dataform sowohl Lese- als auch Schreibzugriff benötigt. Dazu gehört in der Regel das Projekt, in dem Ihr Dataform-Repository gehostet wird. - BigQuery Data Viewer (
roles/bigquery.dataViewer) für Projekte, für die Dataform schreibgeschützten Zugriff benötigt. - BigQuery-Jobnutzer (
roles/bigquery.jobUser) für das Projekt, in dem sich Ihr Dataform-Repository befindet. - BigQuery-Dateninhaber (
roles/bigquery.dataOwner), wenn Sie BigQuery-Datasets abfragen möchten. - BigQuery-Rollen für die Zugriffssteuerung auf Spaltenebene, wenn Sie BigQuery-Richtlinien-Tags verwenden möchten.
Weisen Sie dem Dataform-Dienst-Agent außerdem die folgenden Rollen für das effektive Dienstkonto für die Workflowkonfiguration zu. Diese Rollen sind erforderlich, damit der strikte „Act-as“-Modus funktioniert.
- Dienstkontonutzer
(
roles/iam.serviceAccountUser) - Ersteller von Dienstkonto-Token
(
roles/iam.serviceAccountTokenCreator)
Für automatische Repository-Releases und automatische Workflow-Ausführungen gewähren Sie dem Dataform-Dienst-Agent die Berechtigung iam.serviceAccounts.actAs für das effektive Dienstkonto.
Sicherheitsaspekte
Wenn Sie einem Dataform-Dienst-Agent, einem benutzerdefinierten Dienstkonto oder dem Google-Konto eines Nutzers (Vorschau) die von Dataform benötigten Rollen zuweisen, sind die folgenden Sicherheitsaspekte zu berücksichtigen:
Jedes benutzerdefinierte Dienstkonto, dem die erforderlichen Rollen zugewiesen wurden, kann unabhängig von VPC Service Controls auf BigQuery oder Secret Manager in dem Projekt zugreifen, zu dem das Dienstkonto gehört. Wenn Dataform ein benutzerdefiniertes Dienstkonto zum Ausführen von Workflows verwendet, werden die Dataform-Anfragen so behandelt, als würden sie innerhalb des VPC Service Controls-Perimeters des Projekts stammen, das Ihr Repository enthält. Daher wird die Kommunikation zwischen Dataform und anderen Diensten wie BigQuery oder Secret Manager nicht durch VPC Service Controls blockiert, wenn sich diese Ressourcen im selben Dienstperimeter befinden.
Weitere Informationen zum Verwalten dieser Sicherheitsgrenzen finden Sie unter VPC Service Controls konfigurieren.
Jeder Nutzer mit der IAM-Berechtigung
dataform.repositories.createkann Code mit dem Dataform-Dienst-Agent und allen Berechtigungen ausführen, die diesem Dienst-Agent oder Dienstkonto gewährt wurden.Weitere Informationen finden Sie unter Sicherheitsaspekte für Dataform-Berechtigungen.
Um ein sicheres Berechtigungsmodell aufrechtzuerhalten, sollten Sie die Rollenbindungen des Dataform-Dienstkontos regelmäßig prüfen. Eine ausführliche Anleitung zur Überwachung finden Sie unter Dienst-Agent-Berechtigungen mit Security Command Center überwachen.
Wenn Sie die Daten einschränken möchten, die ein Nutzer, Dienst-Agent oder Dienstkonto in BigQuery lesen oder schreiben kann, können Sie ausgewählten BigQuery-Datasets oder -Tabellen detaillierte BigQuery-IAM-Berechtigungen erteilen. Weitere Informationen finden Sie unter Zugriff auf Datasets steuern und Zugriff auf Tabellen und Ansichten steuern.
Damit Nutzer keine Aktionen ausführen können, während sie die Anmeldedaten für das Google-Konto eines anderen Nutzers verwenden, gelten die folgenden Einschränkungen:
- Wenn Sie eine Workflowkonfiguration mit den Nutzeranmeldedaten eines anderen Google-Kontos ändern möchten, müssen Sie die Nutzeranmeldedaten für Ihr eigenes Google-Konto an die Workflowkonfiguration anhängen oder die Workflowkonfiguration so ändern, dass die Authentifizierung mit einem benutzerdefinierten Dienstkonto erfolgt.
- Sie können ein Kompilierungsergebnis für eine Release-Konfiguration nicht ändern, wenn Workflow-Konfigurationen auf die Release-Konfiguration verweisen, an die die Anmeldedaten eines anderen Google-Kontonutzers angehängt sind.
Sie können keine Workflow-Konfiguration festlegen, die sich mit Nutzeranmeldedaten für Google-Konten authentifiziert und auf eine Release-Konfiguration mit einem Zeitplan verweist. Diese Einschränkung hat folgende Konsequenzen:
- Sie können eine Releasekonfiguration nicht so aktualisieren, dass ein Zeitplan verwendet wird, wenn Workflowkonfigurationen, die auf die Releasekonfiguration verweisen, für die Authentifizierung mit Google-Konto-Nutzeranmeldedaten festgelegt sind.
- Sie können keine Workflowkonfiguration erstellen, die sich mit Google-Konto-Nutzeranmeldedaten authentifiziert und auf eine Releasekonfiguration mit einem Zeitplan verweist.
- Sie können keine Workflowkonfiguration erstellen oder aktualisieren, die Nutzeranmeldedaten für Google-Konten verwendet und auf eine Releasekonfiguration mit einem Zeitplan verweist.
Erforderliche BigQuery-Rollen zuweisen
So weisen Sie Ihrem Dataform-Dienst-Agent, einem benutzerdefinierten Dienstkonto, das Sie in Dataform verwenden möchten, oder dem Google-Konto eines Nutzers, das Sie zur Authentifizierung in Dataform verwenden möchten (Vorschau), die erforderlichen BigQuery-IAM-Rollen zu:
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository aus oder erstellen Sie eines.
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Klicken Sie auf Zugriff gewähren.
Geben Sie im Feld Neue Hauptkonten die Dienst-Agent-ID, die Dienstkonto-ID oder die E-Mail-Adresse des Google-Kontos des Nutzers ein (Vorschau).
Wählen Sie in der Liste Rolle auswählen die Rolle BigQuery Job User aus.
Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie in der Liste Rolle auswählen die Rolle BigQuery-Datenbearbeiter aus.
Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie in der Liste Rolle auswählen die Rolle BigQuery Data Viewer aus.
Klicken Sie auf Speichern.
Für automatische Workflows erforderliche Rollen zuweisen
Damit ein benutzerdefiniertes Dienstkonto in Dataform verwendet werden kann, muss der Dataform-Dienst-Agent darauf zugreifen können. So kann Dataform Ihre Workflows mit den Berechtigungen ausführen, die für Ihr benutzerdefiniertes Dienstkonto und nicht für das Konto des Dienst-Agents definiert sind.
Um diesen Zugriff zu gewähren, müssen Sie dem Dataform-Dienst-Agenten als Hauptkonto die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) zuweisen. So kann der Dataform-Dienst-Agent die Identität des Dienstkontos übernehmen, indem er kurzlebige Anmeldedaten (Tokens) erstellt. Diese Tokens sind erforderlich, damit Dataform Workflows mit der Identität des benutzerdefinierten Dienstkontos ausführen kann.
Außerdem müssen Sie dem Dataform-Dienst-Agent die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zuweisen. Dadurch kann der Dataform-Dienst-Agent neue automatische Workflowausführungen für Workflowkonfigurationen starten, die vom benutzerdefinierten Dienstkonto ausgeführt werden.
So gewähren Sie dem Dataform-Dienst-Agent Zugriff auf ein benutzerdefiniertes Dienstkonto:
Rufen Sie in der Google Cloud Console die Seite IAM > Dienstkonten auf.
Wählen Sie das Google Cloud Projekt aus, in dem sich Ihr benutzerdefiniertes Dienstkonto befindet.
Wählen Sie auf der Seite Dienstkonten für das Projekt „PROJECT_NAME“ Ihr benutzerdefiniertes Dienstkonto aus.
Rufen Sie Hauptkonten mit Zugriff auf und klicken Sie auf Zugriff gewähren.
Geben Sie im Feld Neue Hauptkonten die ID Ihres Dataform-Dienst-Agents ein.
Ihre Dataform-Dienst-Agent-ID hat das folgende Format:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comWählen Sie in der Liste Rolle auswählen die Rolle Ersteller von Dienstkonto-Tokens und die Rolle Dienstkontonutzer aus.
Klicken Sie auf Speichern.
Das benutzerdefinierte Dienstkonto kann jetzt in Ihrem Dataform-Repository konfiguriert werden.
Dienstkontokonfigurationen prüfen
In diesem Abschnitt erfahren Sie, wie Sie Ihre Dataform-Ressourcen prüfen, um die richtige Verwendung von Dienstkonten und die Erteilung von Berechtigungen sicherzustellen. Die Überwachung ist besonders wichtig, wenn benutzerdefinierte Dienstkonten verwendet werden, da für den Dataform-Dienst-Agent bestimmte Berechtigungen erforderlich sind.
Wenn Sie ein benutzerdefiniertes Dienstkonto für ein Dataform-Repository oder eine Workflowkonfiguration verwenden, müssen Sie prüfen, ob der Dataform-Dienst-Agent die Rolle Dienstkontonutzer (roles/iam.serviceAccountUser) für das benutzerdefinierte Dienstkonto hat. Diese Rolle gewährt die Berechtigung iam.serviceAccounts.actAs, mit der geplante Ausführungen, die vom Dataform-Dienst-Agent initiiert werden, die Identität des benutzerdefinierten Dienstkontos übernehmen können. Prüfen Sie außerdem, ob der Dataform-Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) für das effektive Dienstkonto hat.
Dienstkonten für Repositorys überprüfen
Identifizieren Sie zuerst die dataform.Repository-Assets, die für die eigene Planung und Ausführung von Dataform infrage kommen. Prüfen Sie dann die Dienstkontokonfigurationen für diese Repositorys.
Verwenden Sie Cloud Asset Inventory, um alle Ressourcen des Typs
dataform.Repositoryaufzulisten. Weitere InformationenPrüfen Sie für jedes Repository in der Cloud Asset Inventory-Ausgabe das Feld
resource.data.labels, um festzustellen, ob es im Umfang enthalten ist. Der genaue Pfad kann je nach Exportformat leicht variieren.Nicht berücksichtigte Repositories lassen sich anhand des Schlüssels
single-file-asset-typein der Label-Zuordnung identifizieren. Das Vorhandensein dieses Schlüssels weist darauf hin, dass das Repository von einem BigQuery-Feature verwendet wird. Wenn der Wertsqloderdata_canvasist, kann das Repository von den Berechtigungsprüfungen des Dienstkontos ausgeschlossen werden.Die verbleibenden Repositories, in denen dieser Schlüssel oder diese Werte fehlen, sind im Bereich der Berechtigungsprüfungen für Dienstkonten.
Prüfen Sie für jedes Repository, das in den Anwendungsbereich fällt, das Feld
resource.data.serviceAccountin der Ausgabe von Cloud Asset Inventory, um festzustellen, ob ein benutzerdefiniertes Dienstkonto konfiguriert ist:- Wenn das Feld
resource.data.serviceAccountvorhanden ist und sein Wert sich von der E-Mail-Adresse des Dataform-Dienst-Agents des Projekts unterscheidet, wird im Repository ein benutzerdefiniertes Dienstkonto verwendet. Wenn das Feld
resource.data.serviceAccountfehlt oder der Wert des Felds mit dem Dataform-Dienstkonto des Projekts übereinstimmt, wird das Dienstkonto für das Repository verwendet.
- Wenn das Feld
Wenn ein benutzerdefiniertes Dienstkonto verwendet wird, prüfen Sie, ob der Dataform-Dienst-Agent für dieses benutzerdefinierte Dienstkonto sowohl die Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) als auch die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) hat.
Dienstkonten für die Workflowkonfiguration prüfen
Die Verwendung dedizierter benutzerdefinierter Dienstkonten für Dataform-Workflowkonfigurationen ist eine Best Practice für die Sicherheit, die dem Prinzip der geringsten Berechtigung entspricht.
So prüfen Sie die Verwendung von Dienstkonten für dataform.WorkflowConfig resources:
Verwenden Sie Cloud Asset Inventory, um alle Ressourcen des Typs
dataform.WorkflowConfigaufzulisten.Untersuchen Sie für jede Workflowkonfiguration die Cloud Asset Inventory-Ausgabe, um das effektive Dienstkonto zu ermitteln:
- Wenn das Feld
resource.data.serviceAccountvorhanden ist, ist dieser Wert die E-Mail-Adresse des Dienstkontos, das explizit in der Workflowkonfiguration festgelegt wurde. - Wenn das Feld
resource.data.serviceAccountfehlt, übernimmt die Workflowkonfiguration das Dienstkonto aus dem übergeordneten Repository. Sehen Sie in der Konfiguration des übergeordneten Repositorys nach, um das effektive Dienstkonto zu ermitteln.
- Wenn das Feld
Prüfen Sie, ob ein benutzerdefiniertes Dienstkonto verwendet wird, indem Sie die E-Mail-Adresse des effektiven Dienstkontos mit der E-Mail-Adresse des Dataform-Dienst-Agents des Projekts vergleichen. Wenn sie sich unterscheiden, wird ein benutzerdefiniertes Dienstkonto verwendet.
Wenn ein benutzerdefiniertes Dienstkonto verwendet wird, muss dem Dataform-Dienst-Agenten für dieses benutzerdefinierte Dienstkonto sowohl die Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) als auch die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) zugewiesen sein. Mit diesen Berechtigungen kann der Dataform-Dienst-Agent Workflow-Ausführungen starten, indem er die Identität des benutzerdefinierten Dienstkontos übernimmt.
Berechtigungen von Dienst-Agents mit Security Command Center überwachen
Um die Einhaltung des Prinzips der geringsten Berechtigung zu gewährleisten, sollten Sie Ihr Projekt in Security Command Center aktiv auf Ergebnisse im Zusammenhang mit Dienstkonten und Dienst-Agents mit zu vielen Berechtigungen überwachen.
Eine Anleitung zum Prüfen und Anwenden von Empfehlungen zur Fehlerbehebung in Security Command Center finden Sie unter IAM Recommender-Ergebnisse und Identitätsergebnisse in der Console untersuchen.
Wenn Sie einen SERVICE_AGENT_GRANTED_BASIC_ROLE-Befund für einen Dataform-Dienst-Agent beheben, ersetzen Sie die Rolle mit den nicht erforderlichen Berechtigungen durch eine vordefinierte Rolle mit den minimal erforderlichen Berechtigungen, die auf die jeweilige Ressource beschränkt sind. Weisen Sie beispielsweise die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für ein bestimmtes Dienstkonto zu.
Zugriff auf Dataform mit IAM steuern
In diesem Abschnitt werden die Optionen zur Zugriffssteuerung für Dataform beschrieben. Außerdem erfahren Sie, wie Sie Dataform-Rollen aufrufen und zuweisen. Dataform verwendet Identity and Access Management (IAM) für die Zugriffssteuerung. Weitere Informationen zu Rollen und Berechtigungen in IAM finden Sie im Index für IAM-Rollen und -Berechtigungen.
Vordefinierte Dataform-Rollen
In der folgenden Tabelle sind die vordefinierten Rollen aufgeführt, die den Zugriff auf Dataform-Ressourcen ermöglichen:
| Role | Permissions |
|---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|