Şifrelenmiş verileri göndermek için:
Google Cloud komut satırı arayüzünü ayarlama
Google Cloud komut satırı arayüzünü yükleyin ve başlatın.
gcloud
bileşenlerinizin güncel olduğundan emin olmak için aşağıdaki komutu çalıştırın.gcloud components update
Yeni bir Google Cloud projesi seçmek veya oluşturmak ve Cloud Key Management Service'i etkinleştirmek için Cloud KMS'yi etkinleştir'i tıklayın.
Projenizi ortamınızda ayarlamak için
gcloud config set
komutunu kullanın. Projenin ortamınızda ayarlanıp ayarlanmadığını kontrol etmek içingcloud config list
komutunu çalıştırın.project
ayarlanmamışsa veya anahtarınız için farklı bir proje kullanmak istiyorsanızgcloud config set
komutunu çalıştırın:gcloud config set project PROJECT_ID
Anahtar oluştur
Daha fazla bilgi için Key Management Service belgelerini inceleyin.
Anahtarlık oluşturma
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATION
Daha fazla bilgi için Anahtarlık oluşturma başlıklı makaleyi inceleyin.
Anahtarlıkta anahtar oluşturun. ROTATION_PERIOD, anahtarın döndürülme aralığını, NEXT_ROTATION_TIME ise ilk döndürmenin gerçekleşmesi gereken tarihi ve saati gösterir.
Örneğin, anahtarı 30 günde bir döndürmek ve ilk döndürmeyi 1 hafta içinde gerçekleştirmek için ROTATION_PERIOD değerini
30d
, NEXT_ROTATION_TIME değerini ise$(date --utc --date="next week" --iso-8601=seconds)
olarak ayarlayın.gcloud kms keys create KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --purpose "encryption" \ --rotation-period ROTATION_PERIOD \ --next-rotation-time "NEXT_ROTATION_TIME"
Daha fazla bilgi için Anahtar oluşturma başlıklı makaleyi inceleyin.
Workload Identity Pool sağlayıcısı oluşturma
Bu bölümde, Workload Identity Federation'a kısa bir genel bakış sunulmaktadır. Daha fazla bilgi için Workload Identity Federation belgelerine bakın.
Workload Identity Pool (WIP) oluşturun. Havuzun
location
değeriglobal
olmalıdır.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"
Daha fazla bilgi için Workload Identity Pool'ları ve sağlayıcılarını yönetme başlıklı makaleyi inceleyin.
Workload Identity Pool sağlayıcısı oluşturun.
--attribute-condition
bağımsız değişkeni, arayanın gizli eşleşme hizmet hesabı olduğunu doğrular.gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location=global \ --workload-identity-pool=WIP_ID \ --display-name="PROVIDER_DISPLAY_NAME" \ --description="PROVIDER_DESCRIPTION" \ --attribute-mapping="google.subject=assertion.sub,google.groups=[\"PROVIDER_ID\"]" \ --attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' && 'STABLE' in assertion.submods.confidential_space.support_attributes && ['cfm-services@admcloud-cfm-services.iam.gserviceaccount.com'].exists( a, a in assertion.google_service_accounts) && 'ECDSA_P256_SHA256:6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9' in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)" \ --issuer-uri="https://confidentialcomputing.googleapis.com" \ --allowed-audiences="https://sts.googleapis.com"
WIP sağlayıcısına anahtar şifre çözücü rolünü verin.
# Grants the role to the WIP provider. gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --member "principalSet://iam.googleapis.com/projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/group/PROVIDER_ID" \ --role "roles/cloudkms.cryptoKeyDecrypter"
Verileri şifreleme
Veri Yöneticisi API'sinde şifreleme için veri şifreleme anahtarı (DEK) gerekir. DEK, verileri şifrelemek için kullandığınız simetrik bir anahtardır. DEK'niz Google Cloud KMS anahtarınız kullanılarak şifrelenir. Şifrelenmiş DEK'yi istek kapsamında gönderirsiniz.
İsteklerdeki verileri şifrelemeye hazırlamak için şifrelenmemiş verilerde kullandığınız biçimlendirme ve karma oluşturma kurallarını uygulayın.
Karma oluşturma işlemi uygulanmamış değerleri şifrelemeyin. Örneğin, AddressInfo
öğesinin region_code
veya postal_code
.
Her alanın verileri biçimlendirilip karma oluşturma işlemi uygulandıktan sonra, aşağıdaki adımları kullanarak karma oluşturma işlemi uygulanmış değeri şifreleyin:
- Karma baytlarını Base64 kodlaması kullanarak kodlayın.
- Base64 olarak kodlanmış karmayı DEK'nizle şifreleyin.
- Şifreleme işleminden elde edilen çıktıyı onaltılık veya Base64 kodlaması kullanarak kodlayın.
- Alan için kodlanmış değeri kullanın.
- İstek için
encryption_info
veencoding
değerlerini ayarlayın.
Son adımı tamamlamak için IngestAudienceMembersRequest
veya IngestEventsRequest
öğesini değiştirerek verilerinizi şifrelediğinizi belirtin:
encryption_info
alanını ayarlayın.encoding
alanını, şifrelenmiş alan değerlerini kodlamak için kullanılan kodlama olarak ayarlayın.
Şifreleme ve kodlama alanlarının ayarlandığı bir isteğin snippet'i aşağıda verilmiştir:
{
...
"encryptionInfo": {
"gcpWrappedKeyInfo": {
"kekUri": "gcp-kms://projects/PROJECT_ID/locations/KEY_RING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME",
"wipProvider": "projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/providers/PROVIDER_ID",
"keyType": "XCHACHA20_POLY1305",
"encryptedDek": "ENCRYPTED_DEK"
}
},
"encoding": "ENCODING"
}
İstek oluşturmak ve göndermek için Data Manager API kitaplığını ve yardımcı programlarını kullanmak istiyorsanız Java için IngestAudienceMembersWithEncryption
kod örneğine veya Python için ingest_audience_members_with_encryption
kod örneğine bakın.