Private Link dan integrasi DNS dalam skala

Artikel ini menjelaskan cara mengintegrasikan Azure Private Link untuk layanan PaaS dengan zona DNS Azure Private di arsitektur hub dan jaringan spoke.

Pengantar

Banyak pelanggan membangun infrastruktur jaringan mereka di Azure menggunakan arsitektur jaringan hub and spoke, dan dalam hal ini:

  • Layanan bersama jaringan (seperti appliance virtual jaringan, gateway ExpressRoute/VPN, atau server DNS) diterapkan di jaringan virtual hub (VNet).
  • Spoke VNets menggunakan layanan bersama dengan cara peering VNet.

Dalam arsitektur hub dan jaringan spoke, pemilik aplikasi biasanya diberikan langganan Azure yang mencakup VNet (spoke) yang terhubung ke VNet hub. Dalam arsitektur ini, mereka dapat menyebarkan komputer virtual mereka dan memiliki konektivitas privat ke VNet lain atau ke jaringan lokal melalui ExpressRoute atau VPN.

Appliance virtual jaringan pusat (NVA), seperti Azure Firewall, menyediakan konektivitas keluar Internet.

Ada banyak tim aplikasi yang membangun solusi mereka dengan menggunakan kombinasi sumber daya Azure IaaS dan PaaS. Beberapa layanan Azure PaaS (seperti SQL Managed Instance) dapat disebarkan di VNet pelanggan. Akibatnya, lalu lintas tetap privat dalam jaringan Azure dan sepenuhnya dapat dirutekan dari lokal.

Tetapi beberapa layanan Azure PaaS (seperti Azure Storage atau Azure Cosmos DB) tidak dapat disebarkan di VNet pelanggan dan dapat diakses melalui titik akhir publik mereka. Dalam beberapa kasus, konfigurasi ini menyebabkan ketidakcocokan dengan kebijakan keamanan pelanggan. Lalu lintas perusahaan mungkin tidak mengizinkan penyebaran atau akses sumber daya perusahaan (seperti database SQL) melalui titik akhir publik.

Azure Private Link mendukung akses ke daftar layanan Azure melalui titik akhir privat, tetapi mengharuskan Anda mendaftarkan catatan titik akhir privat tersebut di zona DNS privat yang sesuai.

Artikel ini menjelaskan bagaimana tim aplikasi dapat menyebarkan layanan Azure PaaS dalam langganan mereka yang hanya dapat diakses melalui titik akhir privat.

Artikel ini juga menjelaskan bagaimana tim aplikasi dapat memastikan bahwa layanan secara otomatis berintegrasi dengan zona DNS privat. Mereka melakukan otomatisasi melalui Azure Private DNS, yang menghapus kebutuhan untuk membuat atau menghapus rekaman secara manual di DNS.

Zona DNS privat biasanya dihosting secara terpusat di langganan Azure yang sama tempat VNet hub disebarkan. Praktik hosting pusat ini didorong oleh resolusi nama DNS lintas tempat serta kebutuhan lain untuk resolusi DNS pusat seperti Active Directory Domain Services. Dalam kebanyakan kasus, hanya administrator jaringan dan identitas yang memiliki izin untuk mengelola catatan DNS di zona tersebut.

Tim aplikasi memiliki izin untuk membuat sumber daya Azure dalam langganan mereka sendiri. Mereka tidak memiliki izin apa pun di langganan konektivitas jaringan pusat, yang mencakup pengelolaan catatan DNS di zona DNS privat. Batasan akses ini berarti mereka tidak memiliki kemampuan untuk membuat catatan DNS yang diperlukan saat menyebarkan layanan Azure PaaS dengan titik akhir privat.

Diagram berikut memperlihatkan arsitektur tingkat tinggi yang khas untuk lingkungan perusahaan dengan resolusi DNS pusat dan tempat resolusi nama untuk sumber daya Private Link dilakukan melalui DNS Privat Azure:

A diagram of a high-level architecture with central DNS resolution and name resolution for Private Link resources.

