Mit Blob-Speicher verbinden
Als BigQuery-Administrator können Sie eine Verbindung erstellen, damit Datenanalysten auf Daten zugreifen können, die in Azure Blob Storage gespeichert sind.
BigQuery Omni greift über Verbindungen auf Blob Storage-Daten zu. Es gibt zwei Methoden für den sicheren Zugriff auf Daten aus Blob Storage. Sie können die Identitätsföderation verwenden, indem Sie einem Google Cloud-Dienstkonto Zugriff auf Ihre Azure-Anwendung gewähren oder direkt auf Ihre Azure Active Directory-Anwendung (AD) in Ihrem Mandanten Zugriff gewähren:
Föderierte Azure-Identität verwenden. Dies ist der empfohlene Ansatz. BigQuery Omni unterstützt die Azure-Workload Identity-Föderation. Da BigQuery Omni die Azure-Workload Identity-Föderation unterstützt, können Sie einem Google-Dienstkonto Zugriff auf die Azure-Anwendung innerhalb Ihres Mandanten gewähren. Der föderierte Identitätszugriff ist sicherer als der nicht föderierte Zugriff, da der Anwendungsclient in Ihrem Azure-Mandanten vorhanden ist. Die Secrets des Anwendungsclients werden nicht von Ihnen oder von Google verwaltet.
Mit der Identitätsföderation haben Sie mehr Kontrolle über die Anwendung, da Ihre Anwendung, der Sie Zugriff auf Ihre Daten gewährt haben, in Ihrem Mandanten vorhanden ist.
Verwenden Sie eine nicht föderierte Identität. Die Servicemitteilung (MSA), die Kunden über die Einstellung der Verwendung einer nicht föderierten Identität für den Zugriff auf Ihre Azure-Anwendung informiert, wurde am 20. Juni 2023 an die betroffenen Partner und Kunden gesendet, um sie vor dem Inkrafttreten der Änderungen am 8. Januar 2024 zu informieren. Erwägen Sie stattdessen, eine föderierte Azure-Identität zu verwenden. Jede nicht föderierte Verbindung hat eine eigene eindeutige Azure AD-Anwendung (Azure Active Directory). Berechtigungen werden den Anwendungen über IAM-Rollen (Identity and Access Management) in Azure gewährt. Die erteilten Azure IAM-Rollen bestimmen, auf welche Daten BigQuery bei einer Verbindung zugreifen kann.
Nachdem Sie eine BigQuery-Verbindung erstellt haben, können Sie entweder die Azure Blob Storage-Daten abfragen oder Abfrageergebnisse in Blob Storage exportieren.
Hinweis
Es müssen die folgenden Ressourcen erstellt sein:
Ein Google Cloud-Projekt mit aktivierter BigQuery Connection API
Wenn Sie das kapazitätsbasierte Preismodell verwenden, stellen Sie sicher, dass Sie die BigQuery Reservation API für Ihr Projekt aktiviert haben. Informationen zu den Preisen finden Sie unter BigQuery-Omni-Preise.
Ein Azure-Mandant mit einem Azure-Abo.
Ein Azure Storage-Konto, das die folgenden Spezifikationen erfüllt:
Es ist ein allgemeines V2-Konto oder ein Blob-Speicherkonto.
Sie verwendet einen hierarchischen Namespace. Weitere Informationen finden Sie unter Speicherkonto für die Verwendung mit Azure Data Lake Storage Gen2 erstellen.
Die Daten werden in einem der unterstützten Formate ausgefüllt.
Die Daten befinden sich in der Region
azure-eastus2
.
Erforderliche Rollen
-
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Verbindungsadministrator (
roles/bigquery.connectionAdmin
) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Verbindung für den Zugriff auf Azure Blob Storage-Daten benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Prüfen Sie, ob Sie die folgenden Azure IAM-Berechtigungen für Ihren Mandanten haben:
Application.ReadWrite.All
AppRoleAssignment.ReadWrite.All
Kontingente
Weitere Informationen zu Kontingenten finden Sie unter BigQuery Connection API.
Föderierte Azure-Identität verwenden
So greifen Sie auf Daten mit einer föderierten Identität zu:
- Anwendung in Ihrem Azure-Mandanten erstellen
- BigQuery-Azure-Verbindung erstellen
- Föderierte Anmeldedaten hinzufügen
- BigQuery Azure AD-Anwendungen eine Rolle zuweisen
Weitere Informationen zum Verwenden von Anmeldedaten für föderierte Identitäten für den Zugriff auf Daten in Azure finden Sie unter Workload Identity-Föderation.
Anwendung in Ihrem Azure-Mandanten erstellen
So erstellen Sie eine Anwendung in Ihrem Azure-Mandanten:
Azure Portal
Gehen Sie im Azure-Portal zu App-Registrierungen und klicken Sie dann auf Neue Registrierung.
Geben Sie unter Namen einen Namen für die Anwendung ein.
Wählen Sie für Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.
Klicken Sie auf Registrieren, um die neue Anwendung zu registrieren.
Notieren Sie sich die Anwendungs-ID (Client). Sie müssen diese ID angeben, wenn Sie die Verbindung erstellen.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false }
Weitere Informationen zum Registrieren einer Anwendung in Azure
Verbindung herstellen
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Wählen Sie im Menü
Daten hinzufügen die Option Externe Datenquelle aus.Geben Sie im Bereich Externe Datenquelle die folgenden Informationen ein:
- Wählen Sie als Verbindungstyp die Option BigLake in Azure (über BigQuery Omni) aus.
- Geben Sie unter Verbindungs-ID eine Kennung für die Verbindungsressource ein. Sie können Buchstaben, Ziffern, Bindestriche und Unterstriche verwenden.
- Wählen Sie den Standort aus, an dem Sie die Verbindung herstellen möchten.
- Optional: Sie können unter Anzeigename einen nutzerfreundlichen Namen für die Verbindung eingeben, z. B.
My connection resource
. Der Anzeigename kann ein beliebiger Wert sein, mit dem sich die Verbindungsressource ermitteln lässt, wenn Sie sie später ändern müssen. - Optional: Sie können unter Beschreibung eine Beschreibung für die Verbindungsressource eingeben.
- Geben Sie unter Azure-Mandanten-ID die Azure-Mandanten-ID ein, die auch als Verzeichnis-ID (Mandanten) bezeichnet wird.
Klicken Sie auf das Kästchen Föderierte Identität verwenden und geben Sie dann die ID der föderierten Azure-Anwendung (Client) ein.
Informationen zum Abrufen von Azure-IDs finden Sie unter Anwendung in Ihrem Azure-Mandanten erstellen.
Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Notieren Sie sich im Abschnitt Verbindungsinformationen den Wert von BigQuery-Google-Identität, die die Dienstkonto-ID ist. Diese ID gilt für das Google Cloud-Dienstkonto, das Sie für den Zugriff auf Ihre Anwendung autorisieren.
Terraform
resource "google_bigquery_connection" "connection" { connection_id = "omni-azure-connection" location = "azure-eastus2" description = "created by terraform" azure { customer_tenant_id = "TENANT_ID" federated_application_client_id = azuread_application.example.application_id } }
Ersetzen Sie TENANT_ID
durch die Mandanten-ID des Azure-Verzeichnisses, das das Blob-Speicherkonto enthält.
bq
Führen Sie den Befehl bq mk
aus. Verwenden Sie den Parameter --format=json
, um die Ausgabe im JSON-Format abzurufen.
bq mk --connection --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=AZURE_LOCATION \ --federated_azure=true \ --federated_app_client_id=APP_ID \ CONNECTION_ID
Dabei gilt:
TENANT_ID
: die Mandanten-ID des Azure-Verzeichnisses, das das Azure Storage-Konto enthält.AZURE_LOCATION
: die Azure-Region, in der sich Ihre Azure Storage-Daten befinden. BigQuery Omni unterstützt die Regionazure-eastus2
.APP_ID
: die ID der Azure-Anwendung (Client) Informationen zum Abrufen dieser ID finden Sie unter Anwendung im Azure-Mandanten erstellen.CONNECTION_ID
: der Name der Verbindung.
Die Ausgabe sieht etwa so aus:
Connection CONNECTION_ID successfully created Please add the following identity to your Azure application APP_ID Identity: SUBJECT_ID
Diese Ausgabe enthält die folgenden Werte:
APP_ID
: die ID der von Ihnen erstellten Anwendung.SUBJECT_ID
: die ID des Google Cloud-Dienstkontos, das der Nutzer für den Zugriff auf seine Anwendung autorisiert. Sie benötigen diesen Wert, wenn Sie föderierte Anmeldedaten in Azure erstellen.
Notieren Sie sich die Werte APP_ID
und SUBJECT_ID
für die nächsten Schritte.
Fügen Sie als Nächstes föderierte Anmeldedaten für Ihre Anwendung hinzu.
Föderierte Anmeldedaten hinzufügen
So erstellen Sie föderierte Anmeldedaten:
Azure Portal
Gehen Sie im Azure-Portal zu App-Registrierungen und klicken Sie dann auf Ihre Anwendung.
Wählen Sie Zertifikate & Secrets > Föderierte Anmeldedaten > Anmeldedaten hinzufügen aus. Gehen Sie anschließend so vor:
Wählen Sie in der Liste Szenario der föderierten Anmeldedaten die Option Anderer Aussteller aus.
Geben Sie als Aussteller
https://accounts.google.com
ein.Geben Sie als Themenkennung die BigQuery-Google-Identität des Google Cloud-Dienstkontos ein, das Sie beim Erstellen der BigQuery-Azure-Verbindung erhalten haben.
Geben Sie unter Name einen Namen für die Anmeldedaten ein.
Klicken Sie auf Hinzufügen.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false } resource "azuread_application_federated_identity_credential" "example" { application_object_id = azuread_application.example.object_id display_name = "omni-federated-credential" description = "BigQuery Omni federated credential" audiences = ["api://AzureADTokenExchange"] issuer = "https://accounts.google.com" subject = google_bigquery_connection.connection.azure[0].identity }
Weitere Informationen finden Sie unter Anwendung für die Vertrauensstellung eines externen Identitätsanbieters konfigurieren.
Azure-Anwendungen eine Rolle in BigQuery zuweisen
Um der Azure-Anwendung von BigQuery eine Rolle zuzuweisen, verwenden Sie das Azure-Portal, Azure PowerShell oder die Microsoft Management REST API:
Azure Portal
Sie können Rollenzuweisungen im Azure-Portal ausführen. Melden Sie sich als Nutzer mit der Berechtigung Microsoft.Authorization/roleAssignments/write
an. Mit der Rollenzuweisung kann die BigQuery-Azure-Verbindung auf die Azure Storage-Daten zugreifen, wie in der Rollenrichtlinie angegeben.
So fügen Sie Rollenzuweisungen mithilfe des Azure-Portals hinzu:
Geben Sie in Ihrem Azure Storage-Konto
IAM
in die Suchleiste ein.Klicken Sie auf Zugriffssteuerung (IAM).
Klicken Sie auf Hinzufügen und wählen Sie Rollenzuweisungen hinzufügen aus.
Wählen Sie die Rolle Storage Blob Data-Leser aus, um schreibgeschützten Zugriff zu gewähren. Wählen Sie für die Bereitstellung des Lese-/Schreibzugriffs die Rolle Storage Blob-Daten-Mitwirkender aus.
Setzen Sie Zugriff gewähren auf auf Nutzer, Gruppe oder Diensthauptkonto.
Klicken Sie auf Mitglieder auswählen.
Geben Sie im Feld Auswählen den Namen der Azure-Anwendung ein, den Sie beim Erstellen der Anwendung im Azure-Mandanten angegeben haben.
Klicken Sie auf Speichern.
Weitere Informationen finden Sie unter Azure-Rollen mit dem Azure-Portal zuweisen.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azurerm_role_assignment" "data-contributor-role" { scope = data.azurerm_storage_account.example.id # Read-write permission for Omni on the storage account role_definition_name = "Storage Blob Data Contributor" principal_id = azuread_service_principal.example.id }
Azure PowerShell
Eine Rollenzuweisung für ein Diensthauptkonto auf Ressourcenebene können Sie mit dem Befehl New-AzRoleAssignment
hinzufügen:
New-AzRoleAssignment` -SignInName APP_NAME` -RoleDefinitionName ROLE_NAME` -ResourceName RESOURCE_NAME` -ResourceType RESOURCE_TYPE` -ParentResource PARENT_RESOURCE` -ResourceGroupName RESOURCE_GROUP_NAME
Dabei gilt:
APP_NAME
: der Name der Anwendung.ROLE_NAME
: der Rollenname, den Sie zuweisen möchten.RESOURCE_NAME
: der Ressourcenname.RESOURCE_TYPE
: der Ressourcentyp.PARENT_RESOURCE
: die übergeordnete Ressource.RESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.
Weitere Informationen zum Hinzufügen eines neuen Diensthauptkontos mit Azure PowerShell finden Sie unter Azure-Rollen mit Azure PowerShell zuweisen.
Azure-Befehlszeile
Um eine Rollenzuweisung für ein Diensthauptkonto auf Ressourcenebene hinzuzufügen, können Sie das Azure-Befehlszeilentool verwenden. Sie benötigen die Berechtigung Microsoft.Authorization/roleAssignments/write
für das Speicherkonto, um Rollen zuweisen zu können.
Führen Sie den Befehl az role assignment create
aus, um dem Diensthauptkonto eine Rolle zuzuweisen, z. B. die Rolle „Storage Blob-Daten-Mitwirkender”:
az role assignment create --role "Storage Blob Data Contributor" \ --assignee-object-id ${SP_ID} \ --assignee-principal-type ServicePrincipal \ --scope subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME
Dabei gilt:
SP_ID
: die Diensthauptkonto-ID. Dieses Diensthauptkonto bezieht sich auf die von Ihnen erstellte Anwendung. Informationen zum Diensthauptkonto für eine föderierte Verbindung finden Sie unter Diensthauptkontoobjekt.STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosRESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.SUBSCRIPTION_ID
: die Abo-ID
Weitere Informationen finden Sie unter Azure-Rollen mithilfe der Azure-Befehlszeile zuweisen.
Microsoft REST API
Zum Hinzufügen von Rollenzuweisungen für ein Diensthauptkonto können Sie eine HTTP-Anfrage an Microsoft Management senden.
Zum Aufrufen der Microsoft Graph REST API rufen Sie ein OAuth-Token für eine Anwendung ab. Weitere Informationen finden Sie unter Zugriff ohne Nutzer erhalten.
Die Anwendung, die die Microsoft Graph REST API aufgerufen hat, muss die Anwendungsberechtigung Application.ReadWrite.All
haben.
Führen Sie den folgenden Befehl aus, um ein OAuth-Token zu generieren:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Dabei gilt:
TENANT_ID
: die Mandanten-ID, die der ID des Azure-Verzeichnisses entspricht, das das Azure Storage-Konto enthält.CLIENT_ID
: die Azure-Client-ID.CLIENT_SECRET
: der Azure-Clientschlüssel.
Rufen Sie die ID der integrierten Azure-Rollen ab, die Sie dem Diensthauptkonto zuweisen möchten.
Hier einige gängige Rollen:
- Storage Blob-Daten-Mitwirkender:
ba92f5b4-2d11-453d-a403-e96b0029c9fe
- Storage Blob Data-Leser:
2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
Rufen Sie die Microsoft Graph REST API bei der Azure Resource Management REST API auf, um dem Dienstprinzip eine Rolle zuzuweisen:
export ROLE_ASSIGNMENT_ID=$(uuidgen) curl -X PUT \ 'https://management.azure.com/subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID?api-version=2018-01-01-preview' \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ "properties": { "roleDefinitionId": "subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleDefinitions/ROLE_ID", "principalId": "SP_ID" } }'
Dabei gilt:
ROLE_ASSIGNMENT_ID
: die Rollen-ID.SP_ID
: die Diensthauptkonto-ID. Dieses Diensthauptkonto bezieht sich auf die von Ihnen erstellte Anwendung. Informationen zum Diensthauptkonto für eine föderierte Verbindung finden Sie unter Diensthauptkontoobjekt.SUBSCRIPTION_ID
: die Abo-IDRESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosSUBSCRIPTION_ID
: die Abo-ID
Der Debugger ist jetzt einsatzbereit. Bei einer Rollenzuweisung in Azure kann es jedoch zu einer Übertragungsverzögerung kommen. Wenn Sie die Verbindung aufgrund von Berechtigungsproblemen nicht verwenden können, versuchen Sie es nach einiger Zeit noch einmal.
Nicht föderierte Identität verwenden
So greifen Sie auf Daten mit einer nicht föderierten Identität zu:
- BigQuery-Azure-Verbindung erstellen
- Azure AD-Diensthauptkonto erstellen
- Azure AD-Anwendungen von BigQuery eine Rolle zuweisen
Weitere Informationen zur Verwendung der föderierten Identität für den Zugriff auf Daten in Azure finden Sie unter Azure AD-Anwendung.
Verbindung herstellen
Verwenden Sie die Google Cloud Console oder das bq-Befehlszeilentool, um eine Verbindung zu Blob Storage herzustellen:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Wählen Sie im Menü
Daten hinzufügen die Option Externe Datenquelle aus.Geben Sie im Bereich Externe Datenquelle die folgenden Informationen ein:
- Wählen Sie als Verbindungstyp die Option BigLake in Azure (über BigQuery Omni) aus.
- Geben Sie unter Verbindungs-ID eine Kennung für die Verbindungsressource ein. Sie können Buchstaben, Ziffern, Bindestriche und Unterstriche verwenden.
- Wählen Sie den Standort aus, an dem Sie die Verbindung herstellen möchten.
- Optional: Sie können unter Anzeigename einen nutzerfreundlichen Namen für die Verbindung eingeben, z. B.
My connection resource
. Der Anzeigename kann ein beliebiger Wert sein, mit dem sich die Verbindungsressource ermitteln lässt, wenn Sie sie später ändern müssen. - Optional: Sie können unter Beschreibung eine Beschreibung für die Verbindungsressource eingeben.
- Geben Sie unter Azure-Mandanten-ID die Azure-Mandanten-ID ein, die auch als Verzeichnis-ID (Mandanten) bezeichnet wird.
Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Notieren Sie sich im Abschnitt Verbindungsinformationen die Werte für Azure-App-ID und Azure-App-Name. Diese Werte sind erforderlich, wenn Sie der Azure-Anwendung BigQuery eine Rolle zuweisen.
Terraform
resource "google_bigquery_connection" "connection" { connection_id = "omni-azure-connection" location = "azure-eastus2" description = "created by terraform" azure { customer_tenant_id = "TENANT_ID" federated_application_client_id = azuread_application.example.application_id } }
Ersetzen Sie TENANT_ID
durch die Mandanten-ID des Azure-Verzeichnisses, das das Blob-Speicherkonto enthält.
bq
Führen Sie den Befehl bq mk
aus. Verwenden Sie den Parameter --format=json
, um die Ausgabe im JSON-Format abzurufen.
bq mk --connection --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=AZURE_LOCATION \ CONNECTION_ID
Dabei gilt:
TENANT_ID
: die Mandanten-ID des Azure-Verzeichnisses, das das Azure Storage-Konto enthält.AZURE_LOCATION
: die Azure-Region, in der sich Ihre Azure Storage-Daten befinden. BigQuery Omni unterstützt die Regionazure-eastus2
.CONNECTION_ID
: die ID der Verbindung.
Die Ausgabe sieht in etwa so aus:
Please create a Service Principal in your directory for appId: APP_ID, and perform role assignment to app: APP_NAME to allow BigQuery to access your Azure data.
Diese Ausgabe enthält die folgenden Werte:
APP_ID
: die ID der von Ihnen erstellten Anwendung.APP_NAME
: der Anwendungsname, dem Sie Rollen zuweisen müssen, damit BigQuery auf Ihre Azure-Daten zugreifen kann.
Notieren Sie sich die Werte APP_ID
und APP_NAME
für die nächsten Schritte.
Weitere Informationen finden Sie unter Verbindung herstellen.
Azure AD-Diensthauptkonto erstellen
Verwenden Sie zum Erstellen eines Azure AD-Diensthauptkontos die Google Cloud Console, Azure PowerShell, das Azure-Befehlszeilentool oder die Microsoft Graph REST API:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Klicken Sie im Bereich Explorer auf die von Ihnen hergestellte Verbindung.
Klicken Sie im Bereich Verbindungsinformationen auf Im Azure-Konto anmelden.
Melden Sie sich in Ihrem Azure-Konto an.
Klicken Sie auf der Seite Angeforderte Berechtigungen auf Akzeptieren.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false }
Azure PowerShell
Zum Erstellen des Diensthauptkontos für die zuvor zurückgegebene Anwendungs-ID APP_ID
muss der Nutzer die Berechtigung Microsoft.directory/servicePrincipals/create
haben.
Führen Sie den Befehl New-AzADServicePrincipal
aus, um das Diensthauptkonto zu erstellen.
New-AzADServicePrincipal` -ApplicationId APP_ID` -SkipAssignment
Ersetzen Sie APP_ID
durch die Anwendungs-ID, die zuvor zurückgegeben wurde.
Azure-Befehlszeile
Um das Diensthauptkonto für die App-ID APP_ID
zu erstellen, die zuvor zurückgegeben wurde, können Sie das Azure-Befehlszeilentool verwenden. Sie benötigen die Berechtigung Microsoft.directory/servicePrincipals/create
, um ein Diensthauptkonto zu erstellen.
Führen Sie den Befehl az ad sp
aus, um das Diensthauptkonto zu erstellen:
export SP_ID=$(az ad sp create --id APP_ID | jq --raw-output '.objectId')
Ersetzen Sie APP_ID
durch die Anwendungs-ID, die zuvor zurückgegeben wurde.
Microsoft REST API
Zum Erstellen des Diensthauptkontos für die zuvor zurückgegebene App-ID APP_ID
können Sie eine HTTP-Anfrage an die Microsoft Graph REST API senden.
Zum Aufrufen der Microsoft Graph REST API rufen Sie ein OAuth-Token für eine Anwendung ab. Weitere Informationen finden Sie unter Zugriff ohne Nutzer erhalten.
Die Anwendung, die zum Aufrufen der Microsoft Graph REST API verwendet wird, sollte die Anwendungsberechtigung Application.ReadWrite.All
haben.
Die TENANT_ID
sollte der ID des Azure-Verzeichnisses entsprechen, das das Azure Storage-Konto enthält.
Führen Sie den folgenden Befehl aus, um ein OAuth-Token zu generieren:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Dabei gilt:
TENANT_ID
: die Mandanten-ID des Azure-Verzeichnisses, das das Azure Storage-Konto enthält.CLIENT_ID
: die Azure-Client-ID.CLIENT_SECRET
: der Azure-Clientschlüssel.
Führen Sie dazu diesen Befehl aus:
export APP_ID=APP_ID
Ersetzen Sie APP_ID
durch die zurückgegebene App-ID.
Führen Sie den folgenden Befehl aus, um ein Diensthauptkonto durch Aufrufen der Microsoft Graph REST API zu erstellen:
export SP_ID=$(curl -X POST \ https://graph.microsoft.com/v1.0/serviceprincipals \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d "{ \"appId\": \"${APP_ID?}\" }" | jq --raw-output '.id')
Dabei gilt:
TOKEN
: das OAuth-Token für die Anwendung.APP_ID
: die zuvor zurückgegebene Anwendungs-ID.
Azure AD-Anwendungen von BigQuery eine Rolle zuweisen
Azure Portal
Sie können Rollenzuweisungen im Azure-Portal ausführen. Melden Sie sich als Nutzer mit der Berechtigung Microsoft.Authorization/roleAssignments/write
an. Mit der Rollenzuweisung kann die BigQuery-Azure-Verbindung auf die Azure Storage-Daten zugreifen, wie in der Rollenrichtlinie angegeben.
So fügen Sie Rollenzuweisungen mithilfe des Azure-Portals hinzu:
Geben Sie in Ihrem Azure Storage-Konto
IAM
in die Suchleiste ein.Klicken Sie auf Zugriffssteuerung (IAM).
Klicken Sie auf Hinzufügen und wählen Sie Rollenzuweisungen hinzufügen aus.
Wählen Sie die Rolle Storage Blob Data-Leser aus, um schreibgeschützten Zugriff zu gewähren. Wählen Sie für die Bereitstellung des Lese-/Schreibzugriffs die Rolle Storage Blob-Daten-Mitwirkender aus.
Setzen Sie Zugriff gewähren auf auf Nutzer, Gruppe oder Diensthauptkonto.
Klicken Sie auf Mitglieder auswählen.
Geben Sie im Feld Auswählen den Namen der Azure-Anwendung ein, die beim Erstellen der BigQuery-Azure-Verbindung zurückgegeben wurde.
Klicken Sie auf Speichern.
Weitere Informationen finden Sie unter Azure-Rollen mit dem Azure-Portal zuweisen.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azurerm_role_assignment" "data-contributor-role" { scope = data.azurerm_storage_account.example.id # Read-write permission for Omni on the storage account role_definition_name = "Storage Blob Data Contributor" principal_id = azuread_service_principal.example.id }
Azure PowerShell
Eine Rollenzuweisung für ein Diensthauptkonto auf Ressourcenebene können Sie mit dem Befehl New-AzRoleAssignment
hinzufügen:
New-AzRoleAssignment` -SignInName APP_NAME` -RoleDefinitionName ROLE_NAME` -ResourceName RESOURCE_NAME` -ResourceType RESOURCE_TYPE` -ParentResource PARENT_RESOURCE` -ResourceGroupName RESOURCE_GROUP_NAME
Dabei gilt:
APP_NAME
: der Name der Anwendung.ROLE_NAME
: der Rollenname, den Sie zuweisen möchten.RESOURCE_NAME
: der Ressourcenname.RESOURCE_TYPE
: der Ressourcentyp.PARENT_RESOURCE
: die übergeordnete Ressource.RESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.
Weitere Informationen zum Hinzufügen eines neuen Diensthauptkontos mit Azure PowerShell finden Sie unter Azure-Rollen mit Azure PowerShell zuweisen.
Azure-Befehlszeile
Um eine Rollenzuweisung für ein Diensthauptkonto auf Ressourcenebene hinzuzufügen, können Sie das Azure-Befehlszeilentool verwenden. Sie benötigen die Berechtigung Microsoft.Authorization/roleAssignments/write
für das Speicherkonto, um Rollen zuweisen zu können.
Führen Sie den Befehl az role assignment create
aus, um dem Diensthauptkonto eine Rolle zuzuweisen, z. B. die Rolle „Storage Blob-Daten-Mitwirkender”:
az role assignment create --role "Storage Blob Data Contributor" \ --assignee-object-id ${SP_ID} \ --assignee-principal-type ServicePrincipal \ --scope subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME
Dabei gilt:
SP_ID
: die Diensthauptkonto-ID.STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosRESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.SUBSCRIPTION_ID
: die Abo-ID
Weitere Informationen finden Sie unter Azure-Rollen mithilfe der Azure-Befehlszeile zuweisen.
Microsoft REST API
Zum Hinzufügen von Rollenzuweisungen für ein Diensthauptkonto können Sie eine HTTP-Anfrage an Microsoft Management senden.
Zum Aufrufen der Microsoft Graph REST API rufen Sie ein OAuth-Token für eine Anwendung ab. Weitere Informationen finden Sie unter Zugriff ohne Nutzer erhalten.
Die Anwendung, die die Microsoft Graph REST API aufgerufen hat, muss die Anwendungsberechtigung Application.ReadWrite.All
haben.
Führen Sie den folgenden Befehl aus, um ein OAuth-Token zu generieren:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Dabei gilt:
TENANT_ID
: die Mandanten-ID, die der ID des Azure-Verzeichnisses entspricht, das das Azure Storage-Konto enthält.CLIENT_ID
: die Azure-Client-ID.CLIENT_SECRET
: der Azure-Clientschlüssel.
Rufen Sie die ID der integrierten Azure-Rollen ab, die Sie dem Diensthauptkonto zuweisen möchten.
Hier einige gängige Rollen:
- Storage Blob-Daten-Mitwirkender:
ba92f5b4-2d11-453d-a403-e96b0029c9fe
- Storage Blob Data-Leser:
2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
Rufen Sie die Microsoft Graph REST API bei der Azure Resource Management REST API auf, um dem Dienstprinzip eine Rolle zuzuweisen:
export ROLE_ASSIGNMENT_ID=$(uuidgen) curl -X PUT \ 'https://management.azure.com/subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID?api-version=2018-01-01-preview' \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ "properties": { "roleDefinitionId": "subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleDefinitions/ROLE_ID", "principalId": "SP_ID" } }'
Dabei gilt:
ROLE_ASSIGNMENT_ID
: die Rollen-ID.SP_ID
: die Diensthauptkonto-ID.SUBSCRIPTION_ID
: die Abo-IDRESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosSUBSCRIPTION_ID
: die Abo-ID
Der Debugger ist jetzt einsatzbereit. Bei einer Rollenzuweisung in Azure kann es jedoch zu einer Übertragungsverzögerung kommen. Wenn Sie die Verbindung aufgrund von Berechtigungsproblemen nicht verwenden können, versuchen Sie es nach einiger Zeit noch einmal.
Verbindungen für Nutzer freigeben
Sie können die folgenden Rollen zuweisen, damit Nutzer Daten abfragen und Verbindungen verwalten können:
roles/bigquery.connectionUser
: Nutzer können Verbindungen nutzen, um sich mit externen Datenquellen zu verbinden und diese abzufragen.roles/bigquery.connectionAdmin
: Nutzer können Verbindungen verwalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.
Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Explorer > Verbindung.
Klicken Sie im Bereich Details auf Freigeben, um eine Verbindung freizugeben. Führen Sie anschließend folgende Schritte aus:
Geben Sie im Dialogfeld Verbindungsberechtigungen die Verbindung für andere Hauptkonten frei, indem Sie Hauptkonten hinzufügen oder bearbeiten.
Klicken Sie auf Speichern.
bq
Sie können keine Verbindung mit dem bq-Befehlszeilentool freigeben. Verwenden Sie zum Freigeben einer Verbindung die Google Cloud Console oder die Methode der BigQuery Connections API.
API
Verwenden Sie die Methode projects.locations.connections.setIAM
in dem Referenzabschnitt zur BigQuery Connections REST API und geben Sie eine Instanz der Ressource policy
an.
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.
Nächste Schritte
- Weitere Informationen zu verschiedenen Verbindungstypen
- Verbindungen verwalten
- Weitere Informationen zu BigQuery Omni
- Informationen zu BigLake-Tabellen.
- Informationen zu Blob Storage-Daten abfragen.
- Informationen zu Abfrageergebnisse nach Blob Storage exportieren