Azure Key vault ile VHD Encryption
Bugün veri güvenliği denildiğinde aklımıza ilk olarak gelişmiş güvenlik ekipmanları ve yazılımları gelmekte. Fakat kapsamı biraz küçülttüğümüzde veri güvenliğini hala eski dostumuz Bitlocker’a teslim eden birçok kurum bulunmakta. Azure Key vault servisi ise fiziksel makinalarımızda da kullandığımız Windows’un volume bazlı şifreleme teknolojisi bitlocker’ı Azure portalına entegre olmuş halde bize sunuyor.
Geçen yıl duyurulan Azure Key vault, kullanıcıların key ve sertifika gibi seçenekler ile verilerini şifrelemesini sağlayan bulut tabanlı bir yönetim hizmetidir. Biz de sunulan bu hizmeti Azure üzerinde çalışan Windows sanal makinamızın diskini şifrelemek için kullanacağız.
İşlemlere başlamadan önce sanal makinanız üzerinde Key vault kullanmak için başlıca koşullardan bahsedelim.
Sanal makina işletim sistemi;
İstemci bazında Windows8 ve üzeri
Sunucu bazında Windows Server 2008 R2 ve üzeri olmak zorunda
Key vault encryption 2 GB’dan az memory’e sahip veya A serisi sanal makinalarda uygulanamamakta. Ayrıca sadece “standart” ve üzeri disk tiplerinde Key vault kullanabilirsiniz.
Daha fazla gereksinim ve uygulama detayı için bu linkten Microsoft’un ilgili sayfasını ziyaret edebilirsiniz.
Azure portalına giriş yaptıysanız aşağıdaki adımları takip ederek devam edebilirsiniz.
Azure Portal ana ekranından “Create a resource” butonuna tıklarsanız karşınıza oluşturmak istediğiniz kaynak seçimini yapabilmeniz için Azure Marketplace ekranı açılır.
Marketplace arama kutucuğuna “Key vault” yazıp aratırsanız aynı isimli Azure servisini create butonuna basarak oluşturabilirsiniz.
Key vault oluşturma ekranında gerekli bilgileri dolduruyoruz.
Burada dikkate değer iki unsur var. Region ve Pricing Tier.
Region: Diskini şifrelemek istediğiniz sanal makine ve Key vault farklı Resource Group’larda bulunabilir fakat mutlaka aynı Region’da olmaları gerekir.
Pricing Tier: Key vault ücretli bir servis olmakla birlikte birçok Azure servisi gibi farklı etkenlerle fiyat değişikliğine uğrayabiliyor. Buraya tıklayarak Key vau,lt fiyatlandırmasına dair detaylı bilgileri istediğiniz bölgeye ve para birimine göre öğrenebilirsiniz.
Ayrıca hatalı bir silme işlemi veya geri alma talebi üzerine Soft delete seçeneğini aktif edebilir ve saklama süresini belirleyebilirsiniz.
Her şey tamamsa Create butonuna tıklayarak Key vault’u oluşturabilirsiniz.
Go to resource butonuna tıklayarak oluşturduğumuz Key vault servisine ulaşabilirsiniz.
Settings menüsü altından Keys tabına tıklıyoruz. Burada Generate/Import butonuna tıklayarak şifreleme için gerekli olan Key’i oluşturabiliriz.
Yine Settings menüsü altından Access policies tabına tıklayarak “Azure disk encryption for volume encryption” seçeneğini enable hale getiriyoruz.
Key oluşturma işlemi tamamlandıktan sonra şifrelemek istediğimiz sanal makinanın diskleri ne durumda kontrol edelim.
Azure Portal’ın sağ üst kısmında bulunan Cloud Shell butonuna tıklayarak Bash veya Powershell ekranını aktif edebilirsiniz. Bu özelliği ilk kez kullanıyorsanız bash history, log, cache gibi dosyaları tutmak için sizden bir storage account oluşturmanızı isteyecektir.
Açılan Powershell ekranına aşağıdaki komutu yazarak hedef sanal makinanızın diskinin şifreli olup olmadığını kontrol edebilirsiniz.
Get-AzVmDiskEncryptionStatus -VMName “VM1” -ResourceGroupName “RG1”
Komut çıktısında görebileceğiniz üzere benim hedef sanal makinamın OS ve Data diskleri “NotEncrypted” yani şifrelenmemiş olarak görünüyor.
Şimdi oluşturduğumuz Key ile bu sanal makinamızın diskini şifreleme işlemini gerçekleştirelim.
Şifreleme için gerekli komutu çalıştırdığımızda bizden bazı değerlerin girdisini isteyecek. ResourceId gibi çok uzun değerler ile uğraşmamak için bu değerleri bazı değişkenlere atamamız gerekiyor.
Komutlar içerisindeki değerleri ortamınıza uyarlayarak aşağıdaki adımları takip edebilirsiniz.
$keyVault = Get-AzureRmKeyVault -VaultName “KeyVaultismi” -ResourceGroupName “ResourceGruopismi”;
$diskEncryptionKeyVaultUrl = $keyVault.VaultUri;
Görselde görebileceğiniz üzere Key Vault URL’ini $diskEncryptionKeyVaultUrl değişkenine atadık. Ve bir sonraki komutta değişkeni kontrol ettiğimizde doğru URL karşımıza çıkıyor. Sıradaki adımların sağlamasını da bu şekilde yapabilirsiniz.
$keyVaultResourceId = $keyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName “keyvaultismi” -Name “keyismi”).Key.kid;
Şimdi şifreleme işlemini başlatmak için sanal makinamızın ismini ve Resource Group’unu belirttiğimiz komutu çalıştırabiliriz.
Komut aynı zamanda atadığımız değişkenleri de içermekte.
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName “Vmresourcegroupname” -VMName “vmname” -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $keyVaultResourceId
Şifreleme işlemi gerçekleşene kadar 5-10 belki de 15 dakika gibi bir süre sanal makina erişilemez durumda olacak. Bu nedenle production ortamınızda bu işlemi gerçekleştirirken zamanlamaya dikkat etmenizde fayda var.
Aşağıdaki komutu çalıştırarak sanal makinanın diskinin başarılı bir şekilde şifrelendiğini görüyoruz.
Get-AzVmDiskEncryptionStatus -VMName “VM1” -ResourceGroupName “RG1”
Eline sağlık.