Zugriff mit IAM steuern

In diesem Dokument wird Folgendes beschrieben:

Hinweise

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

Dataform erforderlichen Zugriff gewähren

In diesem Abschnitt erfahren Sie, wie Sie den Dataform-Dienstkonten die IAM-Rollen (Identity and Access Management) zuweisen, die sie zum Ausführen von Workflows in BigQuery benötigen.

Dienstkonten in Dataform

Wenn Sie Ihr erstes Dataform-Repository erstellen, generiert Dataform automatisch ein Standarddienstkonto. Dataform verwendet das Standarddienstkonto, um in Ihrem Namen mit BigQuery zu interagieren. Dem standardmäßigen Dataform-Dienstkonto werden standardmäßig keine BigQuery-Rollen oder ‑Berechtigungen zugewiesen. Sie müssen dem Standarddienstkonto von Dataform den erforderlichen Zugriff gewähren.

Die ID Ihres Standard-Dataform-Dienstkontos hat das folgende Format:

service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

Ersetzen Sie PROJECT_NUMBER durch die numerische ID Ihres Google Cloud-Projekts. Sie finden Ihre Google Cloud-Projekt-ID im Dashboard der Google Cloud Console. Weitere Informationen finden Sie unter Projekte identifizieren.

Neben dem standardmäßigen Dataform-Dienstkonto können Sie auch andere Dienstkonten verwenden, um Workflows in Ihrem Namen auszuführen. Sie können benutzerdefinierte Dienstkonten auf folgende Arten konfigurieren:

Wenn Sie ein Dataform-Repository oder eine Workflowkonfiguration 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 mit Ihren Dataform-Ressourcen verknüpft 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 Standarddienstkonto von Dataform ausgeführt.

Erforderliche Rollen für Dataform-Dienstkonten

Standard- und benutzerdefinierte Dienstkonten, die in Dataform verwendet werden, benötigen die folgenden BigQuery-IAM-Rollen, um Workflows in BigQuery ausführen zu können:

Außerdem müssen Sie dem standardmäßigen 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.

Sicherheitsaspekte für Dataform-Dienstkonten

Wenn Sie einem Dienstkonto die von Dataform erforderlichen Rollen zuweisen, sind die folgenden Sicherheitsaspekte zu beachten:

  • Jedem Dienstkonto, dem die erforderlichen Rollen zugewiesen sind, kann unabhängig von den VPC-Dienststeuerungen Zugriff auf BigQuery oder Secret Manager im Projekt gewährt werden, 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 standardmäßigen Dataform-Dienstkonto und allen Berechtigungen ausführen, die diesem Dienstkonto gewährt wurden.

    Weitere Informationen finden Sie unter Sicherheitsaspekte für Berechtigungen für Dataform.

Wenn Sie einschränken möchten, welche Daten ein Nutzer oder ein 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.

Erforderliche BigQuery-Rollen für ein in Dataform verwendetes Dienstkonto gewähren

So gewähren Sie Ihrem Standard-Dataform-Dienstkonto oder einem benutzerdefinierten Dienstkonto, das Sie in Dataform verwenden möchten, die erforderlichen BigQuery-IAM-Rollen:

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

  2. Wählen Sie ein Repository aus oder erstellen Sie eines.

  3. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  4. Klicken Sie auf Zugriff gewähren.

  5. Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID ein.

  6. Wählen Sie in der Liste Rolle auswählen die Rolle BigQuery-Jobnutzer aus.

  7. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie dann in der Liste Rolle auswählen die Rolle BigQuery-Datenbearbeiter aus.

  8. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie dann in der Liste Rolle auswählen die Rolle BigQuery-Datenbetrachter aus.

  9. Klicken Sie auf Speichern.

Zugriff auf die Tokenerstellung für ein benutzerdefiniertes Dienstkonto 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 dem benutzerdefinierten Dienstkonto das standardmäßige Dataform-Dienstkonto als Hauptkonto mit der Rolle Ersteller von Dienstkonto-Tokens hinzufügen.