Dari diagram sebelumnya, penting untuk menyoroti bahwa:

  • Server DNS lokal memiliki penerus kondisional yang dikonfigurasi untuk setiap zona DNS publik titik akhir privat, menunjuk ke Pemecah Masalah DNS Privat yang dihosting di VNet hub.
  • Pemecah Masalah DNS Privat yang dihosting di VNet hub menggunakan DNS yang disediakan Azure (168.63.129.16) sebagai penerus.
  • VNet hub harus ditautkan ke nama zona DNS Privat untuk layanan Azure (seperti privatelink.blob.core.windows.net, seperti yang ditunjukkan dalam diagram).
  • Semua Azure VNet menggunakan Pemecah Masalah DNS Privat yang dihosting di VNet hub
  • Karena Pemecah Masalah DNS Privat tidak berwenang untuk domain perusahaan pelanggan, karena hanya penerus, (misalnya, nama domain Direktori Aktif), harus memiliki penerusan titik akhir keluar ke domain perusahaan pelanggan, menunjuk ke Server DNS lokal (172.16.1.10 dan 172.16.1.11) atau server DNS yang disebarkan di Azure yang otoritatif untuk zona tersebut.

Meskipun diagram sebelumnya menggambarkan satu hub dan arsitektur spoke, pelanggan mungkin perlu memperluas jejak Azure mereka di beberapa wilayah untuk mengatasi persyaratan ketahanan, kedekatan, atau residensi data, beberapa skenario telah muncul di mana instans PaaS berkemampuan Private-Link yang sama harus diakses melalui beberapa Titik Akhir Privat (PE).

A diagram of a high-level architecture with central DNS resolution and name resolution for Private Link resources in multi region.

Diagram berikut menunjukkan arsitektur tingkat tinggi yang khas untuk lingkungan perusahaan dengan resolusi DNS pusat yang disebarkan di hub (satu per wilayah) di mana resolusi nama untuk sumber daya Private Link dilakukan melalui Azure Private DNS.

Disarankan untuk menyebarkan beberapa titik akhir privat regional yang terkait dengan instans PaaS, satu di setiap wilayah tempat klien berada, mengaktifkan Private Link per wilayah dan Zona DNS Privat. Saat bekerja dengan layanan PaaS dengan kemampuan DR bawaan (akun penyimpanan geo-redundan, grup failover SQL DB, dll.), beberapa Titik Akhir Privat wilayah wajib.

Skenario ini memerlukan pemeliharaan manual/pembaruan kumpulan catatan DNS Private Link di setiap wilayah karena saat ini tidak ada manajemen siklus hidup otomatis untuk ini.

Untuk kasus penggunaan lainnya, satu Titik Akhir Privat global dapat disebarkan, sehingga dapat diakses oleh semua klien dengan menambahkan perutean dari wilayah yang relevan ke satu Titik Akhir Privat dalam satu wilayah.

Untuk mengaktifkan resolusi, dan oleh karena itu konektivitas, dari jaringan lokal ke privatelink zona DNS privat dan titik akhir privat, konfigurasi DNS yang sesuai (penerus kondisional dll.) perlu disediakan dalam infrastruktur DNS.

Ada dua kondisi yang harus benar bagi tim aplikasi untuk membuat sumber daya Azure PaaS yang diperlukan dalam langganan mereka:

  • Tim jaringan pusat dan/atau platform pusat harus memastikan bahwa tim aplikasi hanya dapat menyebarkan dan mengakses layanan Azure PaaS melalui titik akhir privat.
  • Tim jaringan pusat dan/atau platform pusat harus memastikan bahwa ketika mereka membuat titik akhir privat, mereka menyiapkan cara menangani rekaman yang sesuai. Siapkan rekaman yang sesuai sehingga secara otomatis dibuat di zona DNS privat terpusat yang cocok dengan layanan yang sedang dibuat.
  • Rekaman DNS harus mengikuti siklus hidup titik akhir privat, dalam hal itu, rekaman tersebut akan dihapus secara otomatis saat titik akhir privat dihapus.

