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 kont należących do grupy odbiorców | ||
| 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 w 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 do szyfrowania.
Konfigurowanie interfejsu wiersza poleceń Google Cloud
Zainstaluj i zainicjuj interfejs wiersza poleceń Google Cloud.
Aby wybrać lub utworzyć nowy projekt w chmurze Google Cloud i włączyć Cloud Key Management Service, kliknij Włącz Cloud KMS.
Włącz Cloud KMSAby ustawić projekt w środowisku, użyj
gcloud config setpolecenia. Aby sprawdzić, czy projekt jest już ustawiony w Twoim środowisku, uruchom poleceniegcloud config list.Jeśli nie ustawiono żadnego
projectlub chcesz użyć innego projektu na potrzeby klucza, uruchom poleceniegcloud config set:gcloud config set project PROJECT_ID
Tworzenie klucza
Więcej informacji znajdziesz w artykule Omówienie 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. Wartość ROTATION_PERIOD wskazuje interwał rotacji klucza, a wartość NEXT_ROTATION_TIME wskazuje datę i godzinę, kiedy ma nastąpić pierwsza rotacja.
Aby na przykład rotować klucz co 30 dni i przeprowadzić pierwszą rotację za tydzień, ustaw wartość ROTATION_PERIOD na
30d, a wartość 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ń.
locationpuli musi mieć wartośćglobal.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ę dekryptora klucza.
# 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 szyfrować dane zdarzeń na potrzeby konwersji offline i konwersji rozszerzonych dotyczących potencjalnych klientów, przyznaj rolę dekryptora 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 do szyfrowania.
Konfigurowanie interfejsu wiersza poleceń AWS
- Zainstaluj interfejs wiersza poleceń AWS.
Aby sprawdzić instalację, uruchom to polecenie:
aws --versionOto fragment danych wyjściowych w przypadku 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ę do sesji IAM Identity Center.
Tworzenie klucza
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"Zanotuj wartość
Arnw sekcjiKeyMetadataw danych wyjściowych. Ten Amazon Resource Name (ARN) będzie potrzebny w kolejnych krokach.AWS_KEY_ARNOpcjonalnie: utwórz alias klucza, używając nazwy aliasu wybranej przez siebie.
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. Na przykład możesz 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). Ten krok wystarczy wykonać 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 ARN dostawcy OIDC z danych wyjściowych. Będzie on potrzebny w kolejnych 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 zasadę uprawnień za pomocą pliku JSON i wybranej nazwy zasady.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonZanotuj ARN zasady uprawnień w danych wyjściowych. Będzie on potrzebny w kolejnych krokach.
AWS_IAM_POLICY_ARN
Tworzenie i dołączanie roli uprawnień
Utwórz plik JSON o nazwie
role-trust-policy.jsonz tą zawartością i 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ń z wybraną nazwą roli.
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. Twój DEK jest szyfrowany za pomocą klucza szyfrującego klucze (KEK) Google Cloud lub AWS KMS. W ramach żądania wysyłasz zaszyfrowany klucz DEK, identyfikator URI klucza KEK i dostawcę puli tożsamości zadań.
Aby przygotować dane w żądaniu do szyfrowania, 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
w AddressInfo.
Gdy dane w każdym polu zostaną sformatowane i zaszyfrowane, 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 w polu.
- Ustaw w żądaniu wartości
encryption_infoiencoding.
Aby wykonać ostatni krok, zmodyfikuj
IngestAudienceMembersRequest lub
IngestEventsRequest
, aby wskazać, że dane zostały zaszyfrowane:
- Ustaw wartość pola
encryption_info. - Ustaw wartość pola
encodingna kodowanie używane do kodowania zaszyfrowanych wartości pól.
Oto fragment żądania używającego klucza Google Cloud KMS z 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
żądania, zapoznaj się z przykładowym kodem IngestAudienceMembers w języku
Java
lub przykładowym kodem ingest_audience_members 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 ma ostrzeżeń związanych z szyfrowaniem, takich jak
PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED lub
PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR. Rozwiąż problemy wskazane w ostrzeżeniach diagnostycznych, ponownie wyślij żądania i sprawdź, czy po wprowadzeniu zmian diagnostyka nie zwraca już ostrzeżeń.