So gewähren Sie dem standardmäßigen Dataform-Dienstkonto Zugriff auf ein benutzerdefiniertes Dienstkonto:

  1. Klicken Sie in der Google Cloud Console auf IAM > Dienstkonten.

    Zur Seite „Dienstkonten“

  2. Wählen Sie ein Projekt aus.

  3. Wählen Sie auf der Seite Dienstkonten für das Projekt „PROJECT_NAME Ihr benutzerdefiniertes Dataform-Dienstkonto aus.

  4. Klicken Sie auf Berechtigungen und dann auf Zugriff gewähren.

  5. Geben Sie im Feld Neue Hauptkonten die ID Ihres Standard-Dataform-Dienstkontos ein.

    Die ID Ihres Standard-Dataform-Dienstkontos hat das folgende Format:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. Wählen Sie in der Liste Rolle auswählen die Rolle Ersteller von Dienstkonto-Tokens aus.

  7. Klicken Sie auf Speichern.

Zugriff auf Dataform mit IAM steuern

In diesem Dokument werden die Zugriffssteuerungsoptionen für Dataform beschrieben und Sie erfahren, wie Sie Dataform-Rollen ansehen und gewähren. Dataform verwendet für die Zugriffssteuerung Identity and Access Management (IAM). 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 den Zugriff auf Dataform-Ressourcen ermöglichen:

Role Permissions

(roles/dataform.admin)

Full access to all Dataform resources.

dataform.*

  • 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

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeCommenter)

Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

(roles/dataform.codeCreator)

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.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.create

dataform.repositories.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeEditor)

Edit access code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.commit

dataform.repositories.computeAccessTokenStatus

dataform.repositories.create

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

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.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeOwner)

Full access to code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.*

  • 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.*

  • 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

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeViewer)

Read-only access to all code resources.

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.editor)

Edit access to Workspaces and Read-only access to Repositories.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.config.get

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.*

  • 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.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.viewer)

Read-only access to all Dataform resources.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.get

dataform.compilationResults.list

dataform.compilationResults.query

dataform.config.get

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.get

dataform.workflowInvocations.list

dataform.workflowInvocations.query

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

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 Entwicklungsbereichen oder zum Erstellen von Dateien und Verzeichnissen in einem Entwicklungsbereich. Informationen zum Erstellen benutzerdefinierter Rollen finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.

Sicherheitsaspekte für Berechtigungen für Dataform

Jeder Nutzer mit der Berechtigung dataform.repositories.create kann Code in BigQuery mit dem Standarddienstkonto von Dataform und allen diesem Dienstkonto gewährten Berechtigungen ausführen. Dazu gehört auch die Ausführung von Dataform-Workflows.

Die Berechtigungen vom Typ dataform.repositories.create sind in den folgenden IAM-Rollen enthalten:

Wenn Sie einschränken möchten, welche Daten ein Nutzer oder ein 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 Standarddienstkonto von Dataform und den erforderlichen Rollen und Berechtigungen finden Sie unter Dataform den erforderlichen Zugriff gewähren.

Dataform-Rollen ansehen

Führen Sie in der Google Cloud Console die folgenden Schritte aus:

  1. Rufen Sie die Seite IAM & Verwaltung > Rollen auf.

    Zur Seite "Rollen"

  2. Wählen Sie im Feld Filter die Option Verwendet in aus, geben Sie Dataform ein und drücken Sie die Eingabetaste.

  3. Klicken Sie auf eine der aufgelisteten Rollen, um die Berechtigungen der Rolle im rechten Bereich anzuzeigen.

    Die Rolle „Dataform Admin“ hat beispielsweise vollständigen Zugriff auf alle Dataform-Ressourcen.