Catatan

jika FQDN dalam aturan jaringan berdasarkan resolusi DNS diperlukan untuk digunakan dalam kebijakan Azure Firewall dan Firewall (Kemampuan ini memungkinkan Anda memfilter lalu lintas keluar dengan protokol TCP/UDP apa pun -termasuk NTP, SSH, RDP, dan banyak lagi-). Anda harus mengaktifkan Proksi DNS Azure Firewall untuk menggunakan FQDN dalam aturan jaringan Anda, maka VNet spoke tersebut dipaksa untuk mengubah pengaturan DNS mereka dari server DNS kustom ke Proksi DNS Azure Firewall. Mengubah pengaturan DNS VNet spoke memerlukan boot ulang semua VM di dalam VNet tersebut.

Bagian berikut menjelaskan cara tim aplikasi mengaktifkan kondisi ini dengan menggunakan Azure Policy. Contoh menggunakan Azure Storage sebagai layanan Azure yang perlu disebarkan oleh tim aplikasi. Tetapi prinsip yang sama berlaku untuk sebagian besar layanan Azure yang mendukung Private Link.

Konfigurasi yang diperlukan oleh tim platform

Persyaratan konfigurasi tim platform termasuk membuat zona DNS privat, menyiapkan definisi kebijakan, menyebarkan kebijakan, dan menyiapkan penetapan kebijakan.

Membuat zona DNS privat

Buat zona DNS privat di langganan konektivitas pusat untuk layanan Private Link yang didukung. Untuk informasi selengkapnya, lihat Konfigurasi DNS Azure Private Endpoint.

Dalam hal ini, Akun penyimpanan dengan blob adalah contohnya. Ini diterjemahkan untuk membuat privatelink.blob.core.windows.net zona DNS privat dalam langganan konektivitas.

A screenshot that shows the private DNS zone in the connectivity subscription.

Definisi kebijakan

Selain zona DNS privat, Anda juga perlu membuat sekumpulan definisi Azure Policy kustom. Definisi ini memberlakukan penggunaan titik akhir privat dan mengotomatiskan pembuatan catatan DNS di zona DNS yang Anda buat:

  1. Deny titik akhir publik untuk kebijakan layanan PaaS.

    Kebijakan ini mencegah pengguna membuat layanan Azure PaaS dengan titik akhir publik dan memberi mereka pesan kesalahan jika mereka tidak memilih titik akhir privat saat membuat sumber daya.

    A screenshot that shows the public endpoint for all networks option selected.

    A screenshot that shows the error message that results from picking a public endpoint.

    A screenshot that shows the full error details from picking a public endpoint.

    Aturan kebijakan yang tepat mungkin berbeda antara layanan PaaS. Untuk akun Azure Storage, lihat properti networkAcls.defaultAction yang menentukan apakah permintaan dari jaringan publik diizinkan atau tidak. Dalam hal ini, atur kondisi untuk menolak pembuatan jenis sumber daya Microsoft.Storage/storageAccounts jika properti networkAcls.defaultAction bukan Deny. Definisi kebijakan berikut menunjukkan perilaku:

    {
      "mode": "All",
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Storage/storageAccounts"
            },
            {
              "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
              "notEquals": "Deny"
            }
          ]
        },
        "then": {
          "effect": "Deny"
        }
      }
    }
    
  2. Deny kemampuan untuk membuat zona DNS privat dengan kebijakan awalan privatelink .

    Gunakan arsitektur DNS terpusat dengan penerus kondisional dan zona DNS privat yang dihosting dalam langganan yang dikelola oleh tim platform. Penting untuk mencegah pemilik tim aplikasi membuat zona DNS privat Private Link mereka sendiri dan menautkan layanan ke dalam langganan mereka.

    Pastikan bahwa saat tim aplikasi Anda membuat titik akhir privat, opsi untuk Integrate with private DNS zone diatur ke No dalam portal Azure.

    A screenshot that shows the Integrate with private DNS zone option set to no in the Azure portal.

    Jika Anda memilih Yes, Azure Policy mencegah Anda membuat titik akhir privat. Dalam definisi kebijakan, ini menolak kemampuan untuk membuat jenis sumber daya Microsoft.Network/privateDnsZones jika zona memiliki awalan privatelink . Definisi kebijakan berikut menunjukkan awalan privatelink :

    {
      "description": "This policy restricts creation of private DNS zones with the `privatelink` prefix",
      "displayName": "Deny-PrivateDNSZone-PrivateLink",
      "mode": "All",
      "parameters": null,
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Network/privateDnsZones"
            },
            {
              "field": "name",
              "contains": "privatelink."
            }
          ]
        },
        "then": {
          "effect": "Deny"
        }
      }
    }
    
  3. kebijakan DeployIfNotExists untuk secara otomatis membuat catatan DNS yang diperlukan di zona DNS privat pusat.

    Contoh kebijakan berikut menunjukkan dua pendekatan untuk mengidentifikasi yang privateDNSZoneGroup dibuat pada Titik Akhir Privat.

    Kebijakan pertama bergantung pada groupId sementara kebijakan kedua menggunakan dan privateLinkServiceIdgroupID. Gunakan kebijakan kedua saat groupId akan berbenturan (bertabrakan) dengan sumber daya lain.

    Misalnya, groupIdSQL digunakan untuk Cosmos DB dan Synapse Analytics. Jika kedua jenis sumber daya disebarkan dan kebijakan pertama telah ditetapkan untuk membuat privateDNSZoneGroup pada entri Titik Akhir Privat, itu dibuat dan dipetakan ke Zona DNS Privat yang salah, baik dari Cosmos DB atau Synapse Analytics. Kemudian mungkin beralih di antara masing-masing zona karena bentrokan groupId yang dicari kebijakan pertama dalam aturan kebijakannya.

    Untuk daftar sumber daya groupIdTautan privat , lihat kolom sub-sumber daya di Apa itu titik akhir privat?.

