Zugriff auf Ressourcen mit IAM steuern
In diesem Dokument wird beschrieben, wie Sie die aktuelle Zugriffsrichtlinie einer Ressource aufrufen, Zugriff auf eine Ressource gewähren und den Zugriff auf eine Ressource widerrufen.
In diesem Dokument wird davon ausgegangen, dass Sie mit Identity and Access Management (IAM) in Google Cloudvertraut sind.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Dateninhaber (roles/bigquery.dataOwner
) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ändern von IAM-Richtlinien für Ressourcen benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Ändern von IAM-Richtlinien für Ressourcen erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um IAM-Richtlinien für Ressourcen zu ändern:
-
bigquery.datasets.get
-
bigquery.datasets.update
-
So rufen Sie die Zugriffsrichtlinie eines Datasets ab (nurGoogle Cloud -Konsole):
bigquery.datasets.getIamPolicy
-
So legen Sie die Zugriffsrichtlinie eines Datasets (nur Konsole) fest:
bigquery.datasets.setIamPolicy
-
bigquery.tables.getIamPolicy
-
bigquery.tables.setIamPolicy
-
So rufen Sie die Zugriffsrichtlinie einer Routine ab:
bigquery.routines.getIamPolicy
-
So legen Sie die Zugriffsrichtlinie einer Routine fest:
bigquery.routines.setIamPolicy
-
So erstellen Sie das bq-Tool oder SQL BigQuery-Jobs (optional):
bigquery.jobs.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Zugriffsrichtlinie einer Ressource aufrufen
In den folgenden Abschnitten wird beschrieben, wie Sie die Zugriffsrichtlinien verschiedener Ressourcen aufrufen.
Zugriffsrichtlinie eines Datasets aufrufen
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Klicken Sie auf > Berechtigungen.
FreigabeDie Richtlinien für den Dataset-Zugriff werden im Bereich Dataset-Berechtigungen angezeigt.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie in Cloud Shell den Befehl
bq show
, um eine vorhandene Richtlinie abzurufen und in eine lokale Datei in JSON auszugeben:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID
- DATASET: der Name Ihres Datasets
- PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
API
Rufen Sie zum Aufrufen der Zugriffsrichtlinie eines Datasets die Methode datasets.get
mit einer definierten dataset
-Ressource auf.
Die Richtlinie ist in der Eigenschaft access
der zurückgegebenen dataset
-Ressource verfügbar.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die Funktionclient.Dataset().Metadata()
auf. Die Zugriffsrichtlinie ist in der Access
-Property verfügbar.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die Dataset-Metadaten mit derDataset#getMetadata()
-Funktion ab.
Die Zugriffsrichtlinie ist in der Eigenschaft „access“ des resultierenden Metadatenobjekts verfügbar.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die Funktionclient.get_dataset()
auf.
Die Zugriffsrichtlinie ist in der dataset.access_entries
-Property verfügbar.
Zugriffsrichtlinie einer Tabelle oder Ansicht aufrufen
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie eine Tabelle oder Ansicht aus.
Klicken Sie auf
Freigeben.Die Zugriffsrichtlinien für eine Tabelle oder Ansicht werden im Bereich Freigeben angezeigt.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie in Cloud Shell den Befehl
bq get-iam-policy
, um eine vorhandene Zugriffsrichtlinie abzurufen und in eine lokale Datei in JSON auszugeben:bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID
- DATASET: der Name Ihres Datasets
- RESOURCE: der Name der Tabelle oder Ansicht, deren Richtlinie Sie aufrufen möchten
- PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
API
Rufen Sie die Methode tables.getIamPolicy
auf, um die aktuelle Richtlinie abzurufen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie dieIAM().Policy()
-Funktion der Ressource auf. Rufen Sie dann die Funktion Roles()
auf, um die Zugriffsrichtlinie für eine Tabelle oder Ansicht abzurufen.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die IAM-Richtlinie für eine Tabelle oder Ansicht mit derTable#getIamPolicy()
-Funktion ab.
Die Details der Zugriffsrichtlinie sind im zurückgegebenen Richtlinienobjekt verfügbar.
Zugriff auf eine Ressource gewähren
In den folgenden Abschnitten wird beschrieben, wie Sie Zugriff auf verschiedene Ressourcen gewähren.
Zugriff auf ein Dataset gewähren
Sie können Zugriff auf ein Dataset gewähren, indem Sie eine IAM-Rolle mit der Berechtigung für den Zugriff auf das Dataset zuweisen oder den Zugriff mithilfe einer IAM-Bedingung bedingt gewähren. Weitere Informationen zum Gewähren von bedingtem Zugriff finden Sie unter Zugriff mit IAM-Bedingungen steuern.
Wenn Sie einer IAM-Rolle Zugriff auf ein Dataset gewähren möchten, ohne Bedingungen zu verwenden, wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset für die Freigabe aus.
Klicken Sie auf > Berechtigungen.
FreigabeKlicken Sie auf
Hauptkonto hinzufügen.Geben Sie im Feld Neue Hauptkonten ein Hauptkonto ein.
Wählen Sie in der Liste Rolle auswählen eine vordefinierte oder eine benutzerdefinierte Rolle aus.
Klicken Sie auf Speichern.
Klicken Sie auf Schließen, um zu den Dataset-Informationen zurückzukehren.
SQL
Verwenden Sie die DCL-Anweisung GRANT
, um Hauptkonten Zugriff auf Datasets zu gewähren:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Ersetzen Sie Folgendes:
ROLE_LIST
: eine Rolle oder Liste mit durch Kommas getrennten Rollen, die Sie zuweisen möchtenRESOURCE_NAME
: der Name der Ressource, für die Sie die Berechtigung gewähren möchtenUSER_LIST
: eine durch Kommas getrennte Liste von Nutzern, denen die Rolle zugewiesen wirdEine Liste der gültigen Formate finden Sie unter
user_list
.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Im folgenden Beispiel wird die Rolle „Data Viewer“ für das Dataset myDataset
zugewiesen:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq show
, um die vorhandenen Dataset-Informationen (einschließlich Zugriffssteuerungen) in eine JSON-Datei zu schreiben:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID
- DATASET: der Name Ihres Datasets
- PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
Nehmen Sie die Änderungen im Abschnitt
access
der JSON-Datei vor. Sie können jeden derspecialGroup
-Einträge verwenden:projectOwners
,projectWriters
,projectReaders
undallAuthenticatedUsers
. Sie können auch eine der folgenden Optionen hinzufügen:userByEmail
,groupByEmail
unddomain
.Der Abschnitt
access
der JSON-Datei eines Datasets sieht zum Beispiel so aus:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Wenn die Änderungen abgeschlossen sind, führen Sie den Befehl
bq update
aus und fügen die JSON-Datei mit dem Flag--source
hinzu. Wenn sich das Dataset in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im FormatPROJECT_ID:DATASET
hinzu.bq update
--source PATH_TO_FILE
PROJECT_ID:DATASETGeben Sie den Befehl
bq show
noch einmal ein, ohne die Informationen in eine Datei zu schreiben, um die Änderungen der Zugriffssteuerung zu prüfen:bq show --format=prettyjson PROJECT_ID:DATASET
Terraform
Verwenden Sie die google_bigquery_dataset_iam
-Ressourcen, um den Zugriff auf ein Dataset zu aktualisieren.
Zugriffsrichtlinie für ein Dataset abrufen
Im folgenden Beispiel wird gezeigt, wie Sie mit der google_bigquery_dataset_iam_policy
-Ressource die IAM-Richtlinie für das Dataset mydataset
festlegen. Dadurch wird jede vorhandene Richtlinie ersetzt, die bereits an das Dataset angehängt ist:
# This file sets the IAM policy for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.admin" members = [ "user:hao@altostrat.com", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:dba@altostrat.com", ] } binding { role = "roles/bigquery.dataEditor" members = [ "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com", ] } } resource "google_bigquery_dataset_iam_policy" "dataset_iam_policy" { dataset_id = google_bigquery_dataset.default.dataset_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Rollenmitgliedschaft für ein Dataset festlegen
Im folgenden Beispiel wird gezeigt, wie Sie mit der Ressource google_bigquery_dataset_iam_binding
die Mitgliedschaft in einer bestimmten Rolle für das Dataset mydataset
festlegen. Dadurch wird jede vorhandene Mitgliedschaft in dieser Rolle ersetzt.
Andere Rollen in der IAM-Richtlinie für das Dataset werden beibehalten:
# This file sets membership in an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_binding" "dataset_iam_binding" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.jobUser" members = [ "user:raha@altostrat.com", "group:analysts@altostrat.com" ] }
Rollenmitgliedschaft für ein einzelnes Hauptkonto festlegen
Im folgenden Beispiel wird gezeigt, wie Sie die google_bigquery_dataset_iam_member
-Ressource verwenden, um die IAM-Richtlinie für das Dataset mydataset
zu aktualisieren und einem Hauptkonto eine Rolle zuzuweisen. Das Aktualisieren dieser IAM-Richtlinie hat keine Auswirkungen auf den Zugriff anderer Principals, denen diese Rolle für das Dataset zugewiesen wurde.
# This file adds a member to an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_member" "dataset_iam_member" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.user" member = "user:yuri@altostrat.com" }
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
API
Rufen Sie die Methode datasets.insert
mit einer definierten Dataset-Ressource auf, um Zugriffssteuerungen anzuwenden, wenn das Dataset erstellt wird.
Rufen Sie zum Aktualisieren Ihrer Zugriffssteuerungen die Methode datasets.patch
auf und verwenden Sie das Attribut access
in der Ressource Dataset
.
Da die Methode datasets.update
die gesamte Dataset-Ressource ersetzt, ist datasets.patch
die bevorzugte Methode zum Aktualisieren von Zugriffssteuerungen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Legen Sie die neue Zugriffsliste fest, indem Sie den neuen Eintrag mitDatasetMetadataToUpdate
type an die vorhandene Liste anhängen.
Rufen Sie dann die dataset.Update()
-Funktion auf, um das Attribut zu aktualisieren.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Legen Sie die neue Zugriffsliste fest, indem Sie den neuen Eintrag mit der Methode Dataset#metadata an die vorhandene Liste anhängen. Rufen Sie dann die Funktion Dataset#setMetadata() auf, um das Attribut zu aktualisieren.Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Legen Sie das Attributdataset.access_entries
mit den Zugriffssteuerungen für ein Dataset fest. Rufen Sie dann die client.update_dataset()
-Funktion auf, um das Attribut zu aktualisieren.
Zugriff auf eine Tabelle oder Ansicht gewähren
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie eine Tabelle oder Ansicht aus, die Sie freigeben möchten.
Klicken Sie auf
Freigeben.Klicken Sie auf
Hauptkonto hinzufügen.Geben Sie im Feld Neue Hauptkonten ein Hauptkonto ein.
Wählen Sie in der Liste Rolle auswählen eine vordefinierte oder eine benutzerdefinierte Rolle aus.
Klicken Sie auf Speichern.
Klicken Sie auf Schließen, um zu den Tabellen- oder Ansichtsdetails zurückzukehren.
SQL
Verwenden Sie die DCL-Anweisung GRANT
, um Hauptkonten Zugriff auf Tabellen oder Ansichten zu gewähren:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Ersetzen Sie Folgendes:
ROLE_LIST
: eine Rolle oder Liste mit durch Kommas getrennten Rollen, die Sie widerrufen möchtenRESOURCE_TYPE
: der Ressourcentyp, auf den die Rolle angewendet wirdUnterstützte Werte sind:
TABLE
,VIEW
,MATERIALIZED VIEW
undEXTERNAL TABLE
.RESOURCE_NAME
: der Name der Ressource, für die Sie die Berechtigung gewähren möchtenUSER_LIST
: eine durch Kommas getrennte Liste von Nutzern, denen die Rolle zugewiesen wirdEine Liste der gültigen Formate finden Sie unter
user_list
.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Im folgenden Beispiel wird die Rolle „Data Viewer“ für die Tabelle myTable
zugewiesen:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq add-iam-policy-binding
, um Zugriff auf eine Tabelle oder Ansicht zu gewähren:bq add-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Ersetzen Sie Folgendes:
- MEMBER_TYPE: der Mitgliedstyp, z. B.
user
,group
,serviceAccount
oderdomain
. - MEMBER: Die E-Mail-Adresse oder der Domainname des Mitglieds.
- ROLE: Die Rolle, die Sie dem Mitglied zuweisen möchten.
- RESOURCE: Der Name der Tabelle oder Ansicht, deren Richtlinie Sie aktualisieren möchten.
- MEMBER_TYPE: der Mitgliedstyp, z. B.
Terraform
Mit den google_bigquery_table_iam
-Ressourcen können Sie den Zugriff auf eine Tabelle aktualisieren.
Zugriffsrichtlinie für ein Dataset festlegen
Im folgenden Beispiel wird gezeigt, wie Sie mit der google_bigquery_table_iam_policy
-Ressource die IAM-Richtlinie für die Tabelle mytable
festlegen. Dadurch wird jede vorhandene Richtlinie ersetzt, die bereits an die Tabelle angehängt ist:
# This file sets the IAM policy for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.dataOwner" members = [ "user:raha@altostrat.com", ] } } resource "google_bigquery_table_iam_policy" "table_iam_policy" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Rollenmitgliedschaft für eine Tabelle festlegen
Im folgenden Beispiel wird gezeigt, wie Sie mit der google_bigquery_table_iam_binding
-Ressource die Mitgliedschaft in einer bestimmten Rolle für die Tabelle mytable
festlegen. Dadurch wird jede vorhandene Mitgliedschaft in dieser Rolle ersetzt.
Andere Rollen in der IAM-Richtlinie für die Tabelle werden beibehalten.
# This file sets membership in an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_binding" "table_iam_binding" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataOwner" members = [ "group:analysts@altostrat.com", ] }
Rollenmitgliedschaft für ein einzelnes Hauptkonto festlegen
Im folgenden Beispiel wird gezeigt, wie Sie die google_bigquery_table_iam_member
-Ressource verwenden, um die IAM-Richtlinie für die Tabelle mytable
zu aktualisieren und einem Hauptkonto eine Rolle zuzuweisen. Das Aktualisieren dieser IAM-Richtlinie hat keine Auswirkungen auf den Zugriff anderer Principals, denen diese Rolle für das Dataset zugewiesen wurde.
# This file adds a member to an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_member" "table_iam_member" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataEditor" member = "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com" }
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
API
Rufen Sie die Methode
tables.getIamPolicy
auf, um die aktuelle Richtlinie abzurufen.Bearbeiten Sie die Richtlinie, um Mitglieder oder Bindungen oder beides hinzuzufügen. Das für die Richtlinie erforderliche Format finden Sie im Referenzthema Richtlinien.
Rufen Sie
tables.setIamPolicy
auf, um die aktualisierte Richtlinie zu erstellen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie dieIAM().SetPolicy()
-Funktion der Ressource auf, um Änderungen an der Zugriffsrichtlinie für eine Tabelle oder Ansicht zu speichern.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die aktuelle IAM-Richtlinie für eine Tabelle oder Ansicht mit derTable#getIamPolicy()
-Funktion ab, ändern Sie die Richtlinie, indem Sie neue Bindungen hinzufügen, und speichern Sie die Änderungen an der Zugriffsrichtlinie mit der Table#setIamPolicy()
-Funktion.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie dieclient.set_iam_policy()
-Funktion auf, um Änderungen an der Zugriffsrichtlinie für eine Tabelle oder Ansicht zu speichern.
Zugriff auf eine Routine gewähren
Wenn Sie Feedback geben oder Support für dieses Feature anfordern möchten, senden Sie eine E-Mail an bq-govsec-eng@google.com.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und Ihr Dataset und wählen Sie dann eine Routine für die Freigabe aus.
Klicken Sie auf
Freigeben.Klicken Sie auf
Mitglieder hinzufügen.Geben Sie im Feld Neue Mitglieder ein Hauptkonto ein.
Wählen Sie in der Liste Rolle auswählen eine vordefinierte oder eine benutzerdefinierte Rolle aus.
Klicken Sie auf Speichern.
Klicke auf Fertig, um zu den Informationen zur Routine zurückzukehren.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq get-iam-policy
, um die vorhandenen Routineninformationen (einschließlich Zugriffssteuerungen) in eine JSON-Datei zu schreiben:bq get-iam-policy \ PROJECT_ID:DATASET.ROUTINE \ > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID.
- DATASET: der Name des Datasets, das die Routine enthält, die Sie aktualisieren möchten.
- ROUTINE: der Name der Ressource, die aktualisiert werden soll
- PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
Nehmen Sie die Änderungen im Abschnitt
bindings
der JSON-Datei vor. Eine Bindung bindet ein oder mehreremembers
oder Hauptkonten an eine einzelnerole
. Hauptkonten können Nutzerkonten, Dienstkonten, Google-Gruppen und Domains sein. Der Abschnittbindings
der JSON-Datei einer Routine sieht beispielsweise so aus:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:izumi@example.com", "group:admins@example.com", "domain:google.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Aktualisieren Sie Ihre Zugriffsrichtlinie mit dem Befehl
bq set-iam-policy
.bq set-iam-policy PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Geben Sie den Befehl
bq get-iam-policy
noch einmal ein, ohne die Informationen in eine Datei zu schreiben, um die Änderungen der Zugriffssteuerung zu prüfen:bq get-iam-policy --format=prettyjson \\ PROJECT_ID:DATASET.ROUTINE
API
Rufen Sie die Methode
routines.getIamPolicy
auf, um die aktuelle Richtlinie abzurufen.Bearbeiten Sie die Richtlinie, um Mitglieder, Bindungen oder beides hinzuzufügen. Das für die Richtlinie erforderliche Format finden Sie im Referenzthema Richtlinien.
Rufen Sie
routines.setIamPolicy
auf, um die aktualisierte Richtlinie zu erstellen.
Zugriff auf eine Ressource widerrufen
In den folgenden Abschnitten wird beschrieben, wie Sie den Zugriff auf verschiedene Ressourcen widerrufen.
Zugriff auf ein Dataset widerrufen
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Klicken Sie im Detailbereich auf Freigabe > Berechtigungen.
Erweitern Sie im Dialogfeld Dataset-Berechtigungen das Hauptkonto, dessen Zugriff Sie widerrufen möchten.
Klicken Sie auf
Hauptkonto entfernen.Klicken Sie im Dialogfeld Rolle aus Hauptkonto entfernen? auf Entfernen.
Klicken Sie auf Schließen, um zu den Dataset-Details zurückzukehren.
SQL
Verwenden Sie die DCL-Anweisung REVOKE
, um den Zugriff auf Datasets aus Hauptkonten zu entfernen:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Ersetzen Sie Folgendes:
ROLE_LIST
: eine Rolle oder Liste mit durch Kommas getrennten Rollen, die Sie widerrufen möchtenRESOURCE_NAME
: der Name der Ressource, für die Sie die Berechtigung widerrufen möchtenUSER_LIST
: eine durch Kommas getrennte Liste von Nutzern, deren Rollen widerrufen werdenEine Liste der gültigen Formate finden Sie unter
user_list
.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Im folgenden Beispiel wird die Rolle „Admin“ für das Dataset myDataset
widerrufen:
REVOKE `roles/bigquery.admin`
ON SCHEMA `myProject`.myDataset
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq show
, um die vorhandenen Dataset-Informationen (einschließlich Zugriffssteuerungen) in eine JSON-Datei zu schreiben:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID
- DATASET: der Name Ihres Datasets
- PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
Nehmen Sie die Änderungen im Abschnitt
access
der JSON-Datei vor. Sie können allespecialGroup
-Einträge entfernen:projectOwners
,projectWriters
,projectReaders
undallAuthenticatedUsers
. Sie können auch die folgenden Elemente entfernen:userByEmail
,groupByEmail
unddomain
.Der Abschnitt
access
der JSON-Datei eines Datasets sieht zum Beispiel so aus:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Wenn die Änderungen abgeschlossen sind, führen Sie den Befehl
bq update
aus und fügen die JSON-Datei mit dem Flag--source
hinzu. Wenn sich das Dataset in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im FormatPROJECT_ID:DATASET
hinzu.bq update
--source PATH_TO_FILE
PROJECT_ID:DATASETGeben Sie den Befehl
show
noch einmal ein, ohne die Informationen in eine Datei zu schreiben, um die Änderungen der Zugriffssteuerung zu prüfen:bq show --format=prettyjson PROJECT_ID:DATASET
API
Rufen Sie datasets.patch
auf und verwenden Sie das Attribut access
in der Ressource Dataset
, um die Zugriffssteuerungen zu aktualisieren.
Da die Methode datasets.update
die gesamte Dataset-Ressource ersetzt, ist datasets.patch
die bevorzugte Methode zum Aktualisieren von Zugriffssteuerungen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Legen Sie die neue Zugriffsliste fest, indem Sie den Eintrag aus der vorhandenen Liste mitDatasetMetadataToUpdate
-Typ entfernen. Rufen Sie dann die dataset.Update()
-Funktion auf, um das Attribut zu aktualisieren.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Aktualisieren Sie die Liste mit dem Dataset-Zugriff, indem Sie den angegebenen Eintrag aus der vorhandenen Liste entfernen. Verwenden Sie dazu die MethodeDataset#get()
, um die aktuellen Metadaten abzurufen. Ändern Sie das Attribut „access“, um die gewünschte Entität auszuschließen, und rufen Sie dann die Funktion Dataset#setMetadata()
auf, um die aktualisierte Zugriffsliste anzuwenden.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Legen Sie das Attributdataset.access_entries
mit den Zugriffssteuerungen für ein Dataset fest. Rufen Sie dann die client.update_dataset()
-Funktion auf, um das Attribut zu aktualisieren.
Zugriff auf eine Tabelle oder Ansicht aufheben
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie eine Tabelle oder Ansicht aus.
Klicken Sie im Detailbereich auf Freigeben.
Erweitern Sie im Dialogfeld Freigeben das Hauptkonto, dessen Zugriff Sie widerrufen möchten.
Klicken Sie auf
Löschen.Klicken Sie im Dialogfeld Rolle aus Hauptkonto entfernen? auf Entfernen.
Klicken Sie auf Schließen, um zu den Tabellen- oder Ansichtsdetails zurückzukehren.
SQL
Verwenden Sie die DCL-Anweisung REVOKE
, um den Zugriff auf Tabellen oder Ansichten aus Hauptkonten zu entfernen:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Ersetzen Sie Folgendes:
ROLE_LIST
: eine Rolle oder Liste mit durch Kommas getrennten Rollen, die Sie widerrufen möchtenRESOURCE_TYPE
: der Ressourcentyp, von dem die Rolle widerrufen wirdUnterstützte Werte sind:
TABLE
,VIEW
,MATERIALIZED VIEW
undEXTERNAL TABLE
.RESOURCE_NAME
: der Name der Ressource, für die Sie die Berechtigung widerrufen möchtenUSER_LIST
: eine durch Kommas getrennte Liste von Nutzern, deren Rollen widerrufen werdenEine Liste der gültigen Formate finden Sie unter
user_list
.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Im folgenden Beispiel wird die Rolle „Administrator“ für die Tabelle myTable
widerrufen:
REVOKE `roles/bigquery.admin`
ON TABLE `myProject`.myDataset.myTable
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq remove-iam-policy-binding
, um den Zugriff auf eine Tabelle oder Ansicht aufzuheben:bq remove-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Ersetzen Sie Folgendes:
- MEMBER_TYPE: der Mitgliedstyp, z. B.
user
,group
,serviceAccount
oderdomain
. - MEMBER: Die E-Mail-Adresse oder der Domainname des Mitglieds.
- ROLE: Die Rolle, die Sie für das Mitglied aufheben möchten.
- RESOURCE: Der Name der Tabelle oder Ansicht, deren Richtlinie Sie aktualisieren möchten.
- MEMBER_TYPE: der Mitgliedstyp, z. B.
API
Rufen Sie die Methode
tables.getIamPolicy
auf, um die aktuelle Richtlinie abzurufen.Bearbeiten Sie die Richtlinie, um Mitglieder oder Bindungen oder beides zu entfernen. Das für die Richtlinie erforderliche Format finden Sie im Referenzthema Richtlinien.
Rufen Sie
tables.setIamPolicy
auf, um die aktualisierte Richtlinie zu erstellen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie diepolicy.Remove()
-Funktion auf, um den Zugriff zu entfernen.
Rufen Sie dann die IAM().SetPolicy()
-Funktion auf, um Änderungen an der Zugriffsrichtlinie für eine Tabelle oder Ansicht zu speichern.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Rufen Sie die aktuelle IAM-Richtlinie für eine Tabelle oder Ansicht mit der MethodeTable#getIamPolicy()
ab.
Ändern Sie die Richtlinie, um die gewünschte Rolle oder das gewünschte Hauptkonto zu entfernen, und wenden Sie dann die aktualisierte Richtlinie mit der Methode Table#setIamPolicy()
an.
Zugriff auf eine Routine widerrufen
Wenn Sie Feedback geben oder Support für dieses Feature anfordern möchten, senden Sie eine E-Mail an bq-govsec-eng@google.com.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie eine Routine aus.
Klicken Sie im Detailbereich auf Freigabe > Berechtigungen.
Erweitern Sie im Dialogfeld Berechtigungen für Routinen das Hauptkonto, dessen Zugriff Sie widerrufen möchten.
Klicken Sie auf
Hauptkonto entfernen.Klicken Sie im Dialogfeld Rolle aus Hauptkonto entfernen? auf Entfernen.
Klicken Sie auf Schließen.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq get-iam-policy
, um die vorhandenen Informationen zur Routine (einschließlich Zugriffssteuerungen) in eine JSON-Datei zu schreiben:bq get-iam-policy --routine PROJECT_ID:DATASET.ROUTINE > PATH_TO_FILE
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID.
- DATASET: der Name des Datasets, das die Routine enthält, die Sie aktualisieren möchten.
- ROUTINE: der Name der Ressource, die aktualisiert werden soll
PATH_TO_FILE: der Pfad zur JSON-Datei auf dem lokalen Computer
Nehmen Sie die Änderungen im Abschnitt
access
der JSON-Datei vor. Sie können allespecialGroup
-Einträge entfernen:projectOwners
,projectWriters
,projectReaders
undallAuthenticatedUsers
. Sie können auch die folgenden Elemente entfernen:userByEmail
,groupByEmail
unddomain
. Der Abschnittaccess
der JSON-Datei einer Routine sieht beispielsweise so aus:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:izumi@example.com", "group:admins@example.com", "domain:google.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Aktualisieren Sie Ihre Zugriffsrichtlinie mit dem Befehl
bq set-iam-policy
.bq set-iam-policy --routine PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Geben Sie den Befehl
get-iam-policy
noch einmal ein, ohne die Informationen in eine Datei zu schreiben, um die Änderungen der Zugriffssteuerung zu prüfen:bq get-iam-policy --routine --format=prettyjson \ PROJECT_ID:DATASET.ROUTINE
API
- Rufen Sie die Methode
routines.getIamPolicy
auf, um die aktuelle Richtlinie abzurufen. Bearbeiten Sie die Richtlinie, um Mitglieder oder Bindungen oder beides hinzuzufügen. Das für die Richtlinie erforderliche Format finden Sie im Referenzthema Richtlinien.
Zugriff auf eine Ressource verweigern
Mit IAM-Ablehnungsrichtlinien können Sie Leitlinien für den Zugriff auf BigQuery-Ressourcen festlegen. Sie können Ablehnungsregeln definieren, die verhindern, dass ausgewählte Hauptkonten bestimmte Berechtigungen verwenden, unabhängig von den ihnen zugewiesenen Rollen.
Informationen zum Erstellen, Aktualisieren und Löschen von Ablehnungsrichtlinien finden Sie unter Zugriff auf Ressourcen verweigern.
Sonderfälle
Berücksichtigen Sie die folgenden Szenarien, wenn Sie IAM-Ablehnungsrichtlinien für einige BigQuery-Berechtigungen erstellen:
Mit dem Zugriff auf autorisierte Ressourcen (Ansichten, Routinen, Datasets oder gespeicherte Prozeduren) können Sie eine Tabelle erstellen, löschen} oder bearbeiten sowie Tabellendaten lesen und ändern, auch wenn Sie keine direkte Berechtigung für diese Vorgänge haben. Sie können außerdem Modelldaten oder Metadaten abrufen und andere gespeicherte Prozeduren für die zugrunde liegende Tabelle aufrufen. Das bedeutet, dass die autorisierten Ressourcen die folgenden Berechtigungen haben:
bigquery.tables.get
bigquery.tables.list
bigquery.tables.getData
bigquery.tables.updateData
bigquery.tables.create
bigquery.tables.delete
bigquery.routines.get
bigquery.routines.list
bigquery.datasets.get
bigquery.models.getData
bigquery.models.getMetadata
Wenn Sie den Zugriff auf diese autorisierten Ressourcen verweigern möchten, fügen Sie beim Erstellen der Ablehnungsrichtlinie einen der folgenden Werte in das Feld
deniedPrincipal
ein:Wert Anwendungsfall principalSet://goog/public:all
Blockiert alle Hauptkonten, einschließlich autorisierter Ressourcen. principalSet://bigquery.googleapis.com/projects/PROJECT_NUMBER/*
Blockiert alle autorisierten BigQuery-Ressourcen im angegebenen Projekt. PROJECT_NUMBER
ist eine automatisch generierte eindeutige Kennung für Ihr Projekt vom TypINT64
.Wenn Sie bestimmte Hauptkonten von der Ablehnungsrichtlinie ausnehmen möchten, geben Sie diese Hauptkonten im Feld
exceptionPrincipals
Ihrer Ablehnungsrichtlinie an. Beispiel:exceptionPrincipals: "principalSet://bigquery.googleapis.com/projects/1234/*"
BigQuery speichert Abfrageergebnisse eines Jobinhabers 24 Stunden lang im Cache. Der Jobinhaber kann darauf zugreifen, ohne die Berechtigung
bigquery.tables.getData
für die Tabelle mit den Daten zu benötigen. Wenn Sie also der Berechtigungbigquery.tables.getData
eine IAM-Ablehnungsrichtlinie hinzufügen, wird der Zugriff auf zwischengespeicherte Ergebnisse für den Jobinhaber erst blockiert, wenn der Cache abläuft. Wenn Sie den Zugriff des Jobinhabers auf zwischengespeicherte Ergebnisse blockieren möchten, erstellen Sie eine separate Ablehnungsrichtlinie für die Berechtigungbigquery.jobs.create
.Um unbeabsichtigten Datenzugriff zu verhindern, wenn Sie Richtlinien zum Verweigern verwenden, um Lesevorgänge für Daten zu blockieren, empfehlen wir, dass Sie auch alle vorhandenen Abonnements für das Dataset überprüfen und widerrufen.
Wenn Sie eine IAM-Ablehnungsrichtlinie zum Ansehen von Dataset-Zugriffssteuerungen erstellen möchten, lehnen Sie die folgenden Berechtigungen ab:
bigquery.datasets.get
bigquery.datasets.getIamPolicy
Wenn Sie eine IAM-Ablehnungsrichtlinie zum Aktualisieren der Zugriffssteuerung für Datasets erstellen möchten, lehnen Sie die folgenden Berechtigungen ab:
bigquery.datasets.update
bigquery.datasets.setIamPolicy
Beschränkungen
- Access Control Lists (ACLs) für Routinen sind nicht in replizierten Routinen enthalten.
- Routinen in externen oder verknüpften Datasets unterstützen keine Zugriffssteuerungen.
- Tabellen in externen oder verknüpften Datasets unterstützen keine Zugriffssteuerungen.
- Zugriffssteuerungen für Abläufe können nicht mit Terraform festgelegt werden.
- Regelmäßige Zugriffssteuerungen können nicht mit dem Google Cloud SDK festgelegt werden.
- Routinezugriffssteuerungen können nicht mit der BigQuery Data Control Language (DCL) festgelegt werden.
- Data Catalog unterstützt keine routinemäßigen Zugriffssteuerungen. Wenn ein Nutzer den Zugriff auf Routinen auf Bedingungsebene gewährt hat, werden seine Routinen nicht in der BigQuery-Seitenleiste angezeigt. Als Problemumgehung können Sie stattdessen Zugriff auf Dataset-Ebene gewähren.
- In der Ansicht
OBJECT_PRIVILEGES
werden keine Zugriffssteuerungen für Routinen angezeigt.
Nächste Schritte
projects.testIamPermissions
-Methode zum Testen des Nutzerzugriffs auf eine Ressource