Weitere Informationen zum Zuweisen einer Rolle für ein Projekt finden Sie unter Rolle zuweisen. So können Sie vordefinierte oder benutzerdefinierte Rollen gewähren.

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:

  1. Übergeben Sie im Terminal die Dataform API-Anfrage repositories.setIamPolicy mit einer Zugriffsrichtlinie.

  2. Binden Sie in der Richtlinie einen Nutzer, eine Gruppe, eine Domain oder ein Dienstkonto im folgenden Format an eine ausgewählte Rolle:

    {
    "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 oder serviceAccount.
    • IDENTIFIER: Der Nutzer, die Gruppe, die Domain oder das Dienstkonto, dem Sie die Rolle zuweisen möchten.
  3. Achten Sie darauf, dass alle Nutzer auf der IAM-Seite über eine Dataform-Rolle mit der Berechtigung dataform.repositories.list die vollständige Liste der Dataform-Repositories aufrufen können.

  4. Achten Sie darauf, dass in IAM nur Nutzern, die vollständigen Zugriff auf alle Dataform-Repositories benötigen, die Rolle „Dataform-Administrator“ für alle Repositories zugewiesen wird.

Mit dem folgenden Befehl wird die repositories.setIamPolicy Dataform API-Anfrage übergeben, die einem einzelnen Nutzer die Rolle „Dataform Editor“ für das sales-Repository zuweist:

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 allAuthenticatedUsers-Principal 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 Coderessourcen von sales.

So gewähren Sie öffentlichen Zugriff auf ein Dataform-Repository:

  1. Übergeben Sie im Terminal die Dataform API-Anfrage repositories.setIamPolicy mit einer Zugriffsrichtlinie.

  2. Binden Sie in der Richtlinie das Hauptkonto allAuthenticatedUsers 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 gewähren möchten.

Mit dem folgenden Befehl wird die repositories.setIamPolicy Dataform API-Anfrage übergeben, die allAuthenticatedUsers die Rolle „Dataform Viewer“ für das Repository sales zuweist:

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 der Öffentlichkeit kein Zugriff auf ein Dataform-Repository gewährt wird, können Sie den allAuthenticatedUsers-Principal 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 allen Ressourcen, einschließlich Dataform-Repositories, öffentlicher Zugriff gewährt wird.

Weitere Informationen zur iam.allowedPolicyMemberDomains-Richtlinie und eine Anleitung zum Festlegen finden Sie unter Identitäten nach Domain einschränken.

Workforce Identity-Föderation in Dataform

Mit der Workforce Identity-Föderation können Sie einen externen Identitätsanbieter (Identity Provider, IdP) verwenden, um Nutzer mit IAM zu authentifizieren und für Dienste zu autorisieren. Google Cloud

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 gewähren 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 gewähren

Sie können einer Tabelle oder Ansicht in Dataform BigQuery-Rollen zuweisen, indem Sie der .sqlx-Definitiondatei der ausgewählten Tabelle oder Ansicht einen post_operations-Block mit der GRANT-DCL-Anweisung hinzufügen.

So gewähren Sie einer ausgewählten Tabelle oder Ansicht BigQuery-Rollen:

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

  2. Wählen Sie ein Repository und dann einen Arbeitsbereich aus.

  3. Maximieren Sie im Bereich Dateien das Verzeichnis definitions/.

  4. Wählen Sie die .sqlx-Definitiondatei der Tabelle oder Ansicht aus, auf die Sie Zugriff gewähren möchten.

  5. 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 die Liste der kommagetrennten BigQuery-Rollen, die Sie gewähren möchten.

    • RESOURCE_TYPE: TABLE oder VIEW.

    • USER_LIST: eine durch Kommas getrennte Liste von Nutzern, denen die Rolle zugewiesen wird.

      Eine Liste der gültigen Formate findest du unter user_list.

  6. Optional: Klicken Sie auf Formatieren.

  7. Tabelle oder Ansicht ausführen.

  8. Wenn Sie Zugriff auf eine inkrementelle Tabelle gewährt haben, entfernen Sie die GRANT-Anweisung nach der ersten Ausführung aus der Tabellendefinitionsdatei.

Im folgenden Codebeispiel wird die BigQuery-Rolle „Betrachter“ gezeigt, 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-Definitiondatei 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:

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

  2. Wählen Sie ein Repository und dann einen Arbeitsbereich aus.

  3. Maximieren Sie im Bereich Dateien das Verzeichnis definitions/.

  4. Wählen Sie die .sqlx-Definitiondatei der Tabelle oder Ansicht aus, für die Sie den Zugriff widerrufen möchten.

  5. Geben Sie im Block post_operations die folgende REVOKE-Anweisung ein:

        REVOKE "ROLE_LIST"
        ON "RESOURCE_TYPE" ${self()}
        FROM "USER_LIST"
    

    Ersetzen Sie Folgendes:

    • ROLE_LIST: die BigQuery-Rolle oder die Liste der kommagetrennten BigQuery-Rollen, die Sie widerrufen möchten.
    • RESOURCE_TYPE: TABLE oder VIEW.
    • USER_LIST: die durch Kommas getrennte Liste der Nutzer, denen die Rolle entzogen wird. Eine Liste der gültigen Formate findest du unter user_list.
  6. Wenn Sie den in einer GRANT-Anweisung in der Datei gewährten Zugriff widerrufen möchten, ersetzen Sie die GRANT-Anweisung durch eine REVOKE-Anweisung.

  7. Optional: Klicken Sie auf Formatieren.

  8. Tabelle oder Ansicht ausführen.

  9. Wenn Sie den Zugriff auf eine inkrementelle Tabelle widerrufen haben, entfernen Sie die REVOKE-Anweisung nach der ersten Ausführung aus der Tabellendefinitionsdatei.

Im folgenden Codebeispiel wird die BigQuery-Rolle „Betrachter“ für einen Nutzer für eine Tabelle widerrufen:

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 einzigen Ort steuern möchten, können Sie eine spezielle type: "operations"-Datei mit DCL-Anweisungen für GRANT und REVOKE erstellen.

So verwalten Sie den Zugriff auf BigQuery-Tabellen in einer einzigen type: "operations"-Datei:

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

  2. Wählen Sie ein Repository und dann einen Arbeitsbereich aus.

  3. Klicken Sie im Bereich Dateien neben definitions/ auf das Dreipunkt-Menü  Mehr.

  4. Klicken Sie auf Datei erstellen.

  5. Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei ein und fügen Sie nach definitions/ die Zahl .sqlx hinzu. Beispiel: definitions/table-access.sqlx

    Dateinamen dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.

  6. Klicken Sie auf Datei erstellen.

  7. Maximieren Sie im Bereich Dateien das Verzeichnis definitions/ und wählen Sie die neu erstellte Datei aus.

  8. 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 die Liste der kommagetrennten BigQuery-Rollen, die Sie gewähren oder widerrufen möchten.
    • RESOURCE_TYPE: TABLE oder VIEW.
    • RESOURCE_NAME: der Name der Tabelle oder Ansicht.
    • USER_LIST: eine durch Kommas getrennte Liste von Nutzern, denen die Rolle zugewiesen oder von denen sie entzogen wird. Eine Liste der gültigen Formate findest du unter user_list.
  9. Fügen Sie nach Bedarf GRANT- und REVOKE-Anweisungen hinzu.

    1. Wenn Sie den in einer GRANT-Anweisung in der Datei gewährten Zugriff widerrufen möchten, ersetzen Sie die GRANT-Anweisung durch eine REVOKE-Anweisung.

      Wenn Sie die GRANT-Anweisung entfernen, ohne die REVOKE-Anweisung hinzuzufügen, wird der Zugriff nicht widerrufen.

  10. Optional: Klicken Sie auf Formatieren.

  11. Führen Sie die Datei nach jedem Update aus.

    1. Wenn Sie den Zugriff auf eine inkrementelle Tabelle gewährt oder widerrufen haben, entfernen Sie die Anweisung GRANT oder REVOKE nach der ersten Ausführung aus der Datei.

Nächste Schritte