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

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:

  1. Buat aplikasi di tenant Azure.
  2. Buat koneksi BigQuery Azure.
  3. Tambahkan kredensial gabungan.
  4. 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

  1. Di portal Azure, buka App registrations, lalu klik New registration.

  2. Untuk Name, masukkan nama aplikasi Anda.

  3. Untuk Supported account types, pilih Accounts in this organizational directory only.

  4. Untuk mendaftarkan permohonan baru, klik Register.

  5. Catat Application (client) ID. Anda harus memberikan ID ini saat membuat koneksi.

    Portal Azure untuk membuat aplikasi

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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di menu Add data, pilih External data source.

  3. 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.

  4. Klik Buat koneksi.

  5. Klik Go to connection.

  6. 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 region azure-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

  1. Di portal Azure, buka App registrations, lalu klik aplikasi Anda.

  2. Pilih Certificates & secrets > Federated credentials > Add credentials. Kemudian, lakukan hal berikut:

    1. Dari daftar Federated credential scenario, pilih Other issuer.

    2. Untuk Issuer, masukkan https://accounts.google.com.

    3. Untuk Subject identifier, masukkan BigQuery Google identity dari akun layanan Google Cloud yang Anda dapatkan saat membuat koneksi.

    4. Untuk Name, masukkan nama untuk kredensial.

    5. 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:

  1. Dari akun Azure Storage Anda, masukkan IAM di kotak penelusuran.

  2. Klik Kontrol Akses (IAM).

  3. Klik Add, lalu pilih Add role assignments.

  4. Untuk memberikan akses hanya baca, pilih peran Storage Blob Data Reader. Untuk memberikan akses baca-tulis, pilih peran Storage Blob Data Contributor.

  5. Tetapkan Assign access to ke User, group, or service principal.

  6. Klik Select members.

  7. Di kolom Select, masukkan nama aplikasi Azure yang Anda berikan saat membuat aplikasi di tenant Azure.

  8. 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:

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:

  1. Buat koneksi BigQuery Azure.
  2. Buat akun utama layanan Azure AD.
  3. 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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di menu Add data, pilih External data source.

  3. 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).

  4. Klik Buat koneksi.

  5. Klik Go to connection.

  6. 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 region azure-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

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, klik koneksi yang Anda buat.

  3. Di panel Connection info, klik Login to Azure account.

  4. Login ke akun Azure Anda.

  5. 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:

  1. Dari akun Azure Storage Anda, masukkan IAM di kotak penelusuran.

  2. Klik Kontrol Akses (IAM).

  3. Klik Add, lalu pilih Add role assignments.

  4. Untuk memberikan akses hanya baca, pilih peran Storage Blob Data Reader. Untuk memberikan akses baca-tulis, pilih peran Storage Blob Data Contributor.

  5. Tetapkan Assign access to ke User, group, or service principal.

  6. Klik Select members.

  7. Di kolom Select, masukkan nama aplikasi Azure yang ditampilkan saat Anda membuat koneksi Azure BigQuery.

  8. 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:

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

  1. Buka halaman BigQuery.

    Buka BigQuery

    Koneksi dicantumkan dalam project Anda, dalam grup yang disebut Koneksi eksternal.

  2. Di panel Penjelajah, klik nama project Anda > Koneksi eksternal > koneksi.

  3. Di panel Detail, klik Bagikan untuk membagikan koneksi. Kemudian, lakukan hal berikut:

    1. Dalam dialog Izin koneksi, bagikan koneksi dengan akun utama lain dengan menambahkan atau mengedit akun utama.

    2. 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.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

Langkah selanjutnya