Azure Key Vault Uygulama geliştirirken kullandığımız ortam erişim bilgileri, sistemlere ait konfigürasyon bilgileri, üçüncü parti veri kaynaklarından veri çekmek için kullanılan API anahtarları gibi, hassas bilgileri saklamak için güvenli bir altyapı sağlayan bir Azure servisidir.
Bu bilgiler Key Vault üzerinde şifrelenebilir ve rol bazlı yekilendirme ile bu bilgilere erişmesi gereken kullanıcılara ya da uygulamalara farklı yetkiler tanımlanabilir.
Azure Key Vault, diğer Azure servisleri ile entegra bir şekilde çalışır. İlgili Azure servisinde kullanılmak istenen anahtarların (secret, key ya da certificate) Azure Key Vault’tan alınarak kullanılması sayesinde olası bir güvenlik ya da yetki sorununun da önüne geçilmiş olur.
Key Vault içinde üç farklı bilgi saklanabilir:
- Secret (Gizli Bilgi): Kimlik doğrulama bilgileri, API anahtarları, paralolar, token ve diğer hassas bilgilerin tutulması için kullanılır.
- Key (Anahtar): Verilerin şifrelenmesi için kullanılan şifreleme anahtarlarını yönetmek için kullanılabilir.
- Certificate (Sertifika): Dğer Azure servisleriyle entegrasyon için SSL / TLS sertifikaları sağlamak, yönetmek ve dağıtmak için kullanılır.
Bir Key Vault oluşturup burada tanmladığımız bir anahtarın diğer Azure servisinde nasıl kullanıldığını bir örnek üzerinde gösterelim.
Key Vault kurulumu
Azure Portal’de üst taraftaki arama kutucuğunua key vault yazarak Key Vault’a tıklıyoruz.
Kaynak grubu, key vault adı ve bölge bilgilerini seçerek Next‘e tıklıyoruz.
Access policy sekmesinde Resource access kısmındaki üç kutucuğu da işaretleyerek sonraki sekmeye geçelim.
Burada Enable public access kutucuğunun işaretli olması gerekiyor. Sonraki sekmeye geçiyoruz.
Sonrasında doğrudan Review & create ve Create diyerek servisi oluşturabiliriz.
Secret oluşturma
Örneğimizde bir Azure SQL veritabanına bağlantı sağlamak için gerekil erişim bilgilerini Key Vault içinde tanımlayıp Azure Data Factory içinden bu veritabanına bağlanırken bu bilgileri kullancağız.
Öncelikle Azure SQL veritabanı ekranına gidip Connection strings bölümünden bağlantı bilgisini kopyalıyoruz. Burada {your password} yerine şifreyi yazıyoruz.
Key Vault ana ekranında soldaki Secrets menüsünü seçerek Generate/Import‘a tıklıyoruz.
Gelen ekranda Name ve Secret value değerlerini giriyoruz. Ayrıca Set activation date kutucğunu da işaretliyoruz.
Create‘e tıklayıp secret’ı oluşturuyoruz. Yeni eklediğimiz değer Secret sayfasında listelenecek.
Azure Data Factory’yi açıp yeni bir Key Vault bağlantısı eklememiz gerekiyor. Bunun öncesinde yapmamız gereken bir şey daha var: Key Vault içinde bir erişim izni (access policy) tanımlayıp Data Factory’nin bu Key Vault’taki secret’ları okumasını sağşamalıyız.
Öncelikle Key Vault sayfasına gidiyoruz ve Access policies ekranında Create‘e tıklayıp yeni bir policy tanımlıyoruz.
Permissions sekmesinde Secret Permissions altından Get ve List‘i seçiyoruz. Principal sekmesinde de Data Factory‘yi aratıp seçiyoruz. Selected item bölümünde seçtiğimiz Data Factory görüntülenecektir. Create diyerek bu policy’yi oluşturuyoruz. Artık Data Factory bu Key Vault’taki secret’ları okuyabilecek.
Data Factory’ye geçip Manage > Linked services bölümünden New‘i seçerek Key Vault bağlantısı ekliyoruz.
Key Vault’un adını yazıyoruz ve Aboneliği seçince listede gelen Azure Key Vault’u seçiyoıruz. Create deyip bağlantımızı oluşturuyoruz.
Data Factory üzerinde SQL Server veritabanına bir bağlantı tanımlıyoruz. Bağlantı bilgilerini manuel olarak girmek yerine bu bağlantı ifadesini (connection string) doğrudan Key Vault’tan alacak şekilde seçmemiz gerekiyor.
Connection string yerine Azure Key Vault seçiyoruz ve gelen listeden Key Vault bağlantımızı (myAzureKV) seçip alt tarafta da hangi secret’I kullanacağımızı belirtiyoruz. Diğer ayarlar olduğu gibi kalabilir.
Burada sadece Key Vault’un nasıl kullanıldığına değindiğimiz için sadece SQL bağlantısını test etsek yeterli olacaktır. Alt taraftaki Test connection‘a tıklıyoruz. Bağlantının başarılı bir şekilde sağlandığını görebilmemiz lazım (Connection successful).
Basit bir örnek üzerinde Key Vault’un nasıl çalıştığını görmüş olduk. Tabii ki Key Vault içerisinde daha karmaşık ifadeler tanımlanıp farklı servisler ile entegre şekilde kullanılabilir. Böylece bu bilgiler başkalarının erişemeyeceği şekilde saklanmış ve kullanılmış olur. Gerektiğinde rol bazlı yetkilendirmeler yapılarak Key Vault’a erişim daha kontrollü bir hale de getirilebilir.