Membatasi akses keluar dari kluster Azure Data Explorer Anda

Membatasi akses keluar kluster Anda penting untuk mengurangi risiko seperti penyelundupan data. Aktor jahat berpotensi membuat tabel eksternal ke akun penyimpanan dan mengekstrak data dalam jumlah besar. Anda dapat mengontrol akses keluar di tingkat kluster dengan menentukan kebijakan callout. Mengelola kebijakan callout memungkinkan Anda mengizinkan akses keluar ke SQL, penyimpanan, atau titik akhir tertentu.

Dalam artikel ini, Anda akan mempelajari cara ekstensi untuk kebijakan callout yang memungkinkan Anda membatasi panggilan lebih lanjut dari kluster Anda.

Jenis kebijakan callout

Kebijakan callout dapat dibagi, sebagai berikut:

  • Kebijakan callout yang tidak dapat diubah: Ini adalah kebijakan standar kluster. Mereka telah dikonfigurasi sebelumnya dan tidak dapat dimodifikasi.
  • Kebijakan callout kluster: Ini adalah kebijakan yang dapat Anda ubah menggunakan perintah kebijakan callout.

Prasyarat

Menjalankan perintah kebijakan callout

  1. Masuk ke antarmuka pengguna web Azure Data Explorer.

  2. Di menu sebelah kiri, pilih Kueri, lalu sambungkan ke kluster Anda.

  3. Di jendela kueri, jalankan kueri berikut untuk memeriksa daftar kebijakan callout yang tidak dapat diubah pada kluster Anda:

    .show cluster policy callout
    

    Cuplikan layar halaman kueri terbatas, memperlihatkan kebijakan callout yang tidak dapat diubah.

Berikut ini menunjukkan contoh kebijakan callout yang tidak dapat diubah. Perhatikan bahwa dalam daftar ada beberapa aturan default yang memungkinkan melakukan panggilan ke layanan lain, seperti data eksternal.

[
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"[a-z0-9]{3,22}\\.(\\w+\\.)?kusto(mfa)?\\.windows\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"//[a-z0-9]{3,22}\\.[a-z0-9-]{1,50}\\.(kusto\\.azuresynapse|kustodev\\.azuresynapse-dogfood)\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"^https://([A-Za-z0-9]+\\.)?(ade|adx)\\.(int\\.)?(applicationinsights|loganalytics|monitor)\\.(io|azure(\\.com|\\.us|\\.cn))/",
      "CanCall":true
   },
   {
      "CalloutType":"sql",
      "CalloutUriRegex":"[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9]?\\.database\\.windows\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"sql",
      "CalloutUriRegex":"[a-z0-9-]{0,61}?(-ondemand)?\\.sql\\.azuresynapse(-dogfood)?\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"external_data",
      "CalloutUriRegex":".*",
      "CanCall":true
   },
   {
      "CalloutType":"azure_digital_twins",
      "CalloutUriRegex":"[A-Za-z0-9\\-]{3,63}\\.api\\.[A-Za-z0-9]+\\.digitaltwins\\.azure\\.net/?$",
      "CanCall":true
   }
]

Mengosongkan daftar kebijakan callout yang tidak dapat diubah

Untuk membatasi akses keluar ke dari kluster, Anda harus mengosongkan daftar kebijakan callout yang tidak dapat diubah. Anda dapat melakukan ini dengan menjalankan perintah berikut menggunakan Azure CLI atau alat lain dengan memanggil AZURE Data Explorer API.

  1. Picu penyebaran ARM menggunakan Azure CLI dengan templat ARM yang diperbarui:

    Contoh file templat ARM bernama "template.json" dengan properti restrictOutboundNetworkAccess diatur ke Diaktifkan:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      ...
      "resources": [
          {
              "type": "Microsoft.Kusto/Clusters",
              "apiVersion": "2021-02-01",
              ...
              "properties": {
                  ...
                  "restrictOutboundNetworkAccess": "Enabled",
                  ...
              }
          }
          ...
      ]
    }
    

    Contoh panggilan menggunakan Azure CLI yang mengacu pada templat di atas.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name RestrictOutboundAccess   --resource-group <resource group>   --template-file ./template.json
    

    Memperbarui restrictOutboundNetworkAccess properti kluster menghapus semua kebijakan yang tidak dapat diubah pada kluster Anda. Ini mencegah memulai panggilan ke layanan lain seperti yang ditunjukkan dalam contoh berikut.

    Cuplikan layar halaman kueri terbatas, memperlihatkan kesalahan kebijakan callout yang tidak dapat diubah.

  2. Jalankan perintah berikut lagi dan verifikasi bahwa perintah tersebut mengembalikan daftar kosong:

    .show cluster policy callout 
    | where EntityType == "Cluster immutable policy"
    

    Cuplikan layar halaman kueri terbatas, memperlihatkan tidak ada kebijakan callout yang tidak dapat diubah.

Menambahkan FQDN ke callout dalam kondisi terbatas

Jika Anda ingin mengizinkan akses keluar ke FQDN tertentu, Anda dapat menambahkannya ke allowedFqdnList daftar untuk kluster Anda. Anda dapat melakukan ini dengan menjalankan dengan membuat perubahan pada templat ARM kluster Azure Data Explorer.

  1. Picu penyebaran ARM menggunakan Azure CLI dengan templat ARM yang diperbarui:

    Contoh file templat ARM bernama "template.json" dengan properti allowedFqdnList diatur ke ["some.sql.azuresynapse.net", "..."]:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      ...
      "resources": [
          {
              "type": "Microsoft.Kusto/Clusters",
              "apiVersion": "2021-02-01",
              ...
              "properties": {
                  ...
                  "restrictOutboundNetworkAccess": "Enabled",
                  "allowedFqdnList": ["some.sql.azuresynapse.net", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Contoh panggilan menggunakan Azure CLI yang mengacu pada templat di atas.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. Dengan menambahkan FQDN ke daftar yang diizinkan, Anda akan dapat melakukan panggilan ke FQDN yang ditentukan. Anda dapat memeriksa hasil penyebaran dengan menjalankan perintah berikut:

    .show cluster policy callout 
    | project Policy=parse_json(Policy)
    | mv-expand Policy
    | where Policy.CalloutType == "sql" 
    

    Cuplikan layar halaman kueri terbatas, memperlihatkan kebijakan callout yang dikonfigurasi.

    Catatan

    Ada serangkaian kebijakan default yang ditetapkan untuk Azure Data Explorer untuk berkomunikasi dengan lapisan penyimpanan internalnya. Mereka tidak mengekspos risiko untuk penyelundupan data.