1. Genel Bakış
Cloud KMS; bulut hizmetiniz için şifreleme anahtarlarını, şirket içinde yapılana benzer şekilde yönetmenizi sağlayan, bulutta barındırılan bir anahtar yönetim hizmetidir. Donanım destekli anahtarlar için Cloud HSM dahil olmak üzere çeşitli anahtar türleri ve kaynakları kullanılarak şifreleme, şifre çözme, imzalama ve doğrulama desteği sunar. Bu eğitimde, simetrik Cloud KMS anahtarlarını kullanarak verileri nasıl şifreleyeceğiniz ve şifrelerini nasıl çözeceğiniz açıklanmaktadır.
Öğrenecekleriniz
- Cloud KMS API'yi etkinleştirme
- Cloud KMS anahtarlığı oluşturma
- Simetrik şifreleme/şifre çözme için Cloud KMS şifreleme anahtarı oluşturma
- Simetrik bir Cloud KMS şifreleme anahtarı nasıl döndürülür?
2. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Bu codelab'de, Google Cloud'da çalışan ücretsiz bir sanallaştırılmış ortam olan Cloud Shell'i kullanacaksınız. GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:
Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:
Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Aksi belirtilmedikçe tüm komutları bu kabuktan çalıştırın.
3. Cloud KMS hizmetini etkinleştirme
Cloud KMS'yi kullanabilmek için önce hizmeti projenizde etkinleştirmeniz gerekir. Bu işlemin proje başına bir kez yapılması gerekir. Cloud KMS hizmetini etkinleştirmek için aşağıdaki komutu çalıştırın:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
Etkinleştirme işlemi bir dakika kadar sürebilir. Komut tamamlandığında başarılı olduğunu bildirir.
4. KMS anahtarı oluşturma
Cloud KMS anahtarlığı oluşturun. Cloud KMS'de anahtarlık, şifreleme anahtarlarının mantıksal bir koleksiyonudur. Anahtarlık, anahtarların konumu gibi meta verileri içerir. global bölgesinde my-keyring adlı bir anahtarlık oluşturun:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Şimdi, az önce oluşturduğunuz anahtarlıkta my-symmetric-key adlı ve encryption amaçlı bir şifreleme anahtarı oluşturun.
$ gcloud kms keys create "my-symmetric-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "encryption"
5. Verileri Şifreleme
Şifrelenecek verileri içeren bir dosya oluşturun ve dosyadaki verileri şifrelemek için gcloud komut satırı aracını kullanın:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file ./data.txt \
--ciphertext-file ./data.txt.enc
Şifrelenmiş veriler (aynı zamanda "şifreli metin" olarak da bilinir) diskteki data.txt.enc konumuna kaydedilir. data.txt.enc dosyasını açarsanız garip ve yazdırılamayan karakterler içerdiğini görürsünüz. Bunun nedeni, elde edilen verilerin ikili biçimde olmasıdır.
Şifrelenmiş metni bir veritabanında saklarken veya HTTP isteği kapsamında iletirken verileri kodlamanız gerekebilir. Base64, yaygın olarak kullanılan bir kodlama mekanizmasıdır.
Cloud KMS, sağladığınız düz metinlerin hiçbirini saklamaz. Düz metin değerini almak için gerekli olacağından bu şifrelenmiş metni güvenli bir konumda kaydetmeniz gerekir.
6. Verilerin Şifresini Çözme
gcloud komut satırı aracını kullanarak dosyadaki şifreli metnin şifresini çözün:
$ gcloud kms decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
gcloud komut satırı aracı, şifrelenmiş metni dosyadan okur ve Cloud KMS kullanarak şifresini çözer. Bu örnekte --plaintext-file bağımsız değişkeninin - olarak belirtildiğine dikkat edin. Bu komut, gcloud'ya sonucu terminale yazdırması talimatını verir.
Konsolda, yukarıdaki dosyada yer alan düz metin değeriyle aynı olan my-contents değeri yazdırılır.
7. Anahtarları Döndür
Cloud KMS'de bir şifreleme anahtarı aslında bir şifreleme anahtarı sürümleri koleksiyonudur. Anahtar rotasyonu işlemi gerçekleştirmek için yeni şifreleme anahtarı sürümleri oluşturabilirsiniz. Cloud KMS, anahtarları planlı olarak otomatik olarak da döndürebilir.
Bir anahtarı manuel olarak döndürmek için yeni bir şifreleme anahtarı sürümü oluşturun ve bunu birincil sürüm olarak ayarlayın:
$ gcloud kms keys versions create \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--primary
Gelecekteki tüm şifreleme isteklerinde bu yeni anahtar kullanılır. Eski anahtarlar, daha önce bu anahtarlar kullanılarak şifrelenen verilerin şifresini çözmek için kullanılabilir. Cloud KMS, sağlanan şifreli metne göre uygun şifre çözme anahtarını otomatik olarak belirler. Şifre çözme için hangi şifreleme anahtarı sürümünün kullanılacağını belirtmeniz gerekmez.
Eski bir şifreleme anahtarı sürümü kullanılarak şifrelenen şifreli metin değerlerinin Cloud KMS kullanılarak şifresinin çözülmesini önlemek için söz konusu şifreleme anahtarı sürümünü devre dışı bırakabilir veya kaldırabilirsiniz. Devre dışı bırakma işlemi geri alınabilirken yok etme işlemi kalıcıdır. Bir sürümü devre dışı bırakmak için:
$ gcloud kms keys versions disable "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key"
8. Tebrikler!
Cloud KMS API'yi etkinleştirdiniz, simetrik bir şifreleme anahtarı oluşturdunuz ve verileri şifreleyip şifrelerini çözdünüz. Cloud KMS güçlü bir üründür ve şifreleme/şifre çözme, özelliklerinin yalnızca küçük bir kısmını kapsar.
Temizleme
Keşfetme işlemini tamamladıysanız lütfen projenizi silin.
- Cloud Platform Console'a gidin.
- Kapatmak istediğiniz projeyi seçin ve üst kısımdaki "Sil"i tıklayın. Bu işlem, projenin silinmesini planlar.
Daha Fazla Bilgi
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.