Zugriff auf Tabellen und Ansichten steuern

In diesem Dokument wird beschrieben, wie Sie mithilfe der BigQuery-Tabellen-ACL-Funktion den Zugriff auf Tabellen und Ansichten steuern. Eine Übersicht über die BigQuery-Tabellen-ACL finden Sie unter Einführung in die Zugriffssteuerung für Tabellen.

Nachdem Sie eine Tabelle oder Ansicht erstellt haben, können Sie die Richtlinie so festlegen:

  • Mit der Cloud Console
  • mithilfe des Befehls bq set-iam-policy
  • durch Aufrufen der Methode tables.setIamPolicy
  • durch Verwenden der Anweisungen GRANT oder REVOKE der Datenkontrollsprache.

Mit der BigQuery-Tabellen-ACL können Sie den Zugriff sowohl auf logische Ansichten als auch auf autorisierte Ansichten auf Dataset-Ebene festlegen. Eine logische Ansicht kann auch auf andere Quelltabellen und Ansichten verweisen, die Sie über die BigQuery-Tabellen-ACL freigegeben haben.

Hinweis

  1. Erstellen Sie die Tabelle oder Ansicht, die Sie mit der BigQuery-Tabellen-ACL verwenden möchten.

  2. Weisen Sie der Person, die die Schritte hierunter ausführen soll, die Rolle "BigQuery-Dateninhaber" (roles/bigquery.dataOwner) oder "BigQuery-Administrator" (roles/bigquery.admin) zu.

  3. Weitere Informationen zu den Richtlinien für die Identitäts- und Zugriffsverwaltung (IAM) finden Sie unter Informationen zu Richtlinien und im Referenzthema Richtlinie.

Zugriffsrichtlinie erstellen

So erstellen Sie eine Zugriffsrichtlinie für eine Tabelle oder Ansicht:

Console

  1. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    BigQuery aufrufen

  2. Wählen Sie im Feld Explorer das Projekt aus.

  3. Wählen Sie das Dataset aus, das die Tabelle oder Ansicht enthält.

  4. Wählen Sie die Tabelle oder Ansicht aus.

  5. Wenn Sie den Zugriff für eine Tabelle ändern möchten, klicken Sie auf Tabelle freigeben. Klicken Sie auf Ansicht freigeben, wenn Sie den Zugriff für eine Ansicht ändern möchten.

  6. Die Seite Tabellenberechtigungen oder Ansichtsberechtigungen wird geöffnet. Geben Sie unter Mitglieder hinzufügen die E-Mail-Adresse des Nutzers ein, der Zugriff auf die Tabelle oder Ansicht erhält.

  7. Wählen Sie aus der Drop-down-Liste Rolle auswählen die Rolle aus, die Sie dem Nutzer zuweisen möchten. Im folgenden Beispiel wird joe@example.com die Rolle "BigQuery-Datenbetrachter" (roles/bigquery.dataViewer) zugewiesen.

    Tabellenberechtigungen

  8. Klicken Sie auf Fertig.

SQL

Verwenden Sie die folgende GRANT-Anweisung, um dem Nutzer joe@example.com für eine Tabelle in Ihrem Dataset die Rolle "Datenbetrachter" (roles/bigquery.dataViewer) zuzuweisen.

  GRANT `roles/bigquery.dataViewer`
  ON TABLE DATASET.TABLE_OR_VIEW
  TO "user:joe@example.com"
 

Ersetzen Sie DATASET durch den Namen des Datasets, in dem sich die Ressource befindet.

Ersetzen Sie TABLE_OR_VIEW durch die Tabelle oder Ansicht, auf die Sie Zugriff gewähren möchten.

Weitere Informationen zur DCL-Anweisung GRANT finden Sie unter Anweisungen der Datenkontrollsprache in Standard-SQL.

