Mengonfigurasi akses ke Microsoft Azure Cosmos DB dari jaringan virtual (VNet)

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

Anda dapat mengonfigurasi akun Azure Cosmos DB untuk mengizinkan akses hanya dari subnet tertentu dari jaringan virtual (VNET). Aktifkan titik akhir layanan pada subnet dalam jaringan virtual untuk mengontrol akses ke Azure Cosmos DB. Lalu lintas dari subnet itu dikirimkan Azure Cosmos DB dengan identitas subnet dan Virtual Network. Setelah titik akhir layanan Azure Cosmos DB diaktifkan, Anda dapat membatasi akses ke subnet dengan menambahkannya ke akun Azure Cosmos DB Anda.

Secara default, akun Azure Cosmos DB dapat diakses dari sumber apa pun jika permintaan disertai dengan token otorisasi yang valid. Saat Anda menambahkan satu atau beberapa subnet dalam VNet, hanya permintaan yang berasal dari subnet tersebut yang akan mendapatkan respons yang berlaku. Permintaan yang berasal dari sumber lain akan menerima respons 403 (Terlarang).

Anda dapat mengonfigurasi akun Azure Cosmos DB untuk memungkinkan akses hanya dari subnet tertentu dari jaringan virtual Azure. Untuk membatasi akses ke akun Microsoft Azure Cosmos DB dengan koneksi dari subnet dalam jaringan virtual:

  1. Aktifkan titik akhir layanan untuk Azure Cosmos DB untuk mengirimkan subnet dan identitas jaringan virtual ke Azure Cosmos DB.

  2. Tambahkan aturan di akun Microsoft Azure Cosmos DB untuk menentukan subnet sebagai sumber dari mana akun dapat diakses.

Catatan

Saat titik akhir layanan untuk akun Microsoft Azure Cosmos DB Anda diaktifkan di subnet, sumber lalu lintas yang mencapai Microsoft Azure Cosmos DB beralih dari IP publik ke jaringan virtual dan subnet. Pengalihan lalu lintas berlaku untuk akun Microsoft Azure Cosmos DB apa pun yang diakses dari subnet ini. Jika akun Microsoft Azure Cosmos DB Anda memiliki firewall berbasis IP untuk mengizinkan subnet ini, permintaan dari subnet yang diaktifkan layanan tidak lagi cocok dengan aturan firewall IP, dan mereka ditolak.

Untuk mempelajari selengkapnya, lihat langkah-langkah yang diuraikan di bagian Migrasi dari aturan firewall IP ke daftar kontrol akses jaringan virtual di artikel ini.

Untuk mengonfigurasikan titik akhir layanan jaringan virtual untuk akun Microsoft Azure Cosmos DB Anda, lihat artikel berikut ini.

Mengonfigurasi titik akhir layanan menggunakan portal Microsoft Azure

Mengonfigurasi titik akhir layanan untuk jaringan virtual azure dan subnet yang sudah ada

  1. Dari panel Semua sumber daya, temukan akun Azure Cosmos DB yang ingin Anda amankan.

  2. Pilih Jaringan dari menu pengaturan

    Screenshot of the networking menu option.

  3. Pilih untuk mengizinkan dari Jaringan terpilih.

  4. Untuk memberikan akses ke subnet jaringan virtual yang ada, di bawah Jaringan virtual, pilih Tambahkan jaringan virtual Azure yang sudah ada.

  5. Pilih Langganan tempat Anda ingin menambahkan jaringan virtual Azure. Pilih Jaringan Virtual Azure dan Subnet yang ingin Anda berikan akses ke akun Microsoft Azure Cosmos DB Anda. Berikutnya, pilih Aktifkan untuk mengaktifkan jaringan yang dipilih dengan titik layanan untuk "Microsoft.AzureCosmosDB". Setelah selesai, pilih Tambahkan.

    Screenshot of the dialog to select an existing Azure Virtual Network and subnet with an Azure Cosmos DB service endpoint.

    Catatan

    Mengonfigurasi titik akhir layanan VNET mungkin memerlukan waktu hingga 15 menit untuk disebarkan dan titik akhir mungkin menunjukkan perilaku yang tidak konsisten selama periode ini.

  6. Setelah akun Microsoft Azure Cosmos DB diaktifkan untuk akses dari jaringan virtual, itu akan memungkinkan lalu lintas hanya dari subnet yang dipilih ini. Jaringan virtual dan subnet yang Anda tambahkan akan muncul seperti yang ditunjukkan pada tangkapan layar berikut:

    Screenshot of an Azure Virtual Network and subnet configured successfully in the list.

