Cloud KMS'yi kullanmaya başlama

Cloud KMS, bulut hizmetleriniz için şifreleme anahtarlarını şirket içinde yaptığınız gibi yönetmenizi sağlayan, bulutta barındırılan bir anahtar yönetim hizmetidir. Ayrıca, donanım destekli anahtarlar için CloudTrust gibi çeşitli anahtar türleri ve kaynakları kullanarak şifreleme, şifre çözme, imzalama ve doğrulama desteğini içerir.

Bu eğitimde, Cloud Security and Privacy API'nin gelişmiş özelliklerini nasıl kullanacağınızı öğreneceksiniz. Bu özellikler arasında şunlar sayılabilir:

  • Güvenli bir Cloud Storage paketi oluşturma
  • Cloud KMS'yi kullanarak anahtarları ve şifrelenmiş verileri yönetme
  • Cloud Storage denetleme günlüklerini görüntüleme

Enron Corpus'tan kısaltılmış verileri alıp şifreler ve daha sonra Cloud Storage'a yüklersiniz.

Öğrenecekleriniz:

  • Anahtar Yönetim Hizmeti'ni (KMS) kullanarak verileri şifreleme ve şifreleme anahtarlarını yönetme

Bundan sonra

  • Cloud KMS
  • Cloud Storage
  • Google Cloud SDK

Bağımsız tempolu ortam kurulumu

Google Hesabınız (Gmail veya Google Apps) yoksa bir hesap oluşturmanız gerekir. Google Cloud Platform Console'da (console.cloud.google.com) oturum açın ve yeni bir proje oluşturun:

Ekran görüntüsü: 10.02.2016 12:45:26.png

Proje kimliğini tüm Google Cloud projeleri genelinde benzersiz bir ad olarak hatırlayın (yukarıdaki ad zaten alınmıştı ve maalesef sizin için çalışmaz). Bu, daha sonra bu codelab'de 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 gözden geçirmek için çalışmanın birkaç dolardan fazla maliyeti olmayacak. Ancak daha fazla kaynak kullanmaya karar verirseniz veya bunları çalışır durumda bırakırsanız (bu belgenin sonundaki "temizlik" bölümüne bakın) daha yüksek maliyetli olabilir.

Yeni Google Cloud Platform kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Bu codelab'de, Google Cloud'da çalışan ücretsiz sanal bir ortam olan Cloud Shell'i kullanacaksınız. GCP Console'dan, sağ üstteki araç çubuğu üzerinde Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığının yapılması ve ağa bağlanması yalnızca birkaç dakika sürer. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:

Bu sanal makine, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Aksi belirtilmediği sürece bu kabuktan tüm komutları çalıştırın.

Bu eğitim için veri depolamak üzere bir Cloud Storage paketi oluşturun. Cloud Storage grup adlarının genel olarak benzersiz olması gerektiğinden, paket adının önüne proje kimliğinizi ekleyin:

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

Ardından paketi oluşturun:

$ gsutil mb gs://${BUCKET_NAME}

Enron Corpus,Enron Corporation'ın 158 çalışanı tarafından oluşturulan 600.000'den fazla e-postadan oluşan büyük bir veritabanıdır. Bu veriler, gs://enron_emails/ adlı Cloud Storage paketine kopyalandı.

E-posta dosyalarından birini yerel olarak indirme:

$ gsutil cp gs://enron_emails/allen-p/inbox/1. . # <-- don't forget the dot!

İndirilen dosyayı inceleyerek gerçekten bir e-posta olduğunu doğrulayın:

$ tail 1.

E-posta aşağıdaki gibi bir ileti içerir:

Attached is the Delta position for 1/18...
# ...

Paket, e-postaların yanı sıra resimleri de içerir. Bu eğitim, hem düz metin e-postalarını hem de resimleri kullanır.

Cloud KMS'yi kullanabilmek için önce hizmeti projenizde 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 başarılı olduğunu bildirir.

Cloud KMS Anahtar Halkası oluşturun. Cloud KMS'de bir Anahtar Halkası, kriptografik anahtarların mantıksal bir koleksiyonudur. Anahtar Halkası, anahtarlarla ilgili meta verileri (ör. konumu) içerir. global bölgesinde my-keyring adlı bir Anahtar Halkası oluşturun:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Şimdi az önce oluşturduğunuz Anahtar Halkası içinde, encryption amacına sahip enron-emails adlı bir Şifreleme Anahtarı oluşturun.

$ gcloud kms keys create "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Şifreleme Anahtarları Web Kullanıcı Arayüzü'nü açın ve yeni oluşturulan kaynakları görüntüleyin. Bu özellik, ana menüdeki IAM ve Yönetici altında bulunur.

Anahtarlıkları ve Şifreleme Anahtarlarını Cloud Console'da görüntüleyebilir ve yönetebilirsiniz.

Cloud KMS'i kullanarak daha önce indirdiğimiz e-postanın içeriğini şifreleyin. Bu eğitim gcloud komut satırı aracını kullanır, ancak Cloud KMS API'yi kullanarak verileri şifreleyebilirsiniz.

$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file ./1. \
    --ciphertext-file ./1.enc

Bu işlem, şifreli dosya içeriğini içeren 1.enc diskinde yeni bir dosya oluşturur. Veriler Cloud KMS ile şifrelendiğine göre şifrelenmiş dosyayı Cloud Storage paketine yükleyin.

$ gsutil cp ./1.enc gs://${BUCKET_NAME}

