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. Bu pakette donanım destekli anahtarlar için Cloud Director gibi çeşitli anahtar türleri ve kaynakları kullanılarak şifreleme, şifre çözme, imzalama ve doğrulama desteği sunulur. Bu eğiticide, asimetrik Cloud KMS anahtarları kullanarak verileri nasıl şifreleyeceğinizi ve şifresini nasıl çözeceğinizi öğretir.
Öğrenecekleriniz
- Cloud KMS API'yi etkinleştirme
- Anahtarlık nasıl oluşturulur?
- Asimetrik şifreleme/şifre çözme için Şifreleme Anahtarı oluşturma
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Cloud Console'da oturum açıp 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.)
Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID
olarak adlandırılacaktır.
- Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ü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 yer alan Cloud Shell simgesini tıklayın:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Aksi belirtilmediği sürece bu kabuktan tüm komutları çalıştırın.
3. Cloud KMS Hizmetini Etkinleştir
Cloud KMS'yi kullanabilmeniz için önce projenizde hizmeti etkinleştirmeniz gerekir. Bu işlemin proje başına yalnızca bir kez yapılması yeterlidir. 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, işlem tamamlandığında işlemin 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, anahtarlarla ilgili konum 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, asymmetric-encryption
amacına sahip my-asymmetric-encryption-key
adlı 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 Şifrele
Cloud KMS, asimetrik anahtarlarla şifrelemeyi gerçekleştirmez. Bunun yerine, ortak bir anahtara erişim sağlar ve verileri ortak anahtar kriptografisi aracılığıyla bu ortak anahtarı kullanarak şifrelersiniz. Asimetrik anahtarlarla şifreleme tamamen çevrimdışı olarak gerçekleştirilebilir ve Cloud KMS'ye veya başka herhangi bir Google Cloud API'sine erişim gerektirmez. Şifreleme, openssl
gibi bir şifreleme aracı veya ortak anahtar kriptografisini destekleyen bir programlama dili veya kitaplığı kullanılarak gerçekleştirilir.
Ortak anahtarı Cloud KMS'den 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
uygulamasına kaydedilir. data.txt.enc
dosyasını açarsanız garip, yazdırılamayan karakterlere sahip olduğunu fark edeceksiniz. Bunun nedeni, elde edilen verilerin ikili biçimde olmasıdır.
Şifreli metni bir veritabanında depolarken veya bir HTTP isteği kapsamında aktarırken verileri kodlamanız gerekebilir. Şifreli metin için en yaygın kodlama mekanizması base64'tür.
Cloud KMS, sağladığınız şifrelenmemiş metinleri depolamaz. Şifrelenmemiş metin değerini almak için gerekeceğinden bu şifrelenmiş metni güvenli bir konuma kaydetmeniz gerekir.
6. Verilerin Şifresini Çözme
Şifrelemenin aksine, asimetrik Cloud KMS anahtarı kullanılarak şifrelenmiş verilerin şifresini çözmek için Cloud KMS hizmetine online erişim gerekir. gcloud
komut satırı aracını kullanarak dosyadaki şifrelenmiş 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ı, dosyadaki şifrelenmiş metni okur ve Cloud KMS'yi kullanarak şifrenin şifresini çözer. Bu örneğin, --plaintext-file
bağımsız değişkenini -
olarak belirttiğine dikkat edin. Bu komut gcloud
'e, sonucu terminale yazdırması talimatını verir.
Konsol, my-contents
dosyasını yazdırır. Bu değer, yukarıdaki dosyadaki düz metin değeriyle aynıdır.
7. Tebrikler!
Cloud KMS API'yi etkinleştirdiniz, bir asimetrik şifreleme anahtarı oluşturdunuz, ayrıca verileri şifreleyip şifresi çözdünüz. Cloud KMS güçlü bir üründür ve şifreleme/şifre çözme işlemleri henüz tamamen yeni beceriler geliştirmektedir.
Temizleme
Keşfi tamamladıysanız lütfen projenizi silin.
- Cloud Platform Console'a gidin
- Kapatmak istediğiniz projeyi seçin, ardından "Sil"i tıklayın dokunun. Bu işlem, projeyi silinmek üzere programlar.
Daha Fazla Bilgi
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.