Cloud KMS ile verileri şifreleme ve şifrelerini çözme

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ğitimde, simetrik Cloud KMS anahtarları kullanarak verileri nasıl şifreleyeceğinizi ve şifresini nasıl çözeceğinizi öğretebilirsiniz.

Öğ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 Cloud KMS Şifreleme Anahtarını döndürme

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. 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.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

İ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, encryption amacına sahip my-symmetric-key adlı bir Şifreleme Anahtarı oluşturun.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5. Verileri Şifrele

Ş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 ("ş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. En yaygın kodlama mekanizmalarından biri 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

gcloud komut satırı aracını kullanarak dosyadaki şifrelenmiş 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ı, 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. Tuşları Döndür

Cloud KMS'de Şifreleme Anahtarı aslında Şifreleme Anahtarı Sürümlerinden oluşan bir koleksiyondur. Anahtar rotasyonu yapmak için yeni Şifreleme Anahtarı Sürümleri oluşturabilirsiniz. Ayrıca Cloud KMS, anahtarları belirli bir programa göre otomatik olarak 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 veri şifreleme isteklerinde bu yeni anahtar kullanılacaktır. Eski anahtarlar, daha önce bu anahtarlar kullanılarak şifrelenmiş verilerin şifresini çözmek için kullanılmaya devam eder. Cloud KMS, sağlanan şifrelenmiş 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 şifrelenmiş metin değerlerinin Cloud KMS kullanılarak şifresinin çözülmesini önlemek için bu Şifreleme Anahtarı Sürümünü devre dışı bırakabilir veya kaldırabilirsiniz. Devre dışı bırakma işlemi geri alınabilen bir işlemdir, kaldırma işlemi ise 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, bir simetrik ş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.