bq

  1. Rufen Sie die vorhandene Richtlinie in eine lokale Datei ab.

    bq get-iam-policy \
     project-id:dataset.table_or_view \
     > policy.json
    

    wobei

    • project-id ist die Projekt-ID.
    • dataset ist der Name des Datasets, das die zu aktualisierende Ressource (Tabelle oder Ansicht) enthält.
    • table_or_view ist der Name der Ressource, die Sie aktualisieren möchten.

    Weitere Beispiele zum Identifizieren einer Tabelle oder Ansicht und zum Umleiten der Richtlinienausgabe in eine Datei:

    • bq get-iam-policy dataset1.table1 > policy.json
    • bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
    • bq get-iam-policy project1:dataset1.table1 > policy.json
  2. Wenn Sie der Richtlinie noch keine Mitglieder hinzugefügt haben, enthält die Datei policy.json einen etag-Wert und keine anderen Felder. Weitere Informationen zum Formatieren der Datei policy.json finden Sie unter Informationen zu Richtlinien.

  3. Fügen Sie der Richtlinie das Feld bindings hinzu, um das erste Mitglied hinzuzufügen. So erteilen Sie beispielsweise joe@example.com die Rolle "BigQuery-Datenbetrachter" (roles/bigquery.dataViewer):

    "bindings": [
     {
       "members": [
         "user:joe@example.com"
       ],
       "role": "roles/bigquery.dataViewer"
     }
    ]
    

    Wenn Sie einer vorhandenen Bindung weitere Mitglieder hinzufügen müssen, fügen Sie einfach das Mitglied hinzu. Dieses Beispiel zeigt, wie Sie jane@example.com die Rolle BigQuery-Datenbetrachter (roles/bigquery.dataViewer) für eine Bindung zuweisen, die bereits vorhanden ist.

    "members": [
           "user:joe@example.com",
           "user:jane@example.com"
         ],
         "role": "roles/bigquery.dataViewer"
       }
    
  4. Aktualisieren Sie die Richtlinie.

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

    Informationen zu Versionen von Cloud IAM-Richtlinienschemas finden Sie unter Richtlinienversionen.

API

  1. Rufen Sie tables.getIamPolicy auf, um die aktuelle Richtlinie abzurufen.

  2. Bearbeiten Sie die Richtlinie, um Mitglieder und/oder Bindungen hinzuzufügen. Informationen zum Format der Richtlinie finden Sie im Beispiel bq.

  3. Rufen Sie tables.setIamPolicy auf, um die neue Richtlinie zu erstellen.

Informationen zu Versionen von Cloud IAM-Richtlinienschemas finden Sie unter Richtlinienversionen.

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

import com.google.cloud.Identity;
import com.google.cloud.Policy;
import com.google.cloud.Role;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;

// Sample to create iam policy for table
public class CreateIamPolicy {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    createIamPolicy(datasetName, tableName);
  }

  public static void createIamPolicy(String datasetName, String tableName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);

      Policy policy = bigquery.getIamPolicy(tableId);
      policy
          .toBuilder()
          .addIdentity(Role.of("roles/bigquery.dataViewer"), Identity.allUsers())
          .build();
      bigquery.setIamPolicy(tableId, policy);
      System.out.println("Iam policy created successfully");
    } catch (BigQueryException e) {
      System.out.println("Iam policy was not created. \n" + e.toString());
    }
  }
}

Zugriffsrichtlinie aktualisieren

So aktualisieren Sie eine Zugriffsrichtlinie für eine Tabelle oder Ansicht:

Console

  1. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    BigQuery aufrufen

  2. Wählen Sie im Feld Explorer das Projekt aus.

  3. Wählen Sie das Dataset aus, das die Tabelle oder Ansicht enthält.

  4. Wählen Sie die Tabelle oder Ansicht aus.

  5. Wenn Sie den Zugriff für eine Tabelle ändern möchten, klicken Sie auf Tabelle freigeben. Klicken Sie auf Ansicht freigeben, wenn Sie den Zugriff für eine Ansicht ändern möchten.

  6. Die Seite Tabellenberechtigungen oder Ansichtsberechtigungen wird geöffnet.

    • Verwenden Sie die unter Zugriffsrichtlinie erstellen beschriebene Methode, um neue Mitglieder hinzuzufügen.

    • Wenn Sie einem Nutzer die Zugriffsrechte entziehen möchten, suchen Sie diesen über das Feld Mitglieder suchen. Erweitern Sie jede Gruppe, aus der Sie den Nutzer entfernen möchten, und klicken Sie dann beim entsprechenden Nutzer auf Löschen .

    • Wenn Sie die Gruppenmitgliedschaft für einen Nutzer ändern möchten, nehmen Sie wie in den direkt darüber stehenden Schritten beschrieben Hinzufügungen und/oder Löschungen vor.

  7. Wiederholen Sie diese Schritte für andere Nutzer, deren Zugriff Sie hinzufügen, ändern oder entfernen möchten. Wenn Sie fertig sind, klicken Sie auf Fertig.