Cloud KMS, Google Cloud Identity and Access Management (IAM) ile entegredir. Cloud KMS IAM rolleri büyük ölçüde iki kategoriye ayrılır:

  • Anahtarları yönetme izni
  • Anahtarları kullanma izni

Örneğin, roles/cloudkms.admin rolü, sahibin Anahtar Halkaları, Şifreleme Anahtarları oluşturmasına, IAM politikalarını belirlemesine ve yönetimle ilgili işlemleri gerçekleştirmesine olanak tanır. roles/cloudkms.cryptoKeyEncrypterDecrypter, sahibine şifreleme ve şifre çözme izni verir, ancak yönetim izinlerini içermez.

IAM rolleri, üst kaynakları tarafından devralınır. Bir kullanıcı Google Cloud projesinde roles/cloudkms.admin rolüne sahipse bu projedeki tüm anahtarların yöneticisi olur. Bir Anahtar Halkası'nda roles/cloudkms.admin yazıyorsa söz konusu Anahtar Halkası'ndaki tüm anahtarların yöneticisi söz konusudur. Tek bir Crypto Key'de roles/cloudkms.admin anahtarı varsa yalnızca o anahtarın yöneticisi olurlar.

Bu alıştırma için kimliğinizi kullanın:

$ export MY_IDENTITY=you@gmail.com # or you@example.com

Kimliğe, gcloud komut satırı aracını kullanarak yukarıda oluşturulan Anahtarlık'ta Cloud KMS kaynaklarını yönetme yetkisi atayın:

$ gcloud kms keyrings add-iam-policy-binding "my-keyring" \
    --location "global" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.admin"

roles/cloudkms.admin rolü, anahtarları yönetmek için kullanma iznini içermez. Kimliğinize, enron-emails Şifreleme Anahtarını kullanarak verileri şifreleyip çözme olanağı vermek için:

$ gcloud kms keys add-iam-policy-binding "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

İlk komutun Anahtar Halkası üzerinde roles/cloudkms.admin rolüne sahip olduğunu ve bu anahtarın, tüm alt Şifreleme Anahtarı kaynaklarını içerdiğini unutmayın. İkinci komut, roles/cloudkms.cryptoKeyEncrypterDecrypter komutunu yalnızca enron-emails Şifreleme Anahtarında verir.

Rolleri Cloud Console'daki Cloud KMS kullanıcı arayüzünde de görüntüleyebilir ve atayabilirsiniz.

Tek bir dosyayı şifrelemenin yanı sıra bir dizi dosyayı komut dosyasıyla da şifreleyebilirsiniz. Bu örnekte, allen-p için tüm e-postalar aktarılır, şifrelenir ve elde edilen şifrelenmiş değerler Cloud Storage paketine yüklenir:

DIR="gs://enron_emails/allen-p"
for file in $(gsutil ls ${DIR}/**); do
  ENC_NAME="$(basename ${file}).enc"
  gsutil cat ${file} \
  | \

  gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file - \
    --ciphertext-file - \
    | \

    gsutil -q cp - gs://${BUCKET_NAME}/${ENC_NAME}
    echo "Copied ${ENC_NAME}"
done

Bu işlem, örnek Cloud Storage paketinde belirtilen dizindeki tüm dosyaları tekrarlar, Cloud KMS kullanarak bunları şifreler ve Google Cloud Storage'ınıza yükler.

Komut dosyası tamamlandıktan sonra, şifrelenmiş dosyaları Cloud Storage kullanıcı arayüzünde görüntüleyebilirsiniz. Aşağıdakine benzer bir tablo görürsünüz:

Cloud Audit Logging, Google Cloud hizmetleri tarafından oluşturulan Yönetici Günlüğü ve Veri Erişimi Günlükleri olmak üzere iki günlük akışına sahiptir. Bu günlükler, Google Cloud Platform projeleriniz için kimin, neyi, nerede ve ne zaman sorularının yanıtlarını bulmanıza yardımcı olur.

KMS'deki herhangi bir kaynağın etkinliğini görüntülemek için anahtar halkasını tıklayın ve Etkinliği Görüntüle'yi seçin. Bu işlem sizi Cloud Etkinlik kullanıcı arayüzüne yönlendirir. Burada Anahtar Kelime'nin oluşturulmasını ve yapılan tüm değişiklikleri görebilirsiniz.

Cloud KMS kullanarak verileri başarıyla şifrelediniz ve Cloud Storage'da şifrelenmiş veri depoladınız.

Temizlik

Bu eğitim sırasında oluşturulan kaynakları bırakın. Daha önce oluşturulan Cloud Storage paketini silin:

$ gsutil rm -r gs://${BUCKET_NAME}

Cloud KMS kaynakları silinemez. Ancak, tekrar kullanılamaması için anahtar materyalini yok edebilirsiniz:

$ gcloud kms keys versions destroy "1" \
    --location "global" \
    --key "enron-emails" \
    --keyring "my-keyring"

Ele aldık

  • Cloud KMS izinlerini yönetmek için Cloud IAM'ini kullanma
  • Verileri şifrelemek için Cloud KMS'yi kullanma
  • Şifrelenmiş verileri depolamak için Cloud Storage'ı kullanma
  • Anahtarlar ve anahtarlıklar için tüm etkinlikleri görüntülemek üzere Cloud Audit Logging kullanma

Sonraki adımlar

  • BigQuery gibi bir veritabanında veritabanındaki bir sütunu şifrelemek için Cloud KMS'yi kullanma
  • Cloud KMS anahtarlarınızda otomatik rotasyon programı ayarlama

Daha fazla bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.