Membuat koneksi ke Blob Storage
Sebagai administrator BigQuery, Anda dapat membuat koneksi untuk memungkinkan analis data mengakses data yang disimpan di Azure Blob Storage.
BigQuery Omni mengakses data Blob Storage melalui koneksi. BigQuery Omni mendukung penggabungan identitas workload Azure. Dukungan BigQuery Omni untuk penggabungan identitas workload Azure memungkinkan Anda memberikan akses untuk aplikasi Azure di tenant ke akun layanan Google. Tidak ada secret klien aplikasi yang akan dikelola oleh Anda atau Google.
Setelah membuat koneksi BigQuery Azure, Anda dapat membuat kueri data Blob Storage atau mengekspor hasil kueri ke Blob Storage.
Sebelum memulai
Pastikan Anda sudah membuat resource berikut:
Project Google Cloud dengan BigQuery Connection API yang diaktifkan.
Jika menggunakan model harga berbasis kapasitas, pastikan Anda telah mengaktifkan BigQuery Reservation API untuk project Anda. Untuk informasi tentang harga, lihat harga BigQuery Omni.
Tenant Azure dengan langganan Azure.
Akun Azure Storage yang memenuhi spesifikasi berikut:
Akun ini adalah akun V2 tujuan umum atau akun Blob Storage.
Akun menggunakan ruang nama hierarkis. Untuk informasi selengkapnya, lihat Membuat akun penyimpanan untuk digunakan dengan Azure Data Lake Storage Gen2.
Data diisi dalam salah satu format yang didukung.
Data berada di region
azure-eastus2
.
Peran yang diperlukan
-
Untuk mendapatkan izin yang diperlukan guna membuat koneksi untuk mengakses data Azure Blob Storage, minta administrator untuk memberi Anda peran IAM BigQuery Connection Admin (
roles/bigquery.connectionAdmin
) pada project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Pastikan Anda memiliki izin Azure IAM berikut di tenant Anda:
Application.ReadWrite.All
AppRoleAssignment.ReadWrite.All
Kuota
Untuk informasi selengkapnya tentang kuota, lihat BigQuery Connection API.
Membuat koneksi Azure
Untuk membuat koneksi Azure, ikuti langkah-langkah berikut:
- Buat aplikasi di tenant Azure.
- Buat koneksi BigQuery Azure.
- Tambahkan kredensial gabungan.
- Tetapkan peran ke aplikasi Azure AD BigQuery.
Untuk informasi selengkapnya tentang penggunaan kredensial identitas gabungan untuk mengakses data di Azure, lihat Penggabungan identitas workload.
Membuat aplikasi di tenant Azure
Untuk membuat aplikasi di tenant Azure, ikuti langkah-langkah berikut:
Azure Portal
Di portal Azure, buka App registrations, lalu klik New registration.
Untuk Name, masukkan nama aplikasi Anda.
Untuk Supported account types, pilih Accounts in this organizational directory only.
Untuk mendaftarkan permohonan baru, klik Register.
Catat Application (client) ID. Anda harus memberikan ID ini saat membuat koneksi.
Terraform
Tambahkan kode berikut ke file konfigurasi Terraform Anda:
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 }
Untuk informasi selengkapnya, lihat cara mendaftarkan aplikasi di Azure.
Membuat koneksi
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di menu Add
, pilih External data source.Di panel External data source, masukkan informasi berikut:
- Untuk Connection type, pilih BigLake on Azure (via BigQuery Omni).
- Untuk Connection ID, masukkan ID untuk resource koneksi. Anda dapat menggunakan huruf, angka, tanda hubung, dan garis bawah.
- Pilih lokasi tempat Anda ingin membuat koneksi.
- Opsional: Untuk Friendly name, masukkan nama yang mudah digunakan untuk koneksi, seperti
My connection resource
. Nama yang mudah digunakan dapat berupa nilai apa pun yang membantu Anda mengidentifikasi resource koneksi jika perlu mengubahnya nanti. - Opsional: Untuk Description, masukkan deskripsi untuk resource koneksi.
- Untuk Azure tenant id, masukkan ID tenant Azure, yang juga disebut sebagai ID Direktori (tenant).
Aktifkan kotak centang Use federated identity, lalu masukkan ID aplikasi (klien) gabungan Azure.
Untuk mempelajari cara mendapatkan ID Azure, lihat Membuat aplikasi di tenant Azure.
Klik Create connection.
Klik Go to connection.
Di bagian Connection info, catat nilai BigQuery Google identity, yang merupakan ID akun layanan. ID ini ditujukan untuk akun layanan Google Cloud yang Anda beri otorisasi untuk mengakses aplikasi Anda.
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 } }
Ganti TENANT_ID
dengan ID tenant direktori Azure yang berisi akun Blob Storage.
bq
Gunakan perintah bq mk
. Untuk mendapatkan output dalam format JSON, gunakan parameter --format=json
.
bq mk --connection --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=AZURE_LOCATION \ --federated_azure=true \ --federated_app_client_id=APP_ID \ CONNECTION_ID
Ganti yang berikut ini:
TENANT_ID
: ID tenant direktori Azure yang berisi akun Azure Storage.AZURE_LOCATION
: region Azure tempat data Azure Storage Anda berada. BigQuery Omni mendukung regionazure-eastus2
.APP_ID
: ID Aplikasi (klien) Azure. Untuk mempelajari cara mendapatkan ID ini, lihat Membuat aplikasi di tenant Azure.CONNECTION_ID
: nama koneksi.
Output mirip dengan yang berikut ini:
Connection CONNECTION_ID successfully created Please add the following identity to your Azure application APP_ID Identity: SUBJECT_ID
Output ini mencakup nilai-nilai berikut:
APP_ID
: ID aplikasi yang Anda buat.SUBJECT_ID
: ID akun layanan Google Cloud yang diizinkan pengguna untuk mengakses aplikasi mereka. Nilai ini diperlukan saat Anda membuat kredensial gabungan di Azure.
Perhatikan nilai APP_ID
dan SUBJECT_ID
untuk digunakan pada langkah berikutnya.
Selanjutnya, tambahkan kredensial gabungan untuk aplikasi Anda.
Menambahkan kredensial gabungan
Untuk membuat kredensial gabungan, ikuti langkah-langkah berikut:
Azure Portal
Di portal Azure, buka App registrations, lalu klik aplikasi Anda.
Pilih Certificates & secrets > Federated credentials > Add credentials. Kemudian, lakukan hal berikut:
Dari daftar Federated credential scenario, pilih Other issuer.
Untuk Issuer, masukkan
https://accounts.google.com
.Untuk Subject identifier, masukkan BigQuery Google identity dari akun layanan Google Cloud yang Anda dapatkan saat membuat koneksi.
Untuk Name, masukkan nama untuk kredensial.
Klik Add.
Terraform
Tambahkan kode berikut ke file konfigurasi Terraform Anda:
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 }
Untuk informasi selengkapnya, lihat Mengonfigurasi aplikasi agar memercayai penyedia identitas eksternal.
Menetapkan peran ke aplikasi Azure BigQuery
Untuk menetapkan peran pada aplikasi Azure BigQuery, gunakan Azure Portal, Azure PowerShell, atau Microsoft Management REST API:
Azure Portal
Anda dapat melakukan penetapan peran di Azure Portal dengan login sebagai pengguna menggunakan izin Microsoft.Authorization/roleAssignments/write
. Penetapan peran memungkinkan koneksi BigQuery Azure mengakses data Azure Storage seperti yang ditentukan dalam kebijakan peran.
Untuk menambahkan penetapan peran menggunakan Azure Portal, ikuti langkah-langkah berikut:
Dari akun Azure Storage, masukkan
IAM
di kotak penelusuran.Klik Access Control (IAM).
Klik Add, lalu pilih Add role assignments.
Untuk memberikan akses baca saja, pilih peran Storage Blob Data Reader. Untuk memberikan akses baca-tulis, pilih peran Storage Blob Data Contributor.
Tetapkan Assign access to ke User, group, or service principal.
Klik Select members.
Di kolom Select, masukkan nama aplikasi Azure yang Anda berikan saat membuat aplikasi di tenant Azure.
Klik Save.
Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Azure.
Terraform
Tambahkan kode berikut ke file konfigurasi Terraform Anda:
resource "azurerm_role_assignment" "data-role" { scope = data.azurerm_storage_account.example.id # Read permission for Omni on the storage account role_definition_name = "Storage Blob Data Reader" principal_id = azuread_service_principal.example.id }
Azure PowerShell
Untuk menambahkan penetapan peran untuk akun utama layanan di cakupan resource, Anda dapat menggunakan perintah New-AzRoleAssignment
:
New-AzRoleAssignment` -SignInName APP_NAME` -RoleDefinitionName ROLE_NAME` -ResourceName RESOURCE_NAME` -ResourceType RESOURCE_TYPE` -ParentResource PARENT_RESOURCE` -ResourceGroupName RESOURCE_GROUP_NAME
Ganti yang berikut ini:
APP_NAME
: nama aplikasi.ROLE_NAME
: nama peran yang ingin Anda tetapkan.RESOURCE_NAME
: nama resource.RESOURCE_TYPE
: jenis resource.PARENT_RESOURCE
: resource induk.RESOURCE_GROUP_NAME
: nama grup resource.
Untuk informasi selengkapnya tentang cara menggunakan Azure PowerShell untuk menambahkan akun utama layanan baru, lihat Menetapkan peran Azure menggunakan Azure PowerShell.
Azure CLI
Untuk menambahkan penetapan peran bagi akun utama layanan di cakupan resource, Anda dapat menggunakan alat command line Azure. Anda harus memiliki izin Microsoft.Authorization/roleAssignments/write
agar akun penyimpanan dapat memberikan peran.
Untuk menetapkan peran, seperti peran Storage Blob Data Reader, ke akun utama layanan, jalankan perintah az role assignment create
:
az role assignment create --role "Storage Blob Data Reader" \ --assignee-object-id ${SP_ID} \ --assignee-principal-type ServicePrincipal \ --scope subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME
Ganti kode berikut:
SP_ID
: ID akun utama layanan. Akun utama layanan ini ditujukan untuk aplikasi yang Anda buat. Guna mendapatkan akun utama layanan untuk koneksi gabungan, lihat Objek akun utama layanan.STORAGE_ACCOUNT_NAME
: nama akun penyimpanan.RESOURCE_GROUP_NAME
: nama grup resource.SUBSCRIPTION_ID
: ID langganan.
Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan Azure CLI.
Microsoft REST API
Untuk menambahkan penetapan peran untuk akun utama layanan, Anda dapat mengirimkan permintaan HTTP ke Microsoft Management.
Untuk memanggil Microsoft Graph REST API,
ambil token OAuth untuk aplikasi. Untuk informasi selengkapnya, lihat Mendapatkan akses tanpa pengguna.
Aplikasi yang memanggil Microsoft Graph REST API harus memiliki izin aplikasi Application.ReadWrite.All
.
Untuk membuat token OAuth, jalankan perintah berikut:
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')
Ganti yang berikut ini:
TENANT_ID
: ID tenant yang cocok dengan ID direktori Azure yang berisi akun Azure Storage.CLIENT_ID
: client ID Azure.CLIENT_SECRET
: rahasia klien Azure.
Dapatkan ID peran bawaan Azure yang ingin Anda tetapkan ke akun utama layanan.
Berikut adalah beberapa peran umum:
- Storage Blob Data Contributor:
ba92f5b4-2d11-453d-a403-e96b0029c9fe
- Storage Blob Data Reader:
2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
Untuk menetapkan peran ke akun utama layanan, panggil Microsoft Graph REST API ke Azure Resource Management REST API:
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" } }'
Ganti yang berikut ini:
ROLE_ASSIGNMENT_ID
: ID peran.SP_ID
: ID akun utama layanan. Akun utama layanan ini ditujukan untuk aplikasi yang Anda buat. Guna mendapatkan akun utama layanan untuk koneksi gabungan, lihat Objek akun utama layanan.SUBSCRIPTION_ID
: ID langganan.RESOURCE_GROUP_NAME
: nama grup resource.STORAGE_ACCOUNT_NAME
: nama akun penyimpanan.SUBSCRIPTION_ID
: ID langganan.
Koneksi kini siap digunakan. Namun, mungkin ada penundaan propagasi untuk penetapan peran di Azure. Jika Anda tidak dapat menggunakan koneksi karena masalah izin, coba lagi setelah beberapa saat.
Berbagi koneksi dengan pengguna
Anda dapat memberikan peran berikut untuk mengizinkan pengguna membuat kueri data dan mengelola koneksi:
roles/bigquery.connectionUser
: memungkinkan pengguna menggunakan koneksi untuk terhubung dengan sumber data eksternal dan menjalankan kueri pada sumber data tersebut.roles/bigquery.connectionAdmin
: memungkinkan pengguna mengelola koneksi.
Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Koneksi dicantumkan dalam project Anda, dalam grup yang disebut Koneksi eksternal.
Di panel Penjelajah, klik nama project Anda > Koneksi eksternal > koneksi.
Di panel Detail, klik Bagikan untuk membagikan koneksi. Kemudian, lakukan hal berikut:
Dalam dialog Izin koneksi, bagikan koneksi dengan akun utama lain dengan menambahkan atau mengedit akun utama.
Klik Simpan.
bq
Anda tidak dapat berbagi koneksi dengan alat command line bq. Untuk berbagi koneksi, gunakan konsol Google Cloud atau metode BigQuery Connections API untuk melakukannya.
API
Gunakan
metode projects.locations.connections.setIAM
di bagian referensi REST API Koneksi BigQuery, dan
berikan instance resource policy
.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Langkah selanjutnya
- Pelajari berbagai jenis koneksi.
- Pelajari cara mengelola koneksi.
- Pelajari BigQuery Omni lebih lanjut.
- Pelajari tabel BigLake.
- Pelajari cara membuat kueri data Blob Storage.
- Pelajari cara mengekspor hasil kueri ke Blob Storage.