Catatan

Untuk mengaktifkan titik akhir layanan jaringan virtual, Anda memerlukan izin langganan berikut ini:

  • Langganan dengan jaringan virtual: Kontributor jaringan
  • Langganan dengan akun Microsoft Azure Cosmos DB: Kontributor akun DocumentDB
  • Jika jaringan virtual Anda dan akun Microsoft Azure Cosmos DB berada dalam langganan yang berbeda, pastikan langganan yang memiliki jaringan virtual juga memiliki Microsoft.DocumentDB penyedia sumber daya yang terdaftar. Untuk mendaftarkan penyedia sumber daya, lihat artikel penyedia dan tipe sumber daya Azure.

Berikut adalah petunjuk untuk mendaftarkan langganan dengan penyedia sumber daya.

Mengonfigurasi titik akhir layanan untuk jaringan virtual Azure baru dan subnet

  1. Dari panel Semua sumber daya, temukan akun Azure Cosmos DB yang ingin Anda amankan.

  2. Pilih Jaringan dari menu pengaturan, dan pilih untuk mengizinkan akses dari Jaringan terpilih.

  3. Untuk memberikan akses ke jaringan virtual Azure baru, di bawah Jaringan virtual, pilih Tambahkan jaringan virtual baru.

  4. Sediakan detail yang diperlukan untuk membuat jaringan virtual baru, lalu pilih Buat. Subnet akan dibuat dengan titik akhir layanan untuk "Microsoft.AzureCosmosDB" diaktifkan.

    Screenshot of the dialog to create a new Azure Virtual Network, configure a subnet, and then enable the Azure Cosmos DB service endpoint.

Jika akun Azure Cosmos DB Anda digunakan oleh layanan Azure lainnya seperti Azure AI Search, atau diakses dari Analisis aliran atau Power BI, Anda mengizinkan akses dengan memilih Terima koneksi dari dalam pusat data Azure global.

Untuk memastikan bahwa Anda memiliki akses ke metrik Microsoft Azure Cosmos DB dari portal, Anda perlu mengaktifkan opsi Izinkan akses dari portal Microsoft Azure. Untuk mempelajari selengkapnya tentang opsi ini, lihat artikel Mengonfigurasi firewall IP. Setelah Anda mengaktifkan akses, pilih Simpan untuk menyimpan pengaturan.

Menghapus jaringan virtual atau subnet

  1. Dari panel Semua sumber daya, temukan akun Azure Cosmos DB tempat Anda menetapkan titik akhir layanan.

  2. Pilih Jaringan dari menu pengaturan.

  3. Untuk menghapus jaringan virtual atau aturan subnet, pilih .... di samping jaringan virtual atau subnet, lalu pilih Hapus.

    Screenshot of the menu option to remove an associated Azure Virtual Network.

  4. Pilih Simpan untuk menerapkan perubahan Anda.

