Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Zona dan rekaman DNS privat adalah sumber daya penting. Menghapus zona DNS atau satu data DNS bisa mengakibatkan pemadaman layanan. Penting bahwa zona dan data DNS dilindungi dari perubahan yang tidak sah atau tidak disengaja.
Artikel ini menjelaskan bagaimana Azure DNS memungkinkan Anda melindungi zona dan rekaman DNS privat Anda dari perubahan tersebut. Kami menerapkan dua fitur sekuritas canggih yang disediakan oleh Azure Resource Manager: Kontrol akses berbasis peran Azure (Azure RBAC) dan kunci sumber daya.
Kontrol akses berbasis peran Azure
Kontrol akses berbasis peran Azure (Azure RBAC) memungkinkan manajemen akses terperinci untuk pengguna, grup, dan sumber daya Azure. Dengan Azure RBAC, Anda dapat memberikan tingkat akses yang dibutuhkan pengguna. Untuk informasi selengkapnya tentang bagaimana Azure RBAC membantu Anda mengelola akses, lihat Apa itu kontrol akses berbasis peran Azure (Azure RBAC).
Kontributor Zona DNS Privat
Peran Kontributor Zona DNS Privat adalah peran bawaan untuk mengelola sumber daya DNS privat. Peran ini diterapkan ke pengguna atau grup memungkinkan mereka mengelola sumber daya DNS privat.
Grup sumber daya myPrivateDNS berisi lima zona untuk Contoso Corporation. Memberikan izin sebagai Kontributor Zona DNS Privat kepada administrator DNS pada grup sumber daya tersebut memungkinkan kontrol penuh atas zona DNS tersebut. Ini menghindari pemberian izin yang tidak perlu. Administrator DNS tidak dapat membuat atau menghentikan komputer virtual.
Cara paling sederhana untuk menetapkan izin Azure RBAC adalah melalui portal Microsoft Azure.
Buka Kontrol akses (IAM) untuk grup sumber daya, pilih Tambahkan, lalu pilih peran Kontributor Zona DNS Privat . Pilih pengguna atau grup yang diperlukan untuk memberikan izin.
Izin juga dapat diberikan menggunakan Azure PowerShell:
# Grant 'Private DNS Zone Contributor' permissions to all zones in a resource group
$rsg = "<resource group name>"
$usr = "<user email address>"
$rol = "Private DNS Zone Contributor"
New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -ResourceGroupName $rsg
Perintah yang setara juga tersedia melalui Azure CLI:
# Grant 'Private DNS Zone Contributor' permissions to all zones in a resource group
az role assignment create \
--assignee "<user email address>" \
--role "Private DNS Zone Contributor" \
--resource-group "<resource group name>"
Azure RBAC tingkat Zona Privat
Aturan Azure RBAC dapat diterapkan ke langganan, grup sumber daya, atau ke sumber daya individual. Sumber daya tersebut bisa menjadi zona DNS individual, atau kumpulan catatan individual.
Misalnya, grup sumber daya myPrivateDNS berisi zona private.contoso.com dan subzon customers.private.contoso.com. Catatan CNAME dibuat untuk setiap akun pelanggan. Akun administrator yang digunakan untuk mengelola rekaman CNAME diberi izin untuk membuat rekaman di zona customers.private.contoso.com . Akun hanya dapat mengelola customers.private.contoso.com .
Izin Azure RBAC tingkat zona dapat diberikan melalui portal Microsoft Azure. Buka Kontrol akses (IAM) untuk zona tersebut, pilih Tambahkan, lalu pilih peran Kontributor Zona DNS Privat . Pilih pengguna atau grup yang diperlukan untuk memberikan izin.
Izin juga dapat diberikan menggunakan Azure PowerShell:
# Grant 'Private DNS Zone Contributor' permissions to a specific zone
$rsg = "<resource group name>"
$usr = "<user email address>"
$zon = "<zone name>"
$rol = "Private DNS Zone Contributor"
$rsc = "Microsoft.Network/privateDnsZones"
New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -ResourceGroupName $rsg -ResourceName $zon -ResourceType $rsc
Perintah yang setara juga tersedia melalui Azure CLI:
# Grant 'Private DNS Zone Contributor' permissions to a specific zone
az role assignment create \
--assignee <user email address> \
--role "Private DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/"
Tingkat kumpulan catatan Azure RBAC
Izin diterapkan di tingkat set rekaman. Pengguna diberikan kontrol ke entri yang mereka butuhkan dan tidak dapat membuat perubahan lain.
Izin Azure RBAC tingkat kumpulan catatan dapat dikonfigurasi melalui portal Microsoft Azure, menggunakan tombol Kontrol Akses (IAM) di halaman kumpulan catatan:
Izin Azure RBAC tingkat kumpulan catatan juga dapat diberikan menggunakan Azure PowerShell:
# Grant permissions to a specific record set
$usr = "<user email address>"
$rol = "Private DNS Zone Contributor"
$sco =
"/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/<record type>/<record name>"
New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -Scope $sco
Perintah yang setara juga tersedia melalui Azure CLI:
# Grant permissions to a specific record set
az role assignment create \
--assignee "<user email address>" \
--role "Private DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/<record type>/<record name>"
Peran khusus
Peran Kontributor Zona DNS Privat bawaan memungkinkan kontrol penuh atas sumber daya DNS. Anda dapat membuat peran Azure kustom Anda sendiri untuk memberikan kontrol yang lebih halus.
Akun yang digunakan untuk mengelola CNAMEs diberikan izin untuk mengelola data CNAME saja. Akun tidak dapat mengubah rekaman jenis lain. Akun tidak dapat melakukan operasi tingkat zona seperti penghapusan zona.
Contoh berikut menunjukkan definisi peran kustom hanya untuk mengelola catatan CNAME:
{
"Name": "Private DNS CNAME Contributor",
"Id": "",
"IsCustom": true,
"Description": "Can manage DNS CNAME records only.",
"Actions": [
"Microsoft.Network/privateDnsZones/CNAME/*",
"Microsoft.Network/privateDNSZones/read",
"Microsoft.Authorization/*/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Support/*"
],
"NotActions": [
],
"AssignableScopes": [
"/subscriptions/<subscription id>"
]
}
Properti Tindakan menentukan izin khusus DNS berikut ini:
-
Microsoft.Network/privateDnsZones/CNAME/*
memberikan kontrol penuh atas rekaman CNAME -
Microsoft.Network/privateDNSZones/read
memberikan izin untuk membaca zona privat DNS, tetapi tidak untuk mengubahnya, memungkinkan Anda melihat zona tempat CNAME dibuat.
Nota
Menggunakan peran kustom Azure untuk mencegah penghapusan kumpulan catatan sambil tetap memungkinkannya diperbarui bukanlah kontrol yang efektif. Ini mencegah kumpulan catatan dihapus, tetapi tidak mencegahnya dimodifikasi. Modifikasi yang diizinkan termasuk menambahkan dan menghapus rekaman dari kumpulan catatan, termasuk menghapus semua rekaman untuk meninggalkan kumpulan catatan kosong. Ini memiliki efek yang sama seperti menghapus kumpulan catatan dari titik pandang resolusi DNS.
Definisi peran kustom saat ini tidak dapat ditentukan melalui portal Microsoft Azure. Peran kustom berdasarkan definisi peran ini dapat dibuat menggunakan Azure PowerShell:
# Create new role definition based on input file
New-AzRoleDefinition -InputFile <file path>
Ini juga dapat dibuat melalui Azure CLI:
# Create new role definition based on input file
az role create -inputfile <file path>
Peran kemudian dapat ditetapkan dengan cara yang sama seperti peran bawaan, seperti yang dijelaskan sebelumnya dalam artikel ini.
Untuk informasi selengkapnya tentang cara membuat, mengelola, dan menetapkan peran kustom, lihat Peran kustom Azure.
Kunci sumber daya
Azure Resource Manager mendukung jenis kontrol keamanan lain, kemampuan untuk mengunci sumber daya. Penguncian sumber daya diterapkan pada sumber daya dan efektif untuk semua pengguna dan peran. Untuk informasi selengkapnya, lihat Mengunci sumber daya dengan Azure Resource Manager.
Ada dua jenis kunci sumber daya: CanNotDelete dan ReadOnly. Jenis kunci ini dapat diterapkan baik ke zona DNS Privat, atau ke rangkaian data individual. Bagian berikut menjelaskan beberapa skenario umum, dan cara mendukungnya menggunakan kunci sumber daya.
Melindungi dari semua perubahan
Untuk mencegah perubahan dilakukan, terapkan kunci ReadOnly ke zona tersebut. Kunci ini mencegah kumpulan catatan baru dibuat, dan kumpulan catatan yang sudah ada dimodifikasi atau dihapus.
Kunci sumber daya tingkat zona dapat dibuat melalui portal Microsoft Azure. Dari halaman Zona DNS, pilih Kunci, lalu pilih +Tambahkan:
Kunci sumber daya tingkat zona juga dapat dibuat melalui Azure PowerShell:
# Lock a DNS zone
$lvl = "<lock level>"
$lnm = "<lock name>"
$rsc = "<zone name>"
$rty = "Microsoft.Network/privateDnsZones"
$rsg = "<resource group name>"
New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rsc -ResourceType $rty -ResourceGroupName $rsg
Perintah yang setara juga tersedia melalui Azure CLI:
# Lock a DNS zone
az lock create \
--lock-type "<lock level>" \
--name "<lock name>" \
--resource-name "<zone name>" \
--namespace "Microsoft.Network" \
--resource-type "privateDnsZones" \
--resource-group "<resource group name>"
Melindungi catatan individu
Untuk mencegah kumpulan catatan DNS yang ada terhadap modifikasi, terapkan kunci ReadOnly ke kumpulan catatan.
Nota
Menerapkan kunci CanNotDelete ke kumpulan catatan bukanlah kontrol yang efektif. Ini mencegah kumpulan catatan dihapus, tetapi tidak mencegahnya dimodifikasi. Modifikasi yang diizinkan termasuk menambahkan dan menghapus rekaman dari kumpulan catatan, termasuk menghapus semua rekaman untuk meninggalkan kumpulan catatan kosong. Ini memiliki efek yang sama seperti menghapus kumpulan catatan dari titik pandang resolusi DNS.
Penguncian sumber daya pada tingkat kumpulan catatan saat ini hanya dapat dikonfigurasi menggunakan Azure PowerShell. Mereka tidak didukung di portal Microsoft Azure atau Azure CLI.
Azure PowerShell
# Lock a DNS record set
$lvl = "<lock level>"
$lnm = "<lock name>"
$rnm = "<zone name>/<record set name>"
$rty = "Microsoft.Network/privateDnsZones/<record type>"
$rsg = "<resource group name>"
New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rnm -ResourceType $rty -ResourceGroupName $rsg
Melindungi dari penghapusan zona
Saat zona dihapus di Azure DNS, semua kumpulan catatan di zona akan dihapus. Tindakan ini tidak dapat dibatalkan. Secara tidak sengaja menghapus zona kritis berpotensi memiliki dampak bisnis yang signifikan. Penting untuk melindungi dari penghapusan zona yang tidak disengaja.
Menerapkan kunci CanNotDelete ke zona mencegah zona dihapus. Kunci diwarisi oleh sumber daya anak. Kunci mencegah kumpulan catatan apa pun di zona tersebut dihapus. Seperti yang dijelaskan dalam catatan di atas, itu tidak efektif karena catatan masih dapat dihapus dari kumpulan catatan yang ada.
Sebagai alternatif, terapkan kunci CanNotDelete ke kumpulan catatan di zona tersebut, seperti kumpulan catatan SOA. Zona tidak dihapus tanpa juga menghapus kumpulan catatan. Kunci ini melindungi dari penghapusan zona, sambil tetap memungkinkan kumpulan catatan dalam zona dimodifikasi secara bebas. Jika upaya dilakukan untuk menghapus zona, Azure Resource Manager mendeteksi penghapusan ini. Penghapusan juga akan menghapus kumpulan catatan SOA, Azure Resource Manager memblokir panggilan karena SOA dikunci. Tidak ada kumpulan catatan yang dihapus.
Perintah PowerShell berikut membuat kunci CanNotDelete terhadap catatan SOA dari zona tertentu:
# Protect against zone delete with CanNotDelete lock on the record set
$lvl = "CanNotDelete"
$lnm = "<lock name>"
$rnm = "<zone name>/@"
$rty = "Microsoft.Network/privateDnsZones/SOA"
$rsg = "<resource group name>"
New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rnm -ResourceType $rty -ResourceGroupName $rsg
Opsi lain untuk mencegah penghapusan zona yang tidak disengaja adalah dengan menggunakan peran kustom. Peran ini memastikan akun yang digunakan untuk mengelola zona Anda tidak memiliki izin penghapusan zona.
Saat Anda perlu menghapus zona, Anda dapat menerapkan penghapusan dua langkah:
- Pertama, berikan izin penghapusan zona
- Kedua, berikan izin untuk menghapus zona.
Peran kustom berfungsi untuk semua zona yang diakses oleh akun tersebut. Akun dengan izin penghapusan zona, seperti pemilik langganan, masih dapat menghapus zona secara tidak sengaja.
Dimungkinkan untuk menggunakan kedua pendekatan - kunci sumber daya dan peran kustom - pada saat yang sama, sebagai pendekatan pertahanan mendalam untuk perlindungan zona DNS.
Langkah berikutnya
- Untuk informasi selengkapnya tentang bekerja dengan Azure RBAC, lihat Apa itu kontrol akses berbasis peran Azure (Azure RBAC).
- Untuk informasi selengkapnya tentang bekerja dengan kunci sumber daya, lihat Mengunci sumber daya dengan Azure Resource Manager.