SQL

Mit der folgenden REVOKE-Anweisung entfernen Sie die Rolle "Datenbetrachter" (roles/bigquery.dataViewer) für den Nutzer joe@example.com aus einer Tabelle in Ihrem Dataset.

  REVOKE `roles/bigquery.dataViewer`
  ON TABLE DATASET.TABLE_OR_VIEW
  FROM "user:joe@example.com"
 

Ersetzen Sie DATASET durch den Namen des Datasets, in dem sich die Ressource befindet.

Ersetzen Sie TABLE_OR_VIEW durch die Tabelle oder Ansicht, aus der Sie den Zugriff widerrufen möchten.

Weitere Informationen zur DCL-Anweisung REVOKE finden Sie unter Anweisungen der Datenkontrollsprache in Standard-SQL.

bq

  1. Rufen Sie die vorhandene Richtlinie in eine lokale Datei ab.

    bq get-iam-policy --format=prettyjson \
     project-id:dataset.table_or_view \
     > policy.json
    

    wobei

    • project-id ist die Projekt-ID.
    • dataset ist der Name des Datasets, das die zu aktualisierende Tabelle enthält.
    • table_or_view ist der Name der zu aktualisierenden Tabelle oder Ansicht.

    Weitere Beispiele zum Identifizieren einer Tabelle oder Ansicht und zum Umleiten der Richtlinienausgabe in eine Datei:

    • bq get-iam-policy dataset1.table1 > policy.json
    • bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
    • bq get-iam-policy project1:dataset1.table1 > policy.json
  2. Ändern Sie policy.json nach Bedarf.

    Weitere Informationen zum Formatieren der Datei policy.json finden Sie unter Informationen zu Richtlinien.

    Informationen zu Versionen von Cloud IAM-Richtlinienschemas finden Sie unter Richtlinienversionen.

  3. Aktualisieren Sie die Richtlinie.

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

API

  1. Rufen Sie tables.getIamPolicy auf, um die aktuelle Richtlinie abzurufen.

  2. Bearbeiten Sie die Richtlinie, um Mitglieder und/oder Bindungen hinzuzufügen.

    Das für die Richtlinie erforderliche Format finden Sie im Referenzthema Richtlinien.

  3. Rufen Sie tables.setIamPolicy auf, um die aktualisierte Richtlinie zu erstellen.

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

import com.google.cloud.Identity;
import com.google.cloud.Policy;
import com.google.cloud.Role;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

// Sample to update iam policy in table
public class UpdateIamPolicy {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    updateIamPolicy(datasetName, tableName);
  }

  public static void updateIamPolicy(String datasetName, String tableName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);

      Policy policy = bigquery.getIamPolicy(tableId);
      Map<Role, Set<Identity>> binding = new HashMap<>(policy.getBindings());
      binding.remove(Role.of("roles/bigquery.dataViewer"));

      policy.toBuilder().setBindings(binding).build();
      bigquery.setIamPolicy(tableId, policy);

      System.out.println("Iam policy updated successfully");
    } catch (BigQueryException e) {
      System.out.println("Iam policy was not updated. \n" + e.toString());
    }
  }
}

Weitere Informationen zu den Richtlinien für die Identitäts- und Zugriffsverwaltung finden Sie unter Informationen zu Richtlinien und im Referenzthema Richtlinie.

Nächste Schritte

  • FAQ lesen
  • Unter Audit-Logging erfahren Sie mehr über das Audit-Logging der Aktivitäten von Administratoren von BigQuery-Tabellen-ACLs.