Memahami penguncian sumber daya dalam Azure Blueprints

Pembuatan lingkungan yang konsisten dalam skala sangat bermanfaat hanya jika terdapat mekanisme untuk menjaga konsistensi itu. Artikel ini menjelaskan cara kerja penguncian sumber daya di Azure Blueprints. Untuk melihat contoh penguncian sumber daya dan penerapan tolak penetapan, lihat tutorial melindungi sumber daya baru.

Catatan

Penguncian sumber daya yang disebar oleh Azure Blueprints hanya diterapkan ke sumber daya non-ekstensi yang disebarkan oleh penetapan cetak biru. Sumber daya yang ada, seperti yang terdapat dalam grup sumber daya yang telah ada, tidak memiliki kunci yang ditambahkan ke sumber daya tersebut.

Mode dan status penguncian

Mode Penguncian berlaku untuk penetapan cetak biru dan memiliki tiga opsi: Jangan Kunci, Baca Saja, atau Jangan Hapus. Mode penguncian dikonfigurasi saat artefak disebarkan selama penetapan cetak biru. Mode penguncian yang berbeda dapat diatur dengan memperbarui penetapan cetak biru. Namun, mode penguncian tidak dapat diubah di luar Azure Blueprints.

Sumber daya yang dibuat oleh artefak dalam penetapan cetak biru memiliki empat status: Tidak Terkunci, Baca Saja, Tidak Dapat Mengedit/Menghapus, atau Tidak Dapat Menghapus. Setiap jenis artefak dapat berada dalam status Tidak Terkunci. Tabel berikut ini dapat digunakan untuk menentukan status sumber daya:

Mode Jenis Sumber Daya Artefak Provinsi Deskripsi
Jangan Kunci * Tidak terkunci Sumber daya tidak dilindungi oleh Azure Blueprints. Status ini juga digunakan untuk sumber daya yang ditambahkan ke Baca Saja atau Jangan Hapus artefak grup sumber daya dari luar penetapan cetak biru.
Baca Saja Grup sumber daya Tidak dapat Mengedit/Menghapus Grup sumber daya bersifat hanya baca dan tag pada grup sumber daya tidak dapat dimodifikasi. Sumber daya Tidak Terkunci dapat ditambahkan, dipindahkan, diubah, atau dihapus dari grup sumber daya ini.
Baca Saja Grup non-sumber daya Baca Saja Sumber daya tidak dapat diubah dengan cara apa pun. Tidak ada perubahan dan tidak dapat dihapus.
Jangan Hapus * Tidak dapat menghapus Sumber daya dapat diubah, tetapi tidak dapat dihapus. Sumber daya Tidak Terkunci dapat ditambahkan, dipindahkan, diubah, atau dihapus dari grup sumber daya ini.

Mengganti status penguncian

Biasanya pengguna dengan kontrol akses berbasis peran Azure (Azure RBAC) yang sesuai pada langganan, seperti peran 'Pemilik', dapat diizinkan mengubah atau menghapus sumber daya apa pun. Akses ini tidak terjadi jika Azure Blueprints menerapkan penguncian sebagai bagian dari penugasan yang disebarkan. Jika penugasan diatur dengan opsi Baca Saja atau Jangan Hapus, pemilik langganan pun tidak dapat melakukan tindakan yang diblokir pada sumber daya yang dilindungi.

Langkah keamanan ini melindungi konsistensi cetak biru yang ditentukan dan lingkungan yang dirancang untuk dibuat dari penghapusan atau perubahan yang tidak disengaja atau terprogram.

Menetapkan di grup manajemen

Satu-satunya opsi untuk mencegah pemilik langganan menghapus penugasan cetak biru adalah dengan menetapkan cetak biru ke grup manajemen. Dalam skenario ini, hanya Pemilik grup manajemen memiliki izin yang diperlukan untuk menghapus penugasan cetak biru.

Untuk menetapkan cetak biru ke grup manajemen, bukan langganan, panggilan REST API berubah menjadi seperti berikut:

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview

Grup manajemen yang ditentukan oleh {assignmentMG} harus berada dalam hierarki grup manajemen atau menjadi grup manajemen yang sama tempat definisi cetak biru disimpan.

Isi permintaan penugasan cetak biru terlihat seperti berikut:

{
    "identity": {
        "type": "SystemAssigned"
    },
    "location": "eastus",
    "properties": {
        "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
        "blueprintId": "/providers/Microsoft.Management/managementGroups/{blueprintMG}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
        "scope": "/subscriptions/{targetSubscriptionId}",
        "parameters": {
            "storageAccountType": {
                "value": "Standard_LRS"
            },
            "costCenter": {
                "value": "Contoso/Online/Shopping/Production"
            },
            "owners": {
                "value": [
                    "johnDoe@contoso.com",
                    "johnsteam@contoso.com"
                ]
            }
        },
        "resourceGroups": {
            "storageRG": {
                "name": "defaultRG",
                "location": "eastus"
            }
        }
    }
}

Perbedaan utama dalam isi permintaan ini dan yang ditetapkan ke langganan adalah properti properties.scope. Properti yang diperlukan ini harus diatur ke langganan tempat penetapan cetak biru berlaku. Langganan harus merupakan anak langsung dari hierarki grup manajemen tempat penetapan cetak biru disimpan.

Catatan

Cetak biru yang ditetapkan ke cakupan grup manajemen masih beroperasi sebagai penugasan cetak biru tingkat langganan. Satu-satunya perbedaan adalah tempat penetapan cetak biru disimpan untuk mencegah pemilik langganan menghapus tugas dan kunci terkait.

Menghapus status penguncian

Jika perlu memodifikasi atau menghapus sumber daya yang dilindungi oleh penugasan, maka ada dua cara untuk melakukannya.

  • Memperbarui penugasan cetak biru ke mode penguncian Jangan Kunci
  • Menghapus penugasan cetak biru

Saat penugasan dihapus, kunci yang dibuat oleh Azure Blueprints juga terhapus. Namun, sumber daya tertinggal dan perlu dihapus melalui cara normal.

Cara kerja kunci cetak biru

Tindakan penolakan penetapan tolakan Azure RBAC diterapkan ke sumber daya artefak selama penetapan cetak biru jika penetapan memilih opsi Baca Saja atau Jangan Hapus. Tindakan penolakan ditambahkan oleh identitas terkelola dari penugasan cetak biru dan hanya dapat dihapus dari sumber daya artefak oleh identitas terkelola yang sama. Tindakan keamanan ini memberlakukan mekanisme penguncian dan mencegah penghapusan kunci cetak biru di luar Azure Blueprints.

Cuplikan layar halaman Kontrol akses (IAM) dan tab Penetapan tolakan untuk grup sumber daya.

Properti penetapan tolakan dari setiap mode adalah sebagai berikut:

Mode Permissions.Actions Permissions.NotActions Principals[i].Type ExcludePrincipals[i].Id DoNotApplyToChildScopes
Baca Saja * */baca
Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (Semua Orang) penetapan cetak biru dan cetak biru yang didefinisikan pengguna dalam excludedPrincipals Grup sumber daya - true; Sumber daya - false
Jangan Hapus */hapus Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (Semua Orang) penetapan cetak biru dan cetak biru yang didefinisikan pengguna dalam excludedPrincipals Grup sumber daya - true; Sumber daya - false

Penting

Azure Resource Manager meng-cache detail penetapan peran hingga 30 menit. Akibatnya, penetapan tolakan menolak tindakan pada sumber daya cetak biru mungkin tidak segera berlaku sepenuhnya. Selama periode waktu ini, penghapusan sumber daya yang dimaksudkan untuk dilindungi oleh kunci cetak biru dapat dilakukan.

Mengecualikan utama dari penetapan tolakan

Dalam beberapa skenario desain atau keamanan, mengecualikan utama dari penetapan tolakan yang dibuat oleh penetapan cetak biru mungkin perlu dilakukan. Langkah ini dilakukan dalam REST API dengan menambahkan maksimal lima nilai ke array excludedPrincipals di properti penguncian saat membuat penetapan. Definisi penetapan berikut adalah contoh isi permintaan yang mencakup excludedPrincipals:

{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "eastus",
  "properties": {
    "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
    "blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
    "locks": {
        "mode": "AllResourcesDoNotDelete",
        "excludedPrincipals": [
            "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
            "38833b56-194d-420b-90ce-cff578296714"
        ]
    },
    "parameters": {
      "storageAccountType": {
        "value": "Standard_LRS"
      },
      "costCenter": {
        "value": "Contoso/Online/Shopping/Production"
      },
      "owners": {
        "value": [
          "johnDoe@contoso.com",
          "johnsteam@contoso.com"
        ]
      }
    },
    "resourceGroups": {
      "storageRG": {
        "name": "defaultRG",
        "location": "eastus"
      }
    }
  }
}

Mengecualikan tindakan dari penetapan tolakan

Mirip dengan mengecualikan utama pada penetapan tolakan dalam penetapan cetak biru, Anda dapat mengecualikan operasi penyedia sumber daya Azure tertentu. Dalam blok properties.locks, di tempat yang sama dengan excludedPrincipals, excludedActions dapat ditambahkan:

"locks": {
    "mode": "AllResourcesDoNotDelete",
    "excludedPrincipals": [
        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
        "38833b56-194d-420b-90ce-cff578296714"
    ],
    "excludedActions": [
        "Microsoft.ContainerRegistry/registries/push/write",
        "Microsoft.Authorization/*/read"
    ]
},

Meskipun excludedPrincipals harus eksplisit, entri excludedActions dapat memanfaatkan * untuk pencocokan kartubebas operasi penyedia sumber.

Langkah berikutnya