Interfejs Data Manager API obsługuje szyfrowanie danych za pomocą tych usług zarządzania kluczami:
Obsługa niektórych przypadków użycia różni się w zależności od usługi zarządzania kluczami (KMS):
| Kategoria | Przypadek użycia | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| Odbiorcy | Wysyłanie informacji o odbiorcach | ||
| Zdarzenia | Konwersje offline lub konwersje rozszerzone dotyczące potencjalnych klientów | ||
| Zdarzenia | Konwersje Google Ads polegające na sprzedaży w sklepie | ||
| Zdarzenia | Zdarzenia wysyłane jako dodatkowe źródło danych do miejsca docelowego Google Ads | ||
| Zdarzenia | Zdarzenia wysyłane jako dodatkowe źródło danych do miejsca docelowego w Google Analytics |
Konfigurowanie Google Cloud KMS
Oto czynności, które należy wykonać, aby skonfigurować zasoby Google Cloud KMS na potrzeby szyfrowania.
Konfigurowanie interfejsu wiersza poleceń Google Cloud
Zainstaluj i zainicjuj interfejs wiersza poleceń Google Cloud.
Aby wybrać lub utworzyć nowy projekt Google Cloud i włączyć Cloud Key Management Service, kliknij Włącz Cloud KMS.
Włącz Cloud KMSAby ustawić projekt w środowisku, użyj polecenia
gcloud config set. Aby sprawdzić, czy projekt jest już skonfigurowany w Twoim środowisku, uruchom poleceniegcloud config list.Jeśli nie ustawiono
projectlub chcesz użyć innego projektu dla klucza, uruchomgcloud config set:gcloud config set project PROJECT_ID
Utwórz klucz
Więcej informacji znajdziesz w omówieniu usługi Cloud Key Management Service.
Utwórz pęk kluczy.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATIONWięcej informacji znajdziesz w artykule Tworzenie pęku kluczy.
Utwórz klucz w pęku kluczy. Symbol ROTATION_PERIOD oznacza interwał rotacji klucza, a symbol NEXT_ROTATION_TIME oznacza datę i godzinę pierwszej rotacji.
Jeśli na przykład chcesz obracać klucz co 30 dni i wykonać pierwszą rotację za tydzień, ustaw ROTATION_PERIOD na
30di NEXT_ROTATION_TIME na$(date --utc --date="next week" --iso-8601=seconds).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"Więcej informacji znajdziesz w artykule Tworzenie klucza.
Tworzenie dostawcy puli tożsamości zadań
Ta sekcja zawiera krótkie omówienie federacji tożsamości zadań. Więcej informacji znajdziesz w artykule Federacja tożsamości zadań.
Utwórz pulę tożsamości zadań. Wartość
locationpuli musi być równaglobal.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"Więcej informacji znajdziesz w artykule Zarządzanie pulami tożsamości zadań i ich dostawcami.
Utwórz dostawcę puli tożsamości zadań. Argument
--attribute-conditionsprawdza, czy elementem wywołującym jest konto usługi poufnego dopasowywania.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"Przyznaj dostawcy puli tożsamości zadań rolę narzędzia do odszyfrowywania kluczy.
# 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"Jeśli chcesz zaszyfrować dane o zdarzeniach na potrzeby konwersji offline i konwersji rozszerzonych dotyczących potencjalnych klientów, przyznaj rolę odszyfrowywania klucza kontu usługi Google
datamanager-api@datamanager-ga.iam.gserviceaccount.com.# 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"
Przejdź do sekcji Szyfrowanie danych.
Konfigurowanie AWS KMS
Oto czynności, które należy wykonać, aby skonfigurować zasoby AWS KMS na potrzeby szyfrowania.
Konfigurowanie interfejsu wiersza poleceń AWS
- Zainstaluj interfejs wiersza poleceń AWS.
Aby sprawdzić instalację, uruchom to polecenie:
aws --versionOto fragment danych wyjściowych po pomyślnej instalacji:
aws-cli/2.31.12 Python/3.13.7 ...
Konfigurowanie użytkownika AWS i logowanie się
- Spełnij wymagania wstępne dotyczące korzystania z interfejsu wiersza poleceń AWS.
- Zaloguj się w sesji IAM Identity Center.
Utwórz klucz
Utwórz symetryczny klucz KMS (KEK).
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"W danych wyjściowych zwróć uwagę na sekcję
Arnw sekcjiKeyMetadata. Ten Amazon Resource Name (ARN) będzie Ci potrzebny w kolejnych krokach.AWS_KEY_ARNOpcjonalnie: utwórz alias klucza, używając wybranej nazwy aliasu.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNAlias nie jest wymagany, ale przydaje się do tworzenia poleceń interfejsu wiersza poleceń AWS. Możesz na przykład pobrać ARN klucza za pomocą aliasu:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
Tworzenie dostawcy tożsamości OpenID Connect
Utwórz dostawcę tożsamości OpenID Connect (OIDC). Wystarczy wykonać ten krok tylko raz na konto AWS.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
Zanotuj wartość ARN dostawcy OIDC z danych wyjściowych. Będzie on potrzebny w innych krokach.
AWS_OIDC_PROVIDER_ARN
Tworzenie zasady uprawnień
Utwórz plik JSON o nazwie
kms-decrypt-policy.jsonz tą zawartością:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }Utwórz zasady IAM, używając pliku JSON i wybranej nazwy zasad.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonZwróć uwagę na ARN zasad IAM w danych wyjściowych. Będzie on potrzebny w innych krokach.
AWS_IAM_POLICY_ARN
Tworzenie i dołączanie roli uprawnień
Utwórz plik JSON o nazwie
role-trust-policy.jsonz tą treścią i identyfikatorem ARN dostawcy OIDC z poprzedniego kroku:{ "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*" } } } ] }Utwórz rolę uprawnień o wybranej przez siebie nazwie.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonDołącz zasadę roli do zasady uprawnień.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
Szyfrowanie danych
Szyfrowanie w interfejsie Data Manager API wymaga klucza szyfrującego dane (DEK). DEK to klucz symetryczny, którego używasz do szyfrowania danych. Klucz DEK jest szyfrowany za pomocą klucza szyfrującego klucze (KEK) z usługi Google Cloud lub AWS KMS. W ramach żądania wysyłasz zaszyfrowany klucz DEK, identyfikator URI klucza KEK i dostawcę WIP.
Aby przygotować dane w żądaniu do zaszyfrowania, postępuj zgodnie z tymi samymi wytycznymi dotyczącymi formatowania i szyfrowania, których używasz w przypadku danych niezaszyfrowanych.
Nie szyfruj wartości niezaszyfrowanych. Na przykład region_code lub postal_code AddressInfo.
Po sformatowaniu i zaszyfrowaniu danych w każdym polu zaszyfruj zaszyfrowaną wartość, wykonując te czynności:
- Zakoduj bajty skrótu za pomocą kodowania Base64.
- Zaszyfruj skrót zakodowany w formacie Base64 za pomocą klucza DEK.
- Zakoduj dane wyjściowe procesu szyfrowania za pomocą kodowania szesnastkowego lub Base64.
- Użyj zakodowanej wartości pola.
- Ustaw w prośbie wartości
encryption_infoiencoding.
Aby wykonać ostatni krok, zmień
IngestAudienceMembersRequest lub
IngestEventsRequest
tak, aby wskazywało, że dane zostały zaszyfrowane:
- Ustaw pole
encryption_info. - Ustaw pole
encodingna kodowanie użyte do zakodowania wartości zaszyfrowanego pola.
Oto fragment żądania z użyciem klucza Google Cloud KMS i ustawionymi polami szyfrowania i kodowania:
{
...
"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"
}
Aby użyć biblioteki i narzędzi interfejsu Data Manager API do tworzenia i wysyłania żądań, zapoznaj się z IngestAudienceMembersprzykładowym kodem w języku Java lub ingest_audience_membersprzykładowym kodem w języku Python.
Sprawdzanie diagnostyki pod kątem problemów z szyfrowaniem
Po przesłaniu zaszyfrowanych danych użyj diagnostyki, aby sprawdzić, czy nie występują ostrzeżenia związane z szyfrowaniem, np. PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED lub PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR. Usuń wszystkie ostrzeżenia w diagnostyce, ponownie wyślij żądania i sprawdź, czy po wprowadzeniu zmian diagnostyka nie zwraca już ostrzeżeń.