Zugriff mit IAM steuern

In diesem Dokument wird beschrieben, wie Sie in Dataform Folgendes tun können:

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

  8. 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:

    • 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 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:

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

    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:

    1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

      Zu Dataform

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

    3. Rufen Sie in der Google Cloud Console die Seite IAM auf.

      IAM aufrufen

    4. Klicken Sie auf Zugriff gewähren.

    5. Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID oder die E-Mail-Adresse des Google-Kontos des Nutzers ein (Vorschau).

    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 in der Liste Rolle auswählen die Rolle BigQuery-Datenbearbeiter aus.

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

    9. Klicken Sie auf Speichern.

    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:

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

      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 Dataform-Standarddienstkontos ein.

      Die ID Ihres Dataform-Standarddienstkontos 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 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

    (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

    dataform.locations.get

    dataform.repositories.get

    dataform.repositories.readFile

    resourcemanager.projects.get

    resourcemanager.projects.list

    (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.compilationResults.*

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

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

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

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

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

    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.serviceAgent)

    Gives permission for the Dataform API to access a secret from Secret Manager

    dataform.compilationResults.create

    dataform.workflowInvocations.create

    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 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:

    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-Administrator“ hat beispielsweise vollen Zugriff auf alle Dataform-Ressourcen.

    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:

    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 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 oder serviceAccount.
      • IDENTIFIER: Der Nutzer, die Gruppe, die Domain oder das Dienstkonto, dem Sie die Rolle zuweisen möchten.
    3. 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.

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

    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:

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

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

    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:

    1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

      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-Definitionsdatei 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 eine Liste von durch Kommas getrennten BigQuery-Rollen, die Sie zuweisen möchten.

      • RESOURCE_TYPE: TABLE oder VIEW.

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

    6. Optional: Klicken Sie auf Formatieren.

    7. Führen Sie die Tabelle oder Ansicht aus.

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

    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:

    1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

      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-Definitionsdatei der Tabelle oder Ansicht aus, für die Sie den Zugriff widerrufen möchten.

    5. Geben Sie im post_operations-Block die folgende REVOKE-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 oder VIEW.
      • 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.
    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. Führen Sie die Tabelle oder Ansicht aus.

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

    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:

    1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

      Zu Dataform

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

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

    4. Klicken Sie auf Datei erstellen.

    5. Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von .sqlx nach definitions/ ein. Beispiel: definitions/table-access.sqlx

      Dateinamen dürfen nur Zahlen, 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 Liste der durch Kommas getrennten BigQuery-Rollen, die Sie zuweisen oder widerrufen möchten.
      • RESOURCE_TYPE: TABLE oder VIEW.
      • 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.
    9. Fügen Sie nach Bedarf GRANT- und REVOKE-Anweisungen hinzu.

      1. Wenn Sie den Zugriff widerrufen möchten, der in einer GRANT-Anweisung in der Datei gewährt wurde, 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 GRANT- oder REVOKE-Anweisung aus der Datei, nachdem die Anweisung zum ersten Mal ausgeführt wurde.

    Nächste Schritte