Tip

Definisi bawaan Azure Policy terus ditambahkan, dihapus, dan diperbarui. Sangat disarankan untuk menggunakan kebijakan bawaan versus mengelola kebijakan Anda sendiri (jika tersedia). Gunakan AzPolicyAdvertizer untuk menemukan kebijakan bawaan yang ada yang memiliki nama 'xxx ... untuk menggunakan zona DNS privat'. Selain itu, Azure Landing Zones (ALZ) memiliki inisiatif kebijakan, Mengonfigurasi layanan Azure PaaS untuk menggunakan zona DNS privat, yang berisi kebijakan bawaan juga dan diperbarui secara berkala. Jika kebijakan bawaan tidak tersedia untuk situasi Anda, pertimbangkan untuk membuat masalah di azure-policy situs umpan balik Azure Governance ยท Komunitas yang mengikuti proses Proposal Kebijakan bawaan baru pada repositori Azure Policy GitHub.

Kebijakan Pertama DeployIfNotExists - Hanya cocok groupId

Kebijakan ini memicu jika Anda membuat sumber daya titik akhir privat dengan khusus groupIdlayanan . groupId adalah ID grup yang diperoleh dari sumber daya jarak jauh (layanan) yang harus terhubung dengan titik akhir privat ini. Kemudian memicu penyebaran privateDNSZoneGroup dalam titik akhir privat, yang mengaitkan titik akhir privat dengan zona DNS privat. Dalam contoh, groupId untuk blob Azure Storage adalah blob. Untuk informasi selengkapnya tentang groupId untuk layanan Azure lainnya, lihat Konfigurasi DNS Titik Akhir Privat Azure, di bawah kolom Subresource . Ketika kebijakan menemukan groupId di titik akhir privat, kebijakan menyebarkan privateDNSZoneGroup dalam titik akhir privat, dan menautkannya ke ID sumber daya zona DNS privat yang ditentukan sebagai parameter . Dalam contoh, ID sumber daya zona DNS privat adalah:

/subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.net

Sampel kode berikut menunjukkan definisi kebijakan:

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/privateEndpoints"
        },
        {
          "count": {
            "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
            "where": {
              "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
              "equals": "blob"
            }
          },
          "greaterOrEquals": 1
        }
      ]
    },
    "then": {
      "effect": "deployIfNotExists",
      "details": {
        "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
        ],           
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "parameters": {
                "privateDnsZoneId": {
                  "type": "string"
                },
                "privateEndpointName": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                }
              },
              "resources": [
                {
                  "name": "[concat(parameters('privateEndpointName'), '/deployedByPolicy')]",
                  "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                  "apiVersion": "2020-03-01",
                  "location": "[parameters('location')]",
                  "properties": {
                    "privateDnsZoneConfigs": [
                      {
                        "name": "storageBlob-privateDnsZone",
                        "properties": {
                          "privateDnsZoneId": "[parameters('privateDnsZoneId')]"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "parameters": {
              "privateDnsZoneId": {
                "value": "[parameters('privateDnsZoneId')]"
              },
              "privateEndpointName": {
                "value": "[field('name')]"
              },
              "location": {
                "value": "[field('location')]"
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "privateDnsZoneId": {
      "type": "String",
      "metadata": {
        "displayName": "privateDnsZoneId",
        "strongType": "Microsoft.Network/privateDnsZones"
      }
    }
  }
}

Kebijakan Kedua DeployIfNotExists - Pencocokan pada groupId & privateLinkServiceId

Kebijakan ini memicu jika Anda membuat sumber daya titik akhir privat dengan khusus groupId layanan dan privateLinkServiceId. groupId adalah ID grup yang diperoleh dari sumber daya jarak jauh (layanan) yang harus terhubung dengan titik akhir privat ini. privateLinkServiceId adalah ID sumber daya sumber daya jarak jauh (layanan) yang harus disambungkan oleh titik akhir privat ini. Kemudian, picu penyebaran privateDNSZoneGroup dalam titik akhir privat, yang mengaitkan titik akhir privat dengan zona DNS privat.

Dalam contoh, groupId untuk Azure Cosmos DB (SQL) adalah SQL dan privateLinkServiceId harus berisi Microsoft.DocumentDb/databaseAccounts. Untuk informasi selengkapnya tentang groupId dan privateLinkServiceId untuk layanan Azure lainnya, lihat Konfigurasi DNS Titik Akhir Privat Azure, di bawah kolom Sub sumber daya. Ketika kebijakan menemukan groupId dan privateLinkServiceId di titik akhir privat, kebijakan menyebarkan privateDNSZoneGroup dalam titik akhir privat. Dan ditautkan ke ID sumber daya zona DNS privat yang ditentukan sebagai parameter . Definisi kebijakan berikut menunjukkan ID sumber daya zona DNS privat:

/subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.documents.azure.com

Sampel kode berikut menunjukkan definisi kebijakan:

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
     "allOf": [
       {
         "field": "type",
         "equals": "Microsoft.Network/privateEndpoints"
       },
       {
         "count": {
           "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*]",
           "where": {
             "allOf": [
               {
                 "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId",
                 "contains": "Microsoft.DocumentDb/databaseAccounts"
               },
               {
                 "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
                 "equals": "[parameters('privateEndpointGroupId')]"
               }
             ]
           }
         },
         "greaterOrEquals": 1
       }
     ]
   },
    "then": {
      "effect": "[parameters('effect')]",
      "details": {
        "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
        ],           
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "parameters": {
                "privateDnsZoneId": {
                  "type": "string"
                },
                "privateEndpointName": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                }
              },
              "resources": [
                {
                  "name": "[concat(parameters('privateEndpointName'), '/deployedByPolicy')]",
                  "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                  "apiVersion": "2020-03-01",
                  "location": "[parameters('location')]",
                  "properties": {
                    "privateDnsZoneConfigs": [
                      {
                        "name": "cosmosDB-privateDnsZone",
                        "properties": {
                          "privateDnsZoneId": "[parameters('privateDnsZoneId')]"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "parameters": {
              "privateDnsZoneId": {
                "value": "[parameters('privateDnsZoneId')]"
              },
              "privateEndpointName": {
                "value": "[field('name')]"
              },
              "location": {
                "value": "[field('location')]"
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
     "privateDnsZoneId": {
       "type": "String",
       "metadata": {
         "displayName": "Private Dns Zone Id",
         "description": "The private DNS zone to deploy in a new private DNS zone group and link to the private endpoint",
         "strongType": "Microsoft.Network/privateDnsZones"
       }
     },
     "privateEndpointGroupId": {
       "type": "String",
       "metadata": {
         "displayName": "Private Endpoint Group Id",
         "description": "A group Id for the private endpoint"
       }
     },
     "effect": {
       "type": "String",
       "metadata": {
         "displayName": "Effect",
         "description": "Enable or disable the execution of the policy"
       },
       "allowedValues": [
         "DeployIfNotExists",
         "Disabled"
       ],
       "defaultValue": "DeployIfNotExists"
     }
  }
}

Penetapan kebijakan

Setelah definisi kebijakan disebarkan, tetapkan kebijakan pada cakupan yang diinginkan dalam hierarki grup manajemen Anda. Pastikan bahwa penetapan kebijakan menargetkan langganan Azure yang digunakan tim aplikasi untuk menyebarkan layanan PaaS dengan akses titik akhir privat secara eksklusif.

Penting

Selain menetapkan roleDefinition yang ditentukan dalam kebijakan, ingatlah untuk menetapkan peran Kontributor Zona DNS Privat dalam grup langganan dan sumber daya tempat zona DNS privat dihosting ke identitas terkelola yang dibuat oleh DeployIfNotExists penetapan kebijakan yang akan bertanggung jawab untuk membuat dan mengelola catatan DNS titik akhir privat di zona DNS privat. Alasannya adalah karena titik akhir privat terletak di langganan Azure pemilik aplikasi, sedangkan zona DNS privat berada di langganan yang berbeda (seperti langganan konektivitas pusat).

Setelah tim platform menyelesaikan konfigurasi:

  • Langganan Azure tim aplikasi siap bagi tim untuk kemudian membuat layanan Azure PaaS dengan akses titik akhir privat secara eksklusif.
  • Tim harus memastikan catatan DNS untuk titik akhir privat didaftarkan secara otomatis (dan dihapus setelah titik akhir privat dihapus) dari zona DNS privat yang sesuai.

Pengalaman pemilik aplikasi

Setelah tim platform menyebarkan komponen infrastruktur platform (zona dan kebijakan DNS privat), pemilik aplikasi memiliki pengalaman berikut ketika mereka mencoba menyebarkan layanan Azure PaaS ke langganan Azure. Pengalaman ini sama apakah mereka melakukan aktivitas mereka melalui portal Azure atau klien lain, seperti PowerShell atau CLI, karena kebijakan Azure mengatur langganan mereka.

  1. Buat akun penyimpanan di portal Azure. Di tab Dasar , pilih pengaturan yang Anda inginkan, berikan nama untuk akun penyimpanan Anda, dan pilih Berikutnya.

    A screenshot that shows the Basics tab and options for creating your storage account in the Azure portal.

  2. Di tab jaringan, pilih Titik akhir privat. Jika Anda memilih opsi selain Titik akhir privat, portal Azure tidak akan mengizinkan Anda membuat akun penyimpanan di bagian Tinjau + buat wizard penyebaran. Kebijakan mencegah Anda membuat layanan ini jika titik akhir publik diaktifkan.

    A screenshot that shows the Networking tab and the private endpoints option.

  3. Anda dapat membuat titik akhir privat sekarang atau setelah Anda membuat akun penyimpanan. Contoh ini menunjukkan pembuatan titik akhir privat setelah akun penyimpanan dibuat. Pilih Tinjau + buat untuk menyelesaikan langkah.

  4. Setelah Anda membuat akun penyimpanan, buat titik akhir privat melalui portal Azure.

    A screenshot that shows the private endpoints settings.

  5. Di bagian Sumber Daya , temukan akun penyimpanan yang Anda buat di langkah sebelumnya. Di bawah sub sumber daya target, pilih Blob, lalu pilih Berikutnya.

    A screenshot that shows the Resources tab for selecting the target subresource.

  6. Di bagian Konfigurasi , setelah memilih VNet dan subnet Anda, pastikan bahwa Integrasikan dengan zona DNS privat diatur ke Tidak. Jika tidak, portal Azure mencegah Anda membuat titik akhir privat. Azure Policy tidak akan memungkinkan Anda membuat zona DNS privat dengan awalan privatelink .

    A screenshot that shows the Configuration tab for setting the integrate with private DNS zone option to no.

  7. Pilih Tinjau + buat, lalu pilih Buat untuk menyebarkan titik akhir privat tersebut.

  8. Setelah beberapa menit, kebijakan memicu DeployIfNotExists . Penyebaran berikutnya dnsZoneGroup kemudian menambahkan catatan DNS yang diperlukan untuk titik akhir privat di zona DNS yang dikelola secara terpusat.

  9. Setelah Anda membuat titik akhir privat, pilih titik akhir tersebut, dan tinjau FQDN dan IP privatnya:

    A screenshot that shows where to review the private endpoint, FQDN, and private IP.

  10. Periksa log aktivitas untuk grup sumber daya tempat titik akhir privat dibuat. Atau Anda dapat memeriksa log aktivitas titik akhir privat itu sendiri. Anda akan melihat bahwa setelah beberapa menit, DeployIfNotExist tindakan kebijakan berjalan dan yang mengonfigurasi grup zona DNS pada titik akhir privat:

    A screenshot that shows the activity log for the resource group and the private endpoint.

  11. Jika tim jaringan pusat masuk ke privatelink.blob.core.windows.net zona DNS privat, mereka akan mengonfirmasi bahwa catatan DNS ada di sana untuk titik akhir privat yang Anda buat, dan nama dan alamat IP cocok dengan nilai dalam titik akhir privat.

    A screenshot that shows the private DNS zone and where to confirm that the DNS record exists.

Pada titik ini, tim aplikasi dapat menggunakan akun penyimpanan melalui titik akhir privat dari VNet apa pun di lingkungan jaringan hub dan spoke dan dari lokal. Catatan DNS telah direkam secara otomatis di zona DNS privat.

Jika pemilik aplikasi menghapus titik akhir privat, rekaman terkait di zona DNS privat akan dihapus secara otomatis.

Langkah berikutnya

Tinjau DNS untuk sumber daya lokal dan Azure. Tinjau Paket untuk akses jarak jauh komputer virtual.

Penting

Artikel ini menguraikan integrasi DNS dan Private link dalam skala besar menggunakan kebijakan DINE (DeployIfNotExists) yang ditetapkan ke Grup Manajemen. Yang berarti tidak perlu menangani integrasi DNS dalam kode saat membuat Titik Akhir Privat dengan pendekatan ini, karena ditangani oleh kebijakan. Tidak mungkin juga tim aplikasi memiliki akses RBAC ke Zona DNS Privat terpusat juga.

Di bawah ini adalah tautan bermanfaat untuk ditinjau saat membuat Titik Akhir Privat dengan Bicep dan HashiCorp Terraform.

Untuk pembuatan Titik Akhir Privat dengan Infrastructure-as-Code:

Namun, Anda masih dapat membuat titik akhir privat di alat Infrastructure-as-Code Anda, jika menggunakan pendekatan kebijakan DINE seperti yang diuraikan dalam artikel ini, Anda harus meninggalkan sisi integrasi DNS dari kode Anda dan membiarkan kebijakan DINE yang memiliki RBAC yang diperlukan ke Zona DNS Privat menangani ini sebagai gantinya.