Mengonfigurasi titik akhir layanan menggunakan Microsoft Azure PowerShell

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Gunakan langkah-langkah berikut untuk mengonfigurasi titik akhir layanan ke akun Microsoft Azure Cosmos DB dengan menggunakan Microsoft Azure PowerShell:

  1. Pasang Microsoft Azure PowerShell dan masuk.

  2. Aktifkan titik akhir layanan untuk subnet jaringan virtual yang ada.

    $resourceGroupName = "<Resource group name>"
    $vnetName = "<Virtual network name>"
    $subnetName = "<Subnet name>"
    $subnetPrefix = "<Subnet address range>"
    $serviceEndpoint = "Microsoft.AzureCosmosDB"
    
    Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName | Set-AzVirtualNetworkSubnetConfig `
       -Name $subnetName `
       -AddressPrefix $subnetPrefix `
       -ServiceEndpoint $serviceEndpoint | Set-AzVirtualNetwork
    

    Catatan

    Saat Anda menggunakan PowerShell atau Azure CLI, pastikan untuk menentukan daftar lengkap filter IP dan ACL jaringan virtual dalam parameter, bukan hanya yang perlu ditambahkan.

  3. Dapatkan informasi jaringan virtual.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Menyiapkan Aturan Jaringan Virtual Azure Cosmos DB

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Perbarui properti akun Microsoft Azure Cosmos DB dengan konfigurasi titik akhir Jaringan Virtual baru:

    $accountName = "<Azure Cosmos DB account name>"
    
    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  6. Jalankan perintah berikut untuk memverifikasi bahwa akun Microsoft Azure Cosmos DB Anda diperbarui dengan titik akhir layanan jaringan virtual yang Anda konfigurasi di langkah sebelumnya:

    $account = Get-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName
    
    $account.IsVirtualNetworkFilterEnabled
    $account.VirtualNetworkRules
    

Mengonfigurasi titik akhir layanan menggunakan Azure CLI

Akun Azure Cosmos DB dapat dikonfigurasi untuk titik akhir layanan saat dibuat atau diperbarui di lain waktu jika subnet sudah dikonfigurasi untuk mereka. Titik akhir layanan juga dapat diaktifkan pada akun Azure Cosmos DB tempat subnet belum dikonfigurasi. Kemudian titik akhir layanan akan mulai berfungsi ketika subnet dikonfigurasi nanti. Fleksibilitas ini memungkinkan administrator yang tidak memiliki akses ke akun Azure Cosmos DB dan sumber daya jaringan virtual untuk membuat konfigurasi mereka independen satu sama lain.

Buat akun Azure Cosmos DB baru dan sambungkan ke subnet back end untuk jaringan virtual baru

Dalam contoh ini, jaringan virtual dan subnet dibuat dengan titik akhir layanan yang diaktifkan untuk keduanya ketika keduanya dibuat.

# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet

# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'

# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'

# Create a resource group
az group create -n $resourceGroupName -l $location

# Create a virtual network with a front-end subnet
az network vnet create \
   -n $vnetName \
   -g $resourceGroupName \
   --address-prefix 10.0.0.0/16 \
   --subnet-name $frontEnd \
   --subnet-prefix 10.0.1.0/24

# Create a back-end subnet with service endpoints enabled for Azure Cosmos DB
az network vnet subnet create \
   -n $backEnd \
   -g $resourceGroupName \
   --address-prefix 10.0.2.0/24 \
   --vnet-name $vnetName \
   --service-endpoints Microsoft.AzureCosmosDB

svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)

# Create an Azure Cosmos DB account with default values and service endpoints
az cosmosdb create \
   -n $accountName \
   -g $resourceGroupName \
   --enable-virtual-network true \
   --virtual-network-rules $svcEndpoint

Koneksi dan mengonfigurasi akun Azure Cosmos DB ke subnet back end secara independen

Sampel ini dimaksudkan untuk menunjukkan cara menyambungkan akun Azure Cosmos DB ke jaringan virtual yang sudah ada atau baru. Dalam contoh ini, subnet belum dikonfigurasi untuk titik akhir layanan. Konfigurasikan titik akhir layanan dengan menggunakan parameter --ignore-missing-vnet-service-endpoint. Konfigurasi ini memungkinkan akun Azure Cosmos DB selesai tanpa kesalahan sebelum konfigurasi ke subnet jaringan virtual selesai. Setelah konfigurasi subnet selesai, akun Azure Cosmos DB kemudian akan dapat diakses melalui subnet yang dikonfigurasi.

# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet
# that is not yet enabled for service endpoints.

# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'

# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'

# Create a resource group
az group create -n $resourceGroupName -l $location

# Create a virtual network with a front-end subnet
az network vnet create \
   -n $vnetName \
   -g $resourceGroupName \
   --address-prefix 10.0.0.0/16 \
   --subnet-name $frontEnd \
   --subnet-prefix 10.0.1.0/24

# Create a back-end subnet but without configuring service endpoints (--service-endpoints Microsoft.AzureCosmosDB)
az network vnet subnet create \
   -n $backEnd \
   -g $resourceGroupName \
   --address-prefix 10.0.2.0/24 \
   --vnet-name $vnetName

svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)

# Create an Azure Cosmos DB account with default values
az cosmosdb create -n $accountName -g $resourceGroupName

# Add the virtual network rule but ignore the missing service endpoint on the subnet
az cosmosdb network-rule add \
   -n $accountName \
   -g $resourceGroupName \
   --virtual-network $vnetName \
   --subnet svcEndpoint \
   --ignore-missing-vnet-service-endpoint true

read -p'Press any key to now configure the subnet for service endpoints'

az network vnet subnet update \
   -n $backEnd \
   -g $resourceGroupName \
   --vnet-name $vnetName \
   --service-endpoints Microsoft.AzureCosmosDB

Rentang port ketika menggunakan mode langsung

Saat Anda menggunakan titik akhir layanan dengan akun Azure Cosmos DB melalui koneksi mode langsung, Anda perlu memastikan bahwa port TCP berkisar dari 10000 hingga 20000 terbuka.

Migrasi dari aturan firewall IP ke ACL jaringan virtual

Untuk memigrasikan akun Microsoft Azure Cosmos DB agar tidak menggunakan aturan firewall IP hingga menggunakan titik akhir layanan jaringan virtual, gunakan langkah-langkah berikut.

Setelah akun Azure Cosmos DB dikonfigurasikan untuk titik akhir layanan untuk subnet, setiap permintaan dari subnet tersebut dikirimkan secara berbeda ke Azure Cosmos DB. Permintaan dikirim dengan jaringan virtual dan informasi sumber subnet alih-alih alamat IP publik sumber. Permintaan ini tidak akan lagi cocok dengan filter IP yang dikonfigurasi pada akun Microsoft Azure Cosmos DB, itulah sebabnya langkah-langkah berikut diperlukan untuk menghindari penghentian.

  1. Dapatkan informasi jaringan virtual dan subnet:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $vnetName = "myVnet"
    $subnetName = "mySubnet"
    
    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  2. Siapkan objek aturan Jaringan Virtual baru untuk akun Microsoft Azure Cosmos DB:

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Perbarui akun Microsoft Azure Cosmos DB untuk mengaktifkan akses titik akhir layanan dari subnet:

    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  4. Ulangi langkah sebelumnya untuk semua akun Microsoft Azure Cosmos DB yang diakses dari subnet.

  5. Aktifkan titik akhir layanan Azure Cosmos DB di jaringan virtual dan subnet menggunakan langkah yang ditunjukkan di bagian Aktifkan titik akhir layanan untuk subnet yang ada dari jaringan virtual artikel ini.

  6. Hapus aturan firewall IP untuk subnet dari aturan Firewall akun Microsoft Azure Cosmos DB.

Tanya jawab umum

Berikut beberapa pertanyaan umum tentang mengonfigurasi akses dari jaringan virtual:

Apakah Notebook dan Mongo/Cassandra Shell saat ini kompatibel dengan akun Microsoft Azure Virtual Network yang diaktifkan?

Saat ini integrasi shell Mongo dan shell Cassandra di Azure Cosmos DB Data Explorer, dan layanan Jupyter Notebooks, tidak didukung dengan akses VNET. Integrasi ini saat ini sedang dalam pengembangan aktif.

Dapatkah saya menentukan titik akhir layanan jaringan virtual dan kebijakan kontrol akses IP pada akun Azure Cosmos DB?

Anda dapat mengaktifkan titik akhir layanan jaringan virtual dan kebijakan kontrol akses IP (juga dikenal sebagai firewall) di akun Azure Cosmos DB Anda. Kedua fitur ini melengkapi dan secara kolektif memastikan isolasi dan keamanan akun Azure Cosmos DB Anda. Menggunakan FIREWALL IP memastikan bahwa IP statis dapat mengakses akun Anda.

Bagaimana cara membatasi akses ke subnet dalam jaringan virtual?

Ada dua langkah yang diperlukan untuk membatasi akses ke akun Azure Cosmos DB dari subnet. Pertama, Anda mengizinkan lalu lintas dari subnet untuk membawa subnet dan identitas jaringan virtualnya ke Microsoft Azure Cosmos DB. Mengubah identitas lalu lintas dilakukan dengan mengaktifkan titik akhir layanan untuk Azure Cosmos DB pada subnet. Selanjutnya adalah menambahkan aturan di akun Azure Cosmos DB yang menentukan subnet ini sebagai sumber dari akun mana yang dapat diakses.

Apakah ACL jaringan virtual dan Firewall IP akan menolak permintaan atau sambungkan?

Ketika firewall IP atau aturan akses jaringan virtual ditambahkan, hanya permintaan dari sumber yang diizinkan yang mendapatkan respons yang berlaku. Permintaan lain ditolak dengan 403 (Terlarang). Penting untuk membedakan firewall akun Azure Cosmos DB dari firewall tingkat koneksi. Sumber masih dapat terhubung ke layanan dan koneksi itu sendiri tidak ditolak.

Permintaan saya mulai diblokir ketika saya mengaktifkan titik akhir layanan ke Microsoft Azure Cosmos DB pada subnet. Apa yang terjadi?

Setelah titik akhir layanan untuk Microsoft Azure Cosmos DB diaktifkan di subnet, sumber lalu lintas yang mencapai akun beralih dari IP publik ke jaringan virtual dan subnet. Jika akun Azure Cosmos DB Anda hanya memiliki firewall berbasis IP, lalu lintas dari subnet yang diaktifkan layanan tidak akan lagi cocok dengan aturan firewall IP, dan oleh karena itu ditolak. Ikuti langkah-langkah untuk bermigrasi dengan mulus dari firewall berbasis IP ke kontrol akses berbasis jaringan virtual.

Apakah izin kontrol akses berbasis peran Azure tambahan diperlukan untuk akun Azure Cosmos DB dengan titik akhir layanan VNET?

Setelah Anda menambahkan titik akhir layanan VNet ke akun Azure Cosmos DB, untuk membuat perubahan apa pun pada pengaturan akun, Anda memerlukan akses ke Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action tindakan untuk semua VNET yang dikonfigurasi di akun Azure Cosmos DB Anda. Izin ini diperlukan karena proses otorisasi memvalidasi akses ke sumber daya (seperti database dan sumber daya jaringan virtual) sebelum mengevaluasi properti apa pun.

Otorisasi memvalidasi izin untuk tindakan sumber daya VNet meskipun pengguna tidak menentukan ACL VNET menggunakan Azure CLI. Saat ini, sarana kontrol akun Azure Cosmos DB mendukung pengaturan status lengkap akun Azure Cosmos DB. Salah satu parameter panggilan sarana kontrol adalah virtualNetworkRules. Jika parameter ini tidak ditentukan, Azure CLI membuat panggilan dapatkan database untuk mengambil virtualNetworkRules dan menggunakan nilai tersebut dalam panggilan perbarui.

Apakah jaringan virtual yang di-peering juga memiliki akses ke akun Azure Cosmos DB?

Hanya jaringan virtual dan subnet yang ditambahkan ke akun Azure Cosmos DB yang memiliki akses. VNet yang diserekan milik mereka tidak dapat mengakses akun sampai subnet dalam jaringan virtual diserekan ditambahkan ke akun.

Berapa jumlah maksimum subnet yang diizinkan untuk mengakses satu akun Azure Cosmos DB?

Saat ini, Anda dapat memiliki paling banyak 256 subnet yang diizinkan untuk akun Azure Cosmos DB.

Dapatkah saya mengaktifkan akses dari VPN dan Rute Ekspres?

Untuk mengakses akun Azure Cosmos DB melalui rute Ekspres dari lokal, Anda harus mengaktifkan peering Microsoft. Setelah Anda menempatkan firewall IP atau aturan akses jaringan virtual, Anda dapat menambahkan alamat IP publik yang digunakan untuk peering Microsoft di firewall IP akun Azure Cosmos DB Anda untuk memungkinkan akses layanan lokal ke akun Azure Cosmos DB.

Apakah saya perlu memperbarui aturan Kelompok keamanan Jaringan (NSG)?

Aturan NSG digunakan untuk membatasi konektivitas ke dan dari subnet dengan jaringan virtual. Saat Anda menambahkan titik akhir layanan untuk Azure Cosmos DB ke subnet, Anda tidak perlu membuka konektivitas keluar di NSG untuk akun Azure Cosmos DB Anda.

Apakah titik akhir layanan tersedia untuk semua VNet?

Tidak, hanya jaringan virtual Azure Resource Manager yang dapat mengaktifkan titik akhir layanan. Jaringan virtual klasik tidak mendukung titik akhir layanan.

Kapan saya harus menerima koneksi dari dalam pusat data global Azure untuk akun Azure Cosmos DB?

Pengaturan ini hanya boleh diaktifkan jika Anda ingin akun Azure Cosmos DB Anda dapat diakses ke layanan Azure apa pun di wilayah Azure mana pun. Layanan pihak pertama Azure lainnya seperti Azure Data Factory dan Azure AI Search menyediakan dokumentasi tentang cara mengamankan akses ke sumber data termasuk akun Azure Cosmos DB, misalnya:

Langkah berikutnya

  • Guna mengonfigurasi firewall untuk Microsoft Azure Cosmos DB, lihat artikel dukungan Firewall.