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. Ada dua metode untuk mengakses data dengan aman dari Blob Storage. Anda dapat menggunakan penggabungan identitas dengan memberi akun layanan Google Cloud akses ke aplikasi Azure, atau Anda dapat langsung memberikan akses ke aplikasi Azure Active Directory (AD) di tenant:
Menggunakan identitas gabungan Azure. Ini adalah pendekatan yang direkomendasikan. BigQuery Omni mendukung penggabungan identitas workload Azure. Dengan BigQuery Omni yang mendukung penggabungan identitas workload Azure, Anda dapat memberi akun layanan Google akses ke aplikasi Azure yang ada dalam tenant. Akses identitas gabungan lebih aman daripada akses non-gabungan karena klien aplikasi tersedia dalam tenant Azure Anda. Rahasia klien aplikasi tidak dikelola oleh Anda atau Google.
Dengan penggabungan identitas, Anda memiliki kontrol lebih besar atas aplikasi karena aplikasi yang telah diberikan akses ke data berada dalam tenant Anda.
Menggunakan identitas non-gabungan. Pengumuman Layanan Wajib (MSA) yang memberi tahu pelanggan tentang penghentian penggunaan identitas non-gabungan untuk mengakses aplikasi Azure Anda telah dikirim ke partner dan pelanggan yang terkena dampak pada 20 Juni 2023, dengan memberikan pemberitahuan sebelum perubahan berlaku pada 8 Januari 2024. Sebaiknya gunakan identitas gabungan Azure. Setiap koneksi non-gabungan memiliki aplikasi Azure Active Directory (Azure AD) yang unik. Izin diberikan ke aplikasi melalui peran Pengelolaan Akses dan Identitas (IAM) Azure. Peran IAM Azure yang diberikan menentukan data yang dapat diakses BigQuery untuk setiap koneksi.
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 informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.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
Project Anda dapat membuat hingga 50 koneksi Azure untuk setiap project. Kuota ini mencakup koneksi Azure gabungan dan non-gabungan. Untuk informasi selengkapnya tentang kuota, lihat BigQuery Connection API.
Menggunakan identitas gabungan Azure
Untuk mengakses data menggunakan identitas gabungan, 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 data, 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 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 Buat koneksi.
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 kode berikut:
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.
Outputnya mirip dengan hal 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 Tambahkan.
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 Azure BigQuery 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 Anda, masukkan
IAM
di kotak penelusuran.Klik Kontrol Akses (IAM).
Klik Add, lalu pilih Add role assignments.
Untuk memberikan akses hanya baca, 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-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 }
PowerShell Azure
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 kode berikut:
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 untuk 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 Contributor, ke akun utama layanan, jalankan perintah az role assignment create
:
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
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 kode berikut:
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 ditetapkan ke akun utama layanan.
Berikut adalah beberapa peran yang 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 kode berikut:
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.
Menggunakan identitas non-gabungan
Untuk mengakses data menggunakan identitas non-gabungan, ikuti langkah-langkah berikut:
- Buat koneksi BigQuery Azure.
- Buat akun utama layanan Azure AD.
- Tetapkan peran ke aplikasi Azure AD BigQuery.
Untuk informasi selengkapnya tentang cara menggunakan identitas non-gabungan untuk mengakses data di Azure, lihat aplikasi Azure AD.
Membuat koneksi
Untuk terhubung ke Blob Storage, gunakan Konsol Google Cloud atau alat command line bq:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di menu
Add data, 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 resource koneksi.
- Untuk Azure tenant id, masukkan ID tenant Azure, yang juga disebut sebagai ID Direktori (tenant).
Klik Buat koneksi.
Klik Go to connection.
Di bagian Connection info, catat nilai Azure app ID dan Azure app name. Nilai-nilai ini diperlukan saat Anda menetapkan peran ke aplikasi Azure BigQuery.
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 \ CONNECTION_ID
Ganti kode berikut:
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
.CONNECTION_ID
: ID koneksi.
Outputnya mirip dengan hal berikut ini:
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.
Output ini mencakup nilai-nilai berikut:
APP_ID
: ID aplikasi yang Anda buat.APP_NAME
: nama aplikasi yang perlu Anda tetapkan perannya, sehingga BigQuery dapat mengakses data Azure Anda.
Perhatikan nilai APP_ID
dan APP_NAME
untuk digunakan pada langkah berikutnya.
Untuk informasi selengkapnya, lihat Membuat koneksi.
Membuat akun utama layanan Azure AD
Untuk membuat akun utama layanan Azure AD, gunakan Konsol Google Cloud, Azure PowerShell, alat command line Azure, atau Microsoft Graph REST API:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, klik koneksi yang Anda buat.
Di panel Connection info, klik Login to Azure account.
Login ke akun Azure Anda.
Di halaman Permissions Requested, klik Accept.
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 }
PowerShell Azure
Untuk membuat akun utama layanan untuk APP_ID
ID aplikasi yang ditampilkan sebelumnya, pengguna harus memiliki izin Microsoft.directory/servicePrincipals/create
.
Untuk membuat akun utama layanan, jalankan perintah New-AzADServicePrincipal
:
New-AzADServicePrincipal` -ApplicationId APP_ID` -SkipAssignment
Ganti APP_ID
dengan ID aplikasi yang ditampilkan
sebelumnya.
Azure CLI
Untuk membuat akun utama layanan bagi ID aplikasi APP_ID
yang ditampilkan sebelumnya, Anda dapat menggunakan alat command line Azure. Anda harus memiliki izin Microsoft.directory/servicePrincipals/create
untuk membuat akun utama layanan.
Untuk membuat akun utama layanan, jalankan perintah az ad sp
:
export SP_ID=$(az ad sp create --id APP_ID | jq --raw-output '.objectId')
Ganti APP_ID
dengan ID aplikasi yang ditampilkan
sebelumnya.
Microsoft REST API
Untuk membuat akun utama layanan untuk APP_ID
ID aplikasi yang ditampilkan sebelumnya, Anda dapat mengirim permintaan HTTP ke Microsoft Graph REST API.
Untuk memanggil Microsoft Graph REST API, ambil token OAuth untuk aplikasi. Untuk informasi selengkapnya, lihat Mendapatkan akses tanpa pengguna.
Aplikasi yang digunakan untuk memanggil Microsoft Graph REST API harus memiliki izin aplikasi Application.ReadWrite.All
.
TENANT_ID
harus cocok dengan ID direktori Azure yang berisi akun Azure Storage.
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 direktori Azure yang berisi akun Azure Storage.CLIENT_ID
: client ID Azure.CLIENT_SECRET
: rahasia klien Azure.
Jalankan perintah berikut:
export APP_ID=APP_ID
Ganti APP_ID
dengan ID aplikasi yang ditampilkan.
Untuk membuat akun utama layanan dengan memanggil Microsoft Graph REST API, jalankan perintah berikut:
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')
Ganti kode berikut:
TOKEN
: token OAuth untuk aplikasi.APP_ID
: ID aplikasi yang ditampilkan sebelumnya.
Menetapkan peran ke aplikasi Azure AD BigQuery
Azure Portal
Anda dapat melakukan penetapan peran di Azure Portal dengan login sebagai pengguna menggunakan izin Microsoft.Authorization/roleAssignments/write
. Penetapan peran memungkinkan koneksi Azure BigQuery 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 Anda, masukkan
IAM
di kotak penelusuran.Klik Kontrol Akses (IAM).
Klik Add, lalu pilih Add role assignments.
Untuk memberikan akses hanya baca, 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 ditampilkan saat Anda membuat koneksi Azure BigQuery.
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-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 }
PowerShell Azure
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 kode berikut:
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 untuk 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 Contributor, ke akun utama layanan, jalankan perintah az role assignment create
:
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
Ganti kode berikut:
SP_ID
: ID 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 kode berikut:
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 ditetapkan ke akun utama layanan.
Berikut adalah beberapa peran yang 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 kode berikut:
ROLE_ASSIGNMENT_ID
: ID peran.SP_ID
: ID 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 Save.
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 mengetahui 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.