Veri Yöneticisi API'si, aşağıdaki anahtar yönetimi hizmetlerini kullanarak verilerin şifrelenmesini destekler:
Bazı kullanım alanları için destek, anahtar yönetim hizmetine (KMS) göre farklılık gösterir:
| Kategori | Kullanım alanı | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| Kitleler | Kitle üyelerini gönderme | ||
| Etkinlikler | Çevrimdışı dönüşümler veya potansiyel müşteriler için gelişmiş dönüşümler | ||
| Etkinlikler | Google Ads hedefi için ek veri kaynağı olarak gönderilen etkinlikler | ||
| Etkinlikler | Google Analytics hedefi için ek veri kaynağı olarak gönderilen etkinlikler |
Google Cloud KMS'yi ayarlama
Şifreleme için Google Cloud KMS kaynaklarını ayarlama adımlarını burada bulabilirsiniz.
Google Cloud komut satırı arayüzünü ayarlama
Google Cloud komut satırı arayüzünü yükleyin ve başlatın.
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.
Cloud KMS'yi etkinleştirmeProjenizi ortamınızda ayarlamak için
gcloud config setkomutunu kullanın. Projenin ortamınızda ayarlanıp ayarlanmadığını kontrol etmek için şu komutu çalıştırın:gcloud config list.projectayarlanmamışsa veya anahtarınız için farklı bir proje kullanmak istiyorsanızgcloud config setkomutunu çalıştırın:gcloud config set project PROJECT_ID
Anahtar oluştur
Daha fazla bilgi için Cloud Key Management Service'e genel bakış başlıklı makaleyi inceleyin.
Anahtarlık oluşturma
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATIONDaha fazla bilgi için Anahtarlık oluşturma başlıklı makaleyi inceleyin.
Anahtarlıkta anahtar oluşturma 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 başlıklı makaleyi inceleyin.
Workload Identity Pool (WIP) oluşturun. Havuzun
locationdeğeriglobalolmalı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-conditionbağı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"Çevrimdışı dönüşümler ve potansiyel müşteriler için gelişmiş dönüşümlerle ilgili etkinlik verilerini şifrelemek istiyorsanız Google hizmet hesabına
datamanager-api@datamanager-ga.iam.gserviceaccount.comanahtar şifre çözücü rolünü verin.# Grants the role to the Google service account. gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --member "serviceAccount:datamanager-api@datamanager-ga.iam.gserviceaccount.com" \ --role "roles/cloudkms.cryptoKeyDecrypter"
Verileri şifrele bölümüne gidin.
AWS KMS'yi ayarlama
Şifreleme için AWS KMS kaynaklarını ayarlama adımlarını aşağıda bulabilirsiniz.
AWS komut satırı arayüzünü ayarlama
- AWS Komut Satırı Arayüzü'nü yükleyin.
Yüklemeyi doğrulamak için aşağıdaki komutu çalıştırın:
aws --versionBaşarılı bir kurulumun çıktısından bir snippet aşağıda verilmiştir:
aws-cli/2.31.12 Python/3.13.7 ...
AWS kullanıcısı oluşturma ve oturum açma
- AWS komut satırı arayüzünü kullanmayla ilgili ön koşulları tamamlayın.
- Bir IAM Identity Center oturumunda oturum açın.
Anahtar oluştur
Simetrik KMS anahtarı (KEK) oluşturun.
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"Çıkışta
KeyMetadataaltındakiArnöğesini inceleyin. Bu Amazon Kaynak Adı'na (ARN) diğer adımlarda ihtiyacınız olacak.AWS_KEY_ARNİsteğe bağlı: İstediğiniz takma ad adını kullanarak bir anahtar takma adı oluşturun.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNTakma ad zorunlu değildir ancak AWS komut satırı arayüzü komutlarını oluşturmak için yararlıdır. Örneğin, anahtar ARN'sini alias kullanarak alabilirsiniz:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
OpenID Connect kimlik sağlayıcısı oluşturma
OpenID Connect (OIDC) kimlik sağlayıcısı oluşturun. Bu adımı AWS hesabı başına yalnızca bir kez gerçekleştirmeniz gerekir.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
Çıktıdaki OIDC sağlayıcı ARN'sini not edin. Bu bilgiye diğer adımlarda ihtiyacınız olacaktır.
AWS_OIDC_PROVIDER_ARN
IAM politikası oluşturma
Aşağıdaki içeriklere sahip
kms-decrypt-policy.jsonadlı bir JSON dosyası oluşturun:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }JSON dosyasını ve seçtiğiniz bir politika adını kullanarak IAM politikası oluşturun.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonÇıktıdaki IAM politikası ARN'sini not edin. Bu bilgiye diğer adımlarda ihtiyacınız olacaktır.
AWS_IAM_POLICY_ARN
IAM rolü oluşturma ve ekleme
Aşağıdaki içeriklere ve önceki adımdaki OIDC sağlayıcı ARN'sine sahip
role-trust-policy.jsonadlı bir JSON dosyası oluşturun:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "AWS_OIDC_PROVIDER_ARN" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "confidentialcomputing.googleapis.com:aud": "cfm-awsresource", "aws:RequestTag/swname": "CONFIDENTIAL_SPACE", "aws:RequestTag/container.signatures.key_ids": "6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9" }, "StringLike": { "aws:RequestTag/confidential_space.support_attributes": "*STABLE*" } } } ] }Seçtiğiniz bir rol adıyla IAM rolü oluşturun.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonIAM politikasına rol politikasını ekleyin.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
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 veya AWS KMS anahtarınız kullanılarak şifrelenir. Şifrelenmiş DEK'yi isteğin bir parçası olarak 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_infoveencodingdeğerlerini ayarlayın.
Son adımı tamamlamak için IngestAudienceMembersRequest veya IngestEventsRequest simgesini değiştirerek verilerinizi şifrelediğinizi belirtin:
encryption_infoalanını ayarlayın.encodingalanını, şifrelenmiş alan değerlerini kodlamak için kullanılan kodlama olarak ayarlayın.
Google Cloud KMS anahtarı kullanılan ve şifreleme ile kodlama alanlarının ayarlandığı bir isteğin snippet'ini aşağıda bulabilirsiniz:
{
...
"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şturup 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.