Enkripsi aset aman di Azure Automation

Azure Automation mengamankan aset seperti kredensial, sertifikat, koneksi, dan variabel terenkripsi menggunakan berbagai tingkat enkripsi. Ini membantu meningkatkan keamanan aset ini. Selain itu, untuk memastikan keamanan dan privasi yang lebih besar untuk kode pelanggan, runbook, dan skrip DSC juga dienkripsi. Enkripsi di Azure Automation mengikuti dua model, tergantung pada kunci tingkat atas yang digunakan untuk enkripsi:

  • Menggunakan kunci yang dikelola Microsoft
  • Menggunakan kunci yang Anda kelola

Kunci yang dikelola Microsoft

Secara default, akun Azure Automation Anda menggunakan kunci yang dikelola Microsoft.

Aset ini dienkripsi dan disimpan di Azure Automation menggunakan kunci unik (kunci Enkripsi Data) yang dihasilkan untuk setiap akun Automation. Kunci ini sendiri dienkripsi dan disimpan di Azure Automation menggunakan kunci unik lain yang dihasilkan untuk setiap akun yang bernama Kunci Enkripsi Akun (AEK). Kunci enkripsi akun ini dienkripsi dan disimpan di Azure Automation menggunakan Kunci yang dikelola Microsoft.

Kunci yang Anda kelola dengan Key Vault

Anda dapat mengelola enkripsi aset aman untuk akun Automation dengan kunci Anda sendiri. Saat Anda menentukan kunci yang dikelola pelanggan di tingkat akun Automation, kunci tersebut digunakan untuk melindungi dan mengontrol akses ke kunci enkripsi akun untuk akun Automation. Ini secara bergiliran digunakan untuk mengenkripsi dan mendekripsi semua aset aman. Kunci yang dikelola pelanggan menawarkan fleksibilitas yang lebih luas untuk membuat, memutar, menonaktifkan, dan mencabut kontrol akses. Anda juga dapat mengaudit kunci enkripsi yang digunakan untuk melindungi data Anda.

Anda harus menggunakan Azure Key Vault untuk menyimpan kunci yang dikelola pelanggan Anda. Anda dapat membuat kunci Anda sendiri dan menyimpannya di brankas kunci, atau Anda dapat menggunakan Azure Key Vault API untuk membuat kunci.

Mengaktifkan Azure Firewall di Azure Key Vault memblokir akses dari runbook Azure Automation untuk layanan tersebut. Akses akan diblokir bahkan ketika pengecualian firewall diaktifkan untuk mengizinkan layanan Microsoft tepercaya, karena Automation bukan bagian dari daftar layanan tepercaya. Dengan firewall yang diaktifkan, akses hanya dapat dilakukan dengan menggunakan Hybrid Runbook Worker dan titik akhir layanan jaringan virtual. Namun, saat Anda mengaktifkan tautan Privat untuk Key Vault, Azure Automation kehilangan akses ke Key Vault. Bahkan jika Anda mengaktifkan tautan Privat untuk Hybrid Runbook Worker, itu akan memungkinkan akses hanya ke layanan Azure Automation dan bukan ke Key Vault.

Untuk informasi selengkapnya tentang Azure Key Vault, lihat Apa itu Azure Key Vault?

Penggunaan kunci yang dikelola pelanggan untuk akun Azure Automation

Saat Anda menggunakan enkripsi dengan kunci yang dikelola pelanggan untuk akun Automation, Azure Automation membungkus kunci enkripsi akun dengan kunci yang dikelola pelanggan di brankas kunci terkait. Mengaktifkan kunci yang dikelola pelanggan tidak memengaruhi performa, dan akun dienkripsi dengan kunci baru segera, tanpa penundaan.

Akun Automation baru selalu dienkripsi menggunakan kunci yang dikelola Microsoft. Tidak memungkinkan untuk mengaktifkan kunci yang dikelola pelanggan pada saat akun dibuat. Kunci yang dikelola pelanggan disimpan di Azure Key Vault, dan brankas kunci harus disediakan dengan kebijakan akses yang memberikan izin kunci ke identitas terkelola yang dikaitkan dengan akun Automation. Identitas terkelola hanya tersedia setelah akun otomatisasi dibuat.

Saat Anda memodifikasi kunci yang digunakan untuk enkripsi aset aman Azure Automation, dengan mengaktifkan atau menonaktifkan kunci yang dikelola pelanggan, memperbarui versi kunci, atau menentukan kunci yang berbeda, enkripsi kunci enkripsi akun berubah tetapi aset aman di akun Azure Automation Anda tidak perlu dienkripsi ulang.

Catatan

Untuk mengaktifkan kunci yang dikelola pelanggan, Anda perlu melakukan panggilan REST API Azure Automation menggunakan api versi 2020-01-13-preview.

Prasyarat untuk menggunakan kunci yang dikelola pelanggan di Azure Automation

Sebelum mengaktifkan kunci yang dikelola pelanggan untuk akun Automation, Anda harus memastikan prasyarat berikut terpenuhi:

  • Azure Key Vault dengan properti Penghapusan Sementara dan Jangan Hapus Menyeluruh diaktifkan. Fitur-fitur ini diperlukan untuk memungkinkan pemulihan kunci jika terjadi penghapusan yang tidak disengaja.
  • Hanya kunci RSA yang didukung dengan enkripsi Azure Automation. Untuk informasi selengkapnya tentang kunci, lihat Tentang kunci, rahasia, dan sertifikat Azure Key Vault.
  • Akun Automation dan brankas kunci dapat berada di langganan yang berbeda tetapi harus berada di penyewa Microsoft Entra yang sama.
  • Ketika menggunakan PowerShell, verifikasi bahwa modul Azure Az PowerShell diinstal. Jika Anda perlu menginstal atau melakukan peningkatan, lihat Cara menginstal modul Azure Az PowerShell.

Menghasilkan dan menetapkan identitas baru yang ditetapkan sistem untuk akun Automation

Untuk menggunakan kunci yang dikelola pelanggan dengan akun Automation, akun Automation Anda perlu mengautentikasi terhadap brankas kunci yang menyimpan kunci yang dikelola pelanggan. Azure Automation menggunakan identitas terkelola yang ditetapkan sistem untuk mengautentikasi akun dengan Azure Key Vault. Untuk informasi selengkapnya tentang identitas terkelola, lihat Apa itu identitas terkelola untuk sumber daya Azure?

Menggunakan PowerShell

Gunakan PowerShell cmdlet Set-AzAutomationAccount untuk mengubah akun Azure Automation yang sudah ada. Parameter -AssignSystemIdentity menghasilkan dan menetapkan identitas baru yang ditetapkan sistem untuk digunakan akun Automation dengan layanan lain seperti Azure Key Vault. Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure? dan Tentang Azure Key Vault. Jalankan kode berikut:

# Revise variables with your actual values.
$resourceGroup = "ResourceGroupName"
$automationAccount = "AutomationAccountName"
$vaultName = "KeyVaultName"
$keyName = "KeyName"

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity

Output akan terlihat mirip dengan contoh berikut:

Output from Set-AzAutomationAccount cmdlet.

Peroleh PrincipalId untuk digunakan nanti. Jalankan kode berikut:

$principalID = (Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Identity.PrincipalId

$principalID

Menggunakan REST

Konfigurasi identitas terkelola yang ditetapkan sistem ke akun Automation dengan menggunakan panggilan REST API berikut:

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

Isi permintaan:

{ 
 "identity": 
 { 
  "type": "SystemAssigned" 
  } 
}

Identitas yang ditetapkan sistem untuk akun Automation dikembalikan dalam respons yang mirip dengan yang berikut ini:

{
 "name": "automation-account-name",
 "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
 ..
 "identity": {
    "type": "SystemAssigned",
    "principalId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
 },
..
}

Konfigurasi kebijakan akses Key Vault

Setelah identitas terkelola yang ditetapkan sistem ditetapkan ke akun Automation, Anda mengonfigurasi akses ke brankas kunci yang menyimpan kunci yang dikelola pelanggan. Azure Automation memerlukan izin operasi Get, Recover, WrapKey, dan UnwrapKey bagi identitas untuk mengakses kunci yang dikelola pelanggan.

Menggunakan PowerShell

Gunakan PowerShell cmdlet Set-AzKeyVaultAccessPolicy untuk memberi izin yang diperlukan. Lalu gunakan Add-AzKeyVaultKey untuk membuat kunci di brankas kunci. Jalankan kode berikut:

Set-AzKeyVaultAccessPolicy `
    -VaultName $vaultName `
    -ObjectId $principalID `
    -PermissionsToKeys Get, Recover, UnwrapKey, WrapKey

Add-AzKeyVaultKey `
    -VaultName $vaultName `
    -Name $keyName `
    -Destination 'Software'

Output akan terlihat mirip dengan contoh berikut:

Output from Add-AzKeyVaultKey cmdlet.

Menggunakan REST

Kebijakan akses tersebut dapat diatur menggunakan panggilan REST API berikut:

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sample-group/providers/Microsoft.KeyVault/vaults/sample-vault/accessPolicies/add?api-version=2018-02-14

Isi permintaan:

{
  "properties": {
    "accessPolicies": [
      {
        "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
        "objectId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "permissions": {
          "keys": [
            "get",
            "recover",
            "wrapKey",
            "unwrapKey"
          ],
          "secrets": [],
          "certificates": []
        }
      }
    ]
  }
}

Catatan

Bidang tenantId dan objectId harus disediakan dengan nilai identity.tenantId dan identity.principalId masing-masing dari respons identitas terkelola untuk akun Automation.

Mengonfigurasi ulang akun Automation untuk menggunakan kunci yang dikelola pelanggan

Jika Anda ingin mengalihkan akun Automation Anda dari kunci yang dikelola Microsoft ke kunci yang dikelola pelanggan, Anda dapat melakukan perubahan ini menggunakan Azure PowerShell atau dengan template Azure Resource Manager.

Menggunakan PowerShell

Gunakan PowerShell cmdlet Set-AzAutomationAccount untuk mengonfigurasi ulang akun Automation untuk menggunakan kunci yang dikelola pelanggan.

$vaultURI = (Get-AzKeyVault -VaultName $vaultName).VaultUri
$keyVersion = (Get-AzKeyVaultKey -VaultName $vaultName -KeyName $keyName).Version

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity `
    -KeyName $keyName `
    -KeyVaultUri $vaultURI `
    -KeyVersion $keyVersion `
    -KeyVaultEncryption 

Anda dapat memverifikasi perubahan tersebut dengan menjalankan perintah berikut:

(Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Encryption `
    |  ConvertTo-Json 

Output akan terlihat mirip dengan contoh berikut:

Output from Get-AzAutomationAccount cmdlet.

Menggunakan REST

Gunakan panggilan API REST berikut:

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

Isi permintaan:

{
	"identity": {
	"type": "SystemAssigned"
	},
	"properties": {
		"encryption": {
			"keySource": "Microsoft.Keyvault",
			"keyvaultProperties": {
				"keyName": "sample-vault-key",
				"keyvaultUri": "https://sample-vault-key12.vault.azure.net",
				"keyVersion": "7c73556c521340209371eaf623cc099d"
			}
		}
	}
}

Respon sampel

{
  "name": "automation-account-name",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
  ..
  "properties": {
    ..
    "encryption": {
      "keyvaultProperties": {
         "keyName": "sample-vault-key",
          "keyvaultUri": "https://sample-vault-key12.vault.azure.net",
          "keyVersion": "7c73556c521340209371eaf623cc099d"
      },
      "keySource": "Microsoft.Keyvault"
    },
    ..
  }
}

Rotasi kunci yang dikelola pelanggan

Anda dapat memutar kunci yang dikelola pelanggan di Azure Key Vault sesuai dengan kebijakan kepatuhan Anda. Saat kunci diputar, Anda harus memperbarui akun Automation untuk menggunakan URI kunci baru.

Memutar kunci tidak memicu enkripsi ulang aset aman di akun Automation. Tidak perlu tindakan lebih lanjut.

Pencabutan akses ke kunci yang dikelola pelanggan

Untuk mencabut akses ke kunci yang dikelola pelanggan, gunakan PowerShell atau Azure CLI. Untuk mengetahui informasi selengkapnya, lihat Azure Key Vault PowerShell atau Azure Key Vault CLI. Mencabut akses secara efektif memblokir akses ke semua aset aman di akun Automation, karena kunci enkripsi tidak dapat diakses oleh Azure Automation.

Langkah berikutnya