In diesem Dokument wird beschrieben, wie Sie in Dataform Folgendes tun können:
- Erforderlichen Dataform-Zugriff gewähren
- Zugriff auf Dataform mit IAM steuern
- Zugriff auf einzelne Tabellen mit IAM steuern
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
Auf Repository-Ebene, um alle Workflows in einem bestimmten Repository auszuführen.
Für jede Workflow-Konfiguration einzeln.
- BigQuery-Dateneditor 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 für Projekte, für die Dataform schreibgeschützten Zugriff benötigt.
- BigQuery-Jobnutzer für das Projekt, in dem Ihr Dataform-Repository gehostet wird.
- BigQuery-Dateninhaber, wenn Sie BigQuery-Datasets abfragen möchten.
- BigQuery-Rollen für die Zugriffssteuerung auf Spaltenebene, wenn Sie BigQuery-Richtlinien-Tags verwenden möchten.
Jedes Dienstkonto, dem die erforderlichen Rollen zugewiesen wurden, kann unabhängig von VPC Service Controls Zugriff auf BigQuery oder Secret Manager in dem Projekt erhalten, zu dem das Dienstkonto gehört.
Weitere Informationen finden Sie unter VPC Service Controls für Dataform konfigurieren.
Jeder Nutzer mit der IAM-Berechtigung
dataform.repositories.create
kann Code mit dem Standard-Dataform-Dienstkonto und allen Berechtigungen ausführen, die diesem Dienstkonto gewährt wurden.Weitere Informationen finden Sie unter Sicherheitsaspekte für Dataform-Berechtigungen.
- Wenn Sie eine Workflowkonfiguration ändern möchten, an die die Anmeldedaten eines anderen Google-Kontonutzers angehängt sind, müssen Sie Ihre eigenen Google-Kontonutzeranmeldedaten an die Workflowkonfiguration anhängen oder die Workflowkonfiguration so ändern, dass die Authentifizierung mit einem 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 Google-Konto-Anmeldedaten authentifiziert und auf eine Release-Konfiguration mit einem Zeitplan verweist. Diese Einschränkung hat folgende Konsequenzen:
- Sie können eine Release-Konfiguration nicht so aktualisieren, dass ein Zeitplan verwendet wird, wenn Workflow-Konfigurationen auf die Release-Konfiguration verweisen, die für die Authentifizierung mit Google-Konto-Anmeldedaten festgelegt sind.
- Sie können keine Workflowkonfiguration erstellen, die sich mit Nutzeranmeldedaten für Google-Konten 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.
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 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-Jobnutzer 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-Datenbetrachter aus.
Klicken Sie auf Speichern.
Google Cloud Rufen Sie in der Console IAM > Dienstkonten auf.
Wählen Sie ein Projekt aus.
Wählen Sie auf der Seite Dienstkonten für das Projekt „PROJECT_NAME“ Ihr benutzerdefiniertes Dataform-Dienstkonto aus.
Klicken Sie auf Berechtigungen und dann auf Zugriff gewähren.
Geben Sie im Feld Neue Hauptkonten die ID Ihres Dataform-Standarddienstkontos ein.
Die ID Ihres Dataform-Standarddienstkontos hat das folgende Format:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Wählen Sie in der Liste Rolle auswählen die Rolle Ersteller von Dienstkonto-Tokens aus.
Klicken Sie auf Speichern.
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- BigQuery Admin (
roles/bigquery.admin
) - BigQuery-Jobnutzer(
roles/bigquery.jobUser
) - BigQuery Studio Nutzer (
roles/bigquery.studioUser
) - BigQuery-Nutzer (
roles/bigquery.user
) - Code Creator (
roles/dataform.codeCreator
) - Code Editor (
roles/dataform.codeEditor
) - Code-Inhaber (
roles/dataform.codeOwner
) - Colab Enterprise-Nutzer (
roles/aiplatform.colabEnterpriseUser
) - Dataform Admin (
roles/dataform.admin
) Rufen Sie die Seite IAM & Verwaltung > Rollen auf.
Wählen Sie im Feld Filter die Option Verwendet in aus, geben Sie
Dataform
ein und drücken Sie die Eingabetaste.Klicken Sie auf eine der aufgelisteten Rollen, um die Berechtigungen der Rolle im rechten Bereich anzuzeigen.
Die Rolle „Dataform-Administrator“ hat beispielsweise vollen Zugriff auf alle Dataform-Ressourcen.
Übergeben Sie im Terminal die Dataform API-Anfrage
repositories.setIamPolicy
mit einer Zugriffsrichtlinie.Binden Sie in der Richtlinie einen Nutzer, eine Gruppe, eine Domain oder ein Dienstkonto an eine ausgewählte Rolle im folgenden Format:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }
Ersetzen Sie Folgendes:
ROLE
: Die Dataform-IAM-Rolle, die Sie für das Repository zuweisen möchten.TYPE
:user
,group
,domain
oderserviceAccount
.IDENTIFIER
: Der Nutzer, die Gruppe, die Domain oder das Dienstkonto, dem Sie die Rolle zuweisen möchten.
Achten Sie auf der IAM-Seite darauf, dass alle Nutzer die vollständige Liste der Dataform-Repositories über eine Dataform-Rolle mit der Berechtigung
dataform.repositories.list
aufrufen können.Achten Sie in IAM darauf, dass nur Nutzer, die vollen Zugriff auf alle Dataform-Repositories benötigen, die Rolle „Dataform-Administrator“ für alle Repositories erhalten.
Übergeben Sie im Terminal die Dataform API-Anfrage
repositories.setIamPolicy
mit einer Zugriffsrichtlinie.Binden Sie in der Richtlinie das
allAuthenticatedUsers
-Hauptkonto an eine ausgewählte Rolle im folgenden Format:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }
Ersetzen Sie
ROLE
durch eine Dataform-IAM-Rolle, die Sie allen authentifizierten Nutzern zuweisen möchten.Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository und dann einen Arbeitsbereich aus.
Maximieren Sie im Bereich Dateien das Verzeichnis
definitions/
.Wählen Sie die
.sqlx
-Definitionsdatei der Tabelle oder Ansicht aus, auf die Sie Zugriff gewähren möchten.Geben Sie in die Datei das folgende Code-Snippet ein:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
Ersetzen Sie Folgendes:
ROLE_LIST: Die BigQuery-Rolle oder eine Liste von durch Kommas getrennten BigQuery-Rollen, die Sie zuweisen möchten.
RESOURCE_TYPE:
TABLE
oderVIEW
.USER_LIST: die durch Kommas getrennte Liste der Nutzer, denen die Rolle zugewiesen wird.
Eine Liste der gültigen Formate finden Sie unter user_list.
Optional: Klicken Sie auf Formatieren.
Führen Sie die Tabelle oder Ansicht aus.
Wenn Sie Zugriff auf eine inkrementelle Tabelle gewährt haben, entfernen Sie die
GRANT
-Anweisung nach der ersten Ausführung aus der Tabellendefinitionsdatei.Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository und dann einen Arbeitsbereich aus.
Maximieren Sie im Bereich Dateien das Verzeichnis
definitions/
.Wählen Sie die
.sqlx
-Definitionsdatei der Tabelle oder Ansicht aus, für die Sie den Zugriff widerrufen möchten.Geben Sie im
post_operations
-Block die folgendeREVOKE
-Anweisung ein:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
Ersetzen Sie Folgendes:
- ROLE_LIST: Die BigQuery-Rolle oder Liste der durch Kommas getrennten BigQuery-Rollen, die Sie widerrufen möchten.
- RESOURCE_TYPE:
TABLE
oderVIEW
. - USER_LIST: die durch Kommas getrennte Liste der Nutzer, denen die Rolle entzogen wird. Eine Liste der gültigen Formate finden Sie unter user_list.
Wenn Sie den in einer
GRANT
-Anweisung in der Datei gewährten Zugriff widerrufen möchten, ersetzen Sie dieGRANT
-Anweisung durch eineREVOKE
-Anweisung.Optional: Klicken Sie auf Formatieren.
Führen Sie die Tabelle oder Ansicht aus.
Wenn Sie den Zugriff auf eine inkrementelle Tabelle widerrufen haben, entfernen Sie die
REVOKE
-Anweisung nach der ersten Ausführung aus der Tabellendefinitionsdatei.Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository und dann einen Arbeitsbereich aus.
Klicken Sie im Bereich Dateien neben
definitions/
auf das MenüMehr.
Klicken Sie auf Datei erstellen.
Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von
.sqlx
nachdefinitions/
ein. Beispiel:definitions/table-access.sqlx
Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
Maximieren Sie im Bereich Dateien das Verzeichnis
definitions/
und wählen Sie die neu erstellte Datei aus.Geben Sie in die Datei das folgende Code-Snippet ein:
config { type: "operations" } GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST" REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Ersetzen Sie Folgendes:
- ROLE_LIST: Die BigQuery-Rolle oder Liste der durch Kommas getrennten BigQuery-Rollen, die Sie zuweisen oder widerrufen möchten.
- RESOURCE_TYPE:
TABLE
oderVIEW
. - RESOURCE_NAME: der Name der Tabelle oder Ansicht.
- USER_LIST: Die durch Kommas getrennte Liste der Nutzer, denen die Rolle zugewiesen oder entzogen wird. Eine Liste der gültigen Formate finden Sie unter user_list.
Fügen Sie nach Bedarf
GRANT
- undREVOKE
-Anweisungen hinzu.Wenn Sie den Zugriff widerrufen möchten, der in einer
GRANT
-Anweisung in der Datei gewährt wurde, ersetzen Sie dieGRANT
-Anweisung durch eineREVOKE
-Anweisung.Wenn Sie die
GRANT
-Anweisung entfernen, ohne dieREVOKE
-Anweisung hinzuzufügen, wird der Zugriff nicht widerrufen.
Optional: Klicken Sie auf Formatieren.
Führen Sie die Datei nach jedem Update aus.
- Wenn Sie den Zugriff auf eine inkrementelle Tabelle gewährt oder widerrufen haben, entfernen Sie die
GRANT
- oderREVOKE
-Anweisung aus der Datei, nachdem die Anweisung zum ersten Mal ausgeführt wurde.
- Wenn Sie den Zugriff auf eine inkrementelle Tabelle gewährt oder widerrufen haben, entfernen Sie die
- Weitere Informationen zu IAM finden Sie in der IAM-Übersicht.
- Weitere Informationen zum Verwalten des Zugriffs auf Ressourcen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
- Weitere Informationen zu den wichtigsten Konzepten der Workforce Identity-Föderation finden Sie unter Workforce Identity-Föderation.
- Weitere Informationen zu BigQuery-IAM-Rollen und -Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
- Weitere Informationen zum Zuweisen detaillierter Berechtigungen für BigQuery-Datasets finden Sie unter Zugriff auf Datasets steuern.
Erforderlichen Dataform-Zugriff gewähren
In diesem Abschnitt erfahren Sie, wie Sie die IAM-Rollen (Identity and Access Management) zuweisen, die Dataform-Dienstkonten zum Ausführen von Workflows in BigQuery benötigen.
Dienstkonten in Dataform
Wenn Sie Ihr erstes Dataform-Repository erstellen, wird automatisch ein Standarddienstkonto generiert. Dataform verwendet das Standarddienstkonto, um in Ihrem Namen mit BigQuery zu interagieren. Dem Dataform-Standarddienstkonto werden standardmäßig keine BigQuery-Rollen oder -Berechtigungen zugewiesen. Sie müssen dem Standarddienstkonto von Dataform den erforderlichen Zugriff gewähren.
Die ID Ihres Dataform-Standarddienstkontos 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 Projekte identifizieren.
Zusätzlich zum Dataform-Standarddienstkonto können Sie auch andere Dienstkonten verwenden, um Workflows in Ihrem Namen auszuführen. Sie können benutzerdefinierte Dienstkonten auf folgende Weise konfigurieren:
Wenn Sie ein Dataform-Repository oder eine Workflow-Konfiguration erstellen, können Sie ein beliebiges Dienstkonto auswählen, das mit Ihrem Google Cloud -Projekt verknüpft ist und auf das Sie Zugriff haben. Sie müssen die erforderlichen Berechtigungen für alle Dienstkonten konfigurieren, die Ihren Dataform-Ressourcen zugeordnet sind.
Ein benutzerdefiniertes Dienstkonto, das mit einem Dataform-Repository verknüpft ist, wird nur zum Ausführen von Workflows aus diesem Repository verwendet. Alle anderen Repository-Vorgänge werden weiterhin vom Dataform-Standarddienstkonto ausgeführt.
Erforderliche Rollen für Dataform-Dienstkonten und Google-Konten
Für Standard- und benutzerdefinierte Dienstkonten sowie für Anmeldedaten von Google-Konten (Vorabversion), die zur Authentifizierung in Dataform verwendet werden, sind die folgenden BigQuery-IAM-Rollen erforderlich, um Workflows in BigQuery ausführen zu können:
Außerdem müssen Sie dem Standard-Dataform-Dienstkonto die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator
) zuweisen, damit es auf alle benutzerdefinierten Dienstkonten zugreifen kann, die Sie in Dataform verwenden möchten.
Wenn Sie den strengen „Act-as“-Modus (Vorabversion) aktiviert und die Einstellung Häufigkeit für eine Workflow-Konfiguration konfiguriert haben, weisen Sie dem Standard-Dataform-Dienstkonto die Rolle Dienstkontonutzer (roles/iam.serviceAccountUser
) für das effektive Dienstkonto für die Workflow-Konfiguration zu.
Sicherheitsaspekte für Dataform-Dienstkonten und Google-Konten
Wenn Sie einem Dienstkonto oder dem Google-Konto eines Nutzers (Vorschau) die von Dataform benötigten Rollen zuweisen, sind die folgenden Sicherheitsaspekte zu berücksichtigen:
Wenn Sie die Daten einschränken möchten, die ein Nutzer 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 eines anderen Nutzers für das Google-Konto verwenden, gelten die folgenden Einschränkungen:
Erforderliche BigQuery-Rollen einem in Dataform verwendeten Dienstkonto oder Google-Konto zuweisen
So weisen Sie Ihrem Standard-Dataform-Dienstkonto, 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 (Vorabversion), die erforderlichen BigQuery-IAM-Rollen zu:
Benutzerdefinierten Dienstkonten Zugriff auf die Tokenerstellung gewähren
Wenn Sie ein benutzerdefiniertes Dienstkonto in Dataform verwenden möchten, muss das standardmäßige Dataform-Dienstkonto auf das benutzerdefinierte Dienstkonto zugreifen können. Um diesen Zugriff zu gewähren, müssen Sie das standardmäßige Dataform-Dienstkonto als Hauptkonto für das benutzerdefinierte Dienstkonto mit der Rolle Ersteller von Dienstkonto-Tokens hinzufügen.
So gewähren Sie dem standardmäßigen Dataform-Dienstkonto Zugriff auf ein benutzerdefiniertes Dienstkonto:
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 unter Informationen zu Rollen und Berechtigungen.
Vordefinierte Dataform-Rollen
In der folgenden Tabelle sind die vordefinierten Rollen aufgeführt, die Ihnen Zugriff auf Dataform-Ressourcen gewähren:
Role | Permissions |
---|---|
Dataform Admin( Full 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. |
|
Code Owner( Full access to code resources. |
|
Code Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Benutzerdefinierte Dataform-Rollen
Benutzerdefinierte Rollen können alle von Ihnen angegebenen Berechtigungen enthalten. Sie können benutzerdefinierte Rollen erstellen, die Berechtigungen zum Ausführen bestimmter Verwaltungsvorgänge enthalten, z. B. zum Erstellen von Entwicklerarbeitsbereichen oder zum Erstellen von Dateien und Verzeichnissen in einem Entwicklerarbeitsbereich. Informationen zum Erstellen benutzerdefinierter Rollen finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.
Sicherheitsaspekte für Dataform-Berechtigungen
Jeder Nutzer mit der Berechtigung dataform.repositories.create
kann Code in BigQuery mit dem standardmäßigen Dataform-Dienstkonto und allen Berechtigungen ausführen, die diesem Dienstkonto gewährt wurden. Dazu gehört auch die Ausführung von Dataform-Workflows.
Die Berechtigung dataform.repositories.create
ist in den folgenden IAM-Rollen enthalten:
Wenn Sie die Daten einschränken möchten, die ein Nutzer 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.
Weitere Informationen zum Dataform-Standarddienstkonto und den erforderlichen Rollen und Berechtigungen finden Sie unter Erforderlichen Dataform-Zugriff gewähren.
Dataform-Rollen ansehen
Führen Sie in der Google Cloud Konsole die folgenden Schritte aus:
Weitere Informationen zum Zuweisen einer Rolle für ein Projekt finden Sie unter Rolle zuweisen. Sie können auf diese Weise vordefinierte oder benutzerdefinierte Rollen zuweisen.
Zugriff auf ein einzelnes Repository steuern
Wenn Sie den Zugriff auf Dataform mit detaillierten Berechtigungen steuern möchten, können Sie Dataform-IAM-Rollen für einzelne Repositories mit der Dataform API-Anfrage repositories.setIamPolicy
festlegen.
So legen Sie Dataform-IAM-Rollen für ein einzelnes Dataform-Repository fest:
Mit dem folgenden Befehl wird die repositories.setIamPolicy
-Dataform API-Anfrage übergeben, mit der einem einzelnen Nutzer die Rolle „Dataform Editor“ für das sales
-Repository zugewiesen wird:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Öffentlichen Zugriff auf ein Repository gewähren
Sie können öffentlichen Zugriff auf ein Dataform-Repository gewähren, indem Sie dem Hauptkonto allAuthenticatedUsers
IAM-Rollen für das Repository zuweisen.
Wenn Sie dem Prinzipal allAuthenticatedUsers
eine IAM-Rolle zuweisen, wird diese Rolle Dienstkonten und allen Nutzern im Internet gewährt, die sich mit einem Google-Konto authentifiziert haben. Dies schließt auch Konten ein, die nicht mit einem Google Workspace-Konto oder einer Cloud Identity-Domain verbunden sind, z. B. persönliche Gmail-Konten. Nicht authentifizierte Nutzer, wie anonyme Besucher, sind nicht eingeschlossen. Weitere Informationen finden Sie unter Alle authentifizierten Nutzer.
Wenn Sie beispielsweise allAuthenticatedUsers
die Rolle „Dataform Viewer“ für das Repository sales
zuweisen, haben alle Dienstkonten und Nutzer im Internet, die sich mit einem Google-Konto authentifiziert haben, Lesezugriff auf alle sales
-Coderessourcen.
So gewähren Sie öffentlichen Zugriff auf ein Dataform-Repository:
Mit dem folgenden Befehl wird die Dataform API-Anfrage repositories.setIamPolicy
übergeben, mit der allAuthenticatedUsers
die Rolle „Dataform Viewer“ für das Repository sales
erhält:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Öffentlichen Zugriff auf Repositories verhindern
Damit kein öffentlicher Zugriff auf Dataform-Repositories gewährt wird, können Sie den Prinzipal allAuthenticatedUsers
in Ihrem Projekt einschränken.
Wenn Sie allAuthenticatedUsers
in Ihrem Projekt einschränken möchten, können Sie die iam.allowedPolicyMemberDomains
-Richtlinie festlegen und allAuthenticatedUsers
aus der Liste der allowed_values
entfernen.
Wenn Sie allAuthenticatedUsers
in der iam.allowedPolicyMemberDomains
-Richtlinie einschränken, kann das allAuthenticatedUsers
-Hauptkonto in keiner IAM-Richtlinie in Ihrem Projekt verwendet werden. Dadurch wird verhindert, dass öffentlicher Zugriff auf alle Ressourcen, einschließlich Dataform-Repositories, gewährt wird.
Weitere Informationen zur iam.allowedPolicyMemberDomains
-Richtlinie und eine Anleitung zum Festlegen finden Sie unter Identitäten nach Domain einschränken.
Mitarbeiteridentitätsföderation in Dataform
Mit der Workforce Identity-Föderation können Sie einen externen Identitätsanbieter (IdP) verwenden, um Nutzer für den Zugriff auf Google Cloud Dienste mit IAM zu authentifizieren und zu autorisieren.
Dataform unterstützt die Mitarbeiteridentitätsföderation ohne bekannte Einschränkungen.
Zugriff auf einzelne Tabellen mit IAM steuern
In diesem Abschnitt erfahren Sie, wie Sie BigQuery-IAM-Rollen für einzelne Dataform-Tabellen und -Ansichten zuweisen und widerrufen.
Wenn Dataform eine Tabelle oder Ansicht ausführt, wird die Ressource in BigQuery erstellt. Während der Entwicklung in Dataform können Sie einzelnen Tabellen und Ansichten BigQuery-Rollen zuweisen, um den Zugriff in BigQuery nach der Ausführung zu steuern.
Weitere Informationen zum Erteilen und Entziehen des Zugriffs auf Ressourcen finden Sie unter Zugriff auf eine Ressource gewähren.
BigQuery-Rollen für eine Tabelle oder Ansicht zuweisen
Sie können einer Tabelle oder Ansicht in Dataform BigQuery-Rollen zuweisen, indem Sie der .sqlx
-Definitionsdatei der ausgewählten Tabelle oder Ansicht einen post_operations
-Block mit der GRANT
-DCL-Anweisung hinzufügen.
So weisen Sie einer ausgewählten Tabelle oder Ansicht BigQuery-Rollen zu:
Das folgende Codebeispiel zeigt die Rolle BigQuery-Betrachter, die einem Nutzer für eine Tabelle zugewiesen wurde:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
BigQuery-Rollen für eine Tabelle oder Ansicht widerrufen
Sie können BigQuery-Rollen für eine Tabelle oder Ansicht widerrufen, indem Sie der .sqlx
-Definitionsdatei der ausgewählten Tabelle oder Ansicht einen post_operations
-Block mit der REVOKE
-DCL-Anweisung hinzufügen.
So widerrufen Sie BigQuery-Rollen für eine ausgewählte Tabelle oder Ansicht:
Das folgende Codebeispiel zeigt, wie die Rolle „BigQuery-Betrachter“ für einen Nutzer für eine Tabelle widerrufen wird:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
BigQuery-Rollen für Tabellen und Ansichten gemeinsam verwalten
Wenn Sie den BigQuery-Zugriff auf einzelne Tabellen und Ansichten an einem zentralen Ort steuern möchten, können Sie eine dedizierte type: "operations"
-Datei mit GRANT
- und REVOKE
-DCL-Anweisungen erstellen.
So verwalten Sie den Zugriff auf BigQuery-Tabelle in einer einzelnen type: "operations"
-Datei: