Windows Azure – Key Vault

By | 06 January 2017

Merhaba,

Azure üzerindeki servisler geliştikçe makale yazma oranım da okadar artıyor gün geçtikçe. Tabi bu servislerin gelişmesi security anlamında bu servisleri besleyecek servislerin ortaya çıkmasına da sebep oluyor.

Bu makalemde Azure üzerinde bulunan ve diğer servislerin kullanacağı key’ler ve secret’lar store eden azure key vault konusunu anlatacağım. Umarım herkes için faydalı bir yazı olur

Azure Key Vault Nedir?

  • Key vault server cripto keyleri ve secret’ları barındıran bir azure servisidir. (Storage account key’leri ve password’ları)
  • Keyvault barındırdığı içeriği şifrelendirilmiş formlarda tutar ve HSM-Based protection ile bu formların güvenliğini sağlar.
  • Secret küçük boyuttaki data bloblarına verilen isimdir.(10 KB’ye kadar olan dosyalar). Yetkili kullanıcılar yada uygulamalar secret’ları vault üzerinden alabilir.
  • Secret’a güvenli erişim için Azure AD objesi oluşturulup, devamlı kimlik doğrulaması yapan kullanıcı yada uygulamalara sunulması gerekir.
  • Böylece kullanıcıların secret’ları güvenli olmayan lokasyonlarda yada direk kod içersinde tutması önlenmiş olur.
  • Secret’ın aksine key’ler vault içersinde tutulurlar ve uygulamalar bu key’leri kullanmak için criptogrofik fonksiyonları kullanması gerekir. Bu fonksiyonları invoke etme işlemi Azure ad kimlik doğrulaması ile yapılır.
  • Secret ve key’lere erişmek için Azure AD den alınmış geçerli bir token’a ihtiyaç vardır.
  • Vault içersindeki her obje unique bir identifier’a sahiptir. Bu ID’ler kullanılarak secret’lar referans gösterilebilir yada cripto fonksiyonlar tetiklenebilir.
  • Secret ve key’ler aşağıdaki attribute’lara sahiptir.
  1. Exp : secret’ın expiraton date’idir.
  2. Nbf: secret’ın available olacağı tarihtir.
  3. Secret’ın erişilebilir olduğunu gösteren boolen değerdir.
  • Secret ayrıca contentType isimli secret’ın işlevini gösteren attribute’a da sahiptir.

Azure Ky Vault için iki adet pricing tier bulunur. Bunlar standar ve premium tier’lardır. Bunlar arasındaki farklar aşağıdaki tablolardaki gibidir.

Key vault oluşturulduğunda overview bölümünde aşağıdaki resimde görünen dashboard ile sahip olunan key ve secret’lar görüntülenebilir. Ek olarak access policyleri de bu bölümden görüntülenebilir.

Key vault üzerinde key bölümüne girildiğinde 3 adet opsiyon seçilebilir durumdadır. Bunlar,

  • Generate : Azure üzerinde key’in oluşturulması işlemidir.
  • Upload : Önceden var olan key’in azure keyvault üzerine upload edilmesini sağlar.
  • Restore Backup : Azure üzerinden backup’ı alınan .backup uzantılı key backup’ının tekrardan azure ortamına restore edilmesini sağlar.

Key oluşturulurken aktivasyon ve expire date’leri de isteğe bağlı olarak tanımlanabilir. Ayrıca Enabled seçeneği sayesinde key’ler isteğe bağlı olarak enable ya da disable edilebilir.

Örnek olarak azure üzerinde yeni bir key oluşturumak istendiğinde aşağıdaki şekilde konfigüre edilebilir.

Options: Key’in hangi yöntem ile azure üzerine entegre edileceğini belirler.

Name : Key’e verilen isimdir.

Value : Secret’ın gizli değeridir.

Key type: Default olarak Seçili gelir. Key’in türünü belirtir.

Set Activation Date: Key’in aktif olarak kullanılmaya başlayacağı süredir.

Expiration Date: Key’in süresinin dolacağı tarihtir.

Key oluşturulduktan sonra özellikleri aşağıdaki şekilde görüldüğü gibidir. Buradaki bir iki seçeneğe değiencek olursak,

Tags: ARM özelliği olan resource tagging yapmayı sağlar.

Permit Operations : Key ile yapılabilecek izin verilen operasyonları belirler.

Key Identifier: Key vault içerisindeki key’lerin sahip oldukları unique URL’dir. Aşağıdaki formattadır.

https://{keyvault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}

Azure üzerinde oluşturulan key’ler powershell ile get edilebilir. Bunun için aşağıdaki komutun çalıştırılması yeterlidir.

Get-AzureKeyVaultKey -VaultName FRTKEYVAULT -KeyName frtkey1

Secret’larda ise yeni secret eklenmek istendiğinde iki seçenek mevcuttur. Bunlar;

  • Certificate : Sertifikanın secret olarak vault üzerine eklenmesini sağlar. Daha sonra bu sertifikalar VM üzerine sertifika olarak deploy edilebilir.
  • Manuel : Manuel secret değerinin manuel olrak girilmesini sağlar.

Örnek olarak bir secret değeri manuel olarak aşağıdaki gibi girilebilir. Bu bölümleri özet olarak açıkalmak gerekirse;

Name : Secret’a verilen isimdir.

Value : Secret’ın gizli değeridir.

Content type: Opsiyonel olarak yapılandırılır. Secret’ın türü bu bölüme yazılabilir.

Set Activation Date: Secret’ın aktif olarak kullanılmaya başlayacağı süredir.

Expiration Date: Secret’ın süresinin dolacağı tarihtir.

Oluşturulan secret’lara ait gizli değerler bir çok şekilde get edilebilir.

Örneğin aşağıdaki powershell komutu kullanılarak oluşturulan secret değeri kolayca elde edilebilir.

$secret=Get-AzureKeyVaultSecret -VaultName FRTKeyVault -Name FRTITKEY

$secret.SecretValueText

Azure key vault üzerindeki advanced access policies bölümünde azure key vault üzerindeki key ve secret’lara hangi durumlarda erişilebileceği belirlenir.

Aşağıdaki şekilde görüldüğü üzre VM deployment, ARM Template deployment ve Azure disk ancryption volume şifrelediği zamanlarda keyvault üzerine erişimi etkinleştirilmiştir.

Bir sonraki makalede görüşmek üzere.

Kaynak: Microsoft DMOC

Kaynak: https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys–secrets-and-certificates

Fırat

Leave a Reply