Zugriff auf einzelne Tabellen mit IAM steuern

In diesem Dokument erfahren Sie, wie Sie BigQuery-IAM-Rollen (Identity and Access Management) für einzelne Dataform-Tabellen und ‑Ansichten gewähren und widerrufen.

Dataform und BigQuery verwenden IAM für die Zugriffssteuerung. Weitere Informationen zu Dataform-Rollen und ‑Berechtigungen in IAM finden Sie unter Zugriff mit IAM steuern.

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.

Hinweis

  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

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.

    Zur Seite „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 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 mit durch Kommas getrennten 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 Rolle BigQuery-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.

    Zur Seite „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 eine Liste mit 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 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 Rolle BigQuery-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 einzelnen type: "operations"-Datei:

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

    Zur Seite „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 ein und fügen Sie nach definitions/ die Zahl .sqlx hinzu. 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 eine Liste mit durch Kommas getrennten 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 GRANT- oder REVOKE-Anweisung nach der ersten Ausführung aus der Datei.

Nächste Schritte