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, asimetrik 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
- Anahtarlık oluşturma
- Asimetrik şifreleme/şifre çözme için şifreleme anahtarı oluşturma
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-asymmetric-encryption-key adlı ve asymmetric-encryption amaçlı bir şifreleme anahtarı oluşturun.
$ gcloud kms keys create "my-asymmetric-encryption-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-encryption" \
--default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. Verileri Şifreleme
Asimetrik anahtarlarda şifreleme işlemi Cloud KMS tarafından yapılmaz. Bunun yerine, ortak anahtara erişim sağlar ve ortak anahtar kriptografisi aracılığıyla bu ortak anahtarı kullanarak verileri şifrelersiniz. Asimetrik anahtarlarla şifreleme tamamen çevrimdışı olarak yapılabilir ve Cloud KMS'ye veya başka bir Google Cloud API'sine erişim gerektirmez. Şifreleme, openssl gibi bir kriptografik araçla veya ortak anahtarlı kriptografiyi destekleyen bir programlama dili ya da kitaplıkla yapılır.
Cloud KMS'den ortak anahtarı indirin:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--output-file ./key.pub
Şifrelenecek verileri içeren bir dosya oluşturun ve dosyadaki verileri şifrelemek için openssl komut satırı aracını kullanın:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \
-in ./data.txt \
-inkey ./key.pub \
-pkeyopt "rsa_padding_mode:oaep" \
-pkeyopt "rsa_oaep_md:sha512" \
-pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
Şifrelenmiş veriler ("ş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. Şifrelenmiş metin için en yaygın kodlama mekanizması Base64'tü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
Şifrelemenin aksine, asimetrik bir Cloud KMS anahtarı kullanılarak şifrelenmiş verilerin şifresinin çözülmesi için Cloud KMS hizmetine online erişim gerekir. gcloud komut satırı aracını kullanarak dosyadaki şifreli metnin şifresini çözün:
$ gcloud kms asymmetric-decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--version "1" \
--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. Tebrikler!
Cloud KMS API'yi etkinleştirdiniz, asimetrik ş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.