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, mit denen Sie Zugriff auf Dataform-Ressourcen erhalten:

Role Permissions

(roles/dataform.admin)

Full access to all Dataform resources.

dataform.*

  • 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.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.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.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.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.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.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. das Erstellen von Entwicklungsarbeitsbereichen oder von Dateien und Verzeichnissen in einem Entwicklungsarbeitsbereich. 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 mit dem Dataform-Standarddienstkonto und allen diesem Dienstkonto gewährten Berechtigungen Code in BigQuery ausführen. Dazu gehört die Ausführung von SQL-Workflows von Dataform.

Die Berechtigungen dataform.repositories.create sind 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 sowie zu den erforderlichen Rollen und Berechtigungen finden Sie unter Dataform den erforderlichen Zugriff gewähren.

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-Rollen ansehen

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

  1. Rufen Sie die Seite IAM und 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 aufgeführten Rollen, um die Berechtigungen der Rolle im rechten Bereich anzuzeigen.

    Die Rolle „Dataform Admin“ hat beispielsweise uneingeschränkten 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 mithilfe 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: eine Dataform-IAM-Rolle, die Sie für das Repository gewähren möchten
    • TYPE: user, group, domain oder serviceAccount
    • IDENTIFIER: Nutzer, Gruppe, Domain oder 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 ansehen können.

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

Der folgende Befehl übergibt die Dataform API-Anfrage repositories.setIamPolicy, mit der die Rolle „Dataform Editor“ für das Repository sales einem einzelnen Nutzer 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 allAuthenticatedUsers-Hauptkonto IAM-Rollen für das Repository zuweisen.

Wenn Sie dem Hauptkonto allAuthenticatedUsers eine IAM-Rolle zuweisen, wird diese Rolle auch Dienstkonten und allen Nutzern im Internet zugewiesen, die sich mit einem Google-Konto authentifiziert haben. Dies gilt auch für Konten, die nicht mit einem Google Workspace-Konto oder einer Cloud Identity-Domain verbunden sind, z. B. private Gmail-Konten. Nicht authentifizierte Nutzer wie anonyme Besucher sind nicht enthalten. Weitere Informationen finden Sie unter Alle authentifizierten Nutzer.

Wenn Sie beispielsweise allAuthenticatedUsers die Rolle „Dataform Viewer“ im 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 Hauptkonto allAuthenticatedUsers an eine ausgewählte Rolle im folgenden Format:

    {
    "policy":
       {
          "bindings": [
          {
             "role": "roles/ROLE",
             "members": [
                "allAuthenticatedUsers",
             ]
          },
          ],
       }
    }
    

    Ersetzen Sie Folgendes:

    • ROLE: eine Dataform-IAM-Rolle, die Sie allen authentifizierten Nutzern zuweisen möchten.

Der folgende Befehl übergibt die Dataform API-Anfrage repositories.setIamPolicy, mit der die Rolle „Dataform Viewer“ für das Repository sales an allAuthenticatedUsers gewährt wird:

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

Wenn Sie verhindern möchten, dass der Öffentlichkeit Zugriff auf ein Dataform-Repository gewährt wird, können Sie das Hauptkonto allAuthenticatedUsers in Ihrem Projekt einschränken.

Wenn Sie allAuthenticatedUsers in Ihrem Projekt einschränken möchten, können Sie die Richtlinie iam.allowedPolicyMemberDomains festlegen und allAuthenticatedUsers aus der Liste der allowed_values entfernen.

Wenn Sie allAuthenticatedUsers in der Richtlinie iam.allowedPolicyMemberDomains einschränken, kann das Hauptkonto allAuthenticatedUsers in keiner IAM-Richtlinie im Projekt verwendet werden. Dadurch wird der öffentliche Zugriff auf alle Ressourcen, einschließlich Dataform-Repositories, verhindert.

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

Mitarbeiteridentitätsföderation in Dataform

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

Dataform unterstützt die Mitarbeiteridentitätsföderation ohne bekannte Einschränkungen.

Nächste Schritte