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 systemu 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 polegające na sprzedaży w sklepie stacjonarnym w Google Ads | ||
| Zdarzenia | Konwersje w Google Ads z wielu źródeł | ||
| Zdarzenia | Zdarzenia Google Analytics z wielu źródeł |
Konfigurowanie Google Cloud KMS
Oto instrukcje konfigurowania zasobów 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 w chmurze Google Cloud i włączyć Cloud Key Management Service, kliknij Włącz Cloud KMS.
Włączanie Cloud KMSAby ustawić projekt w środowisku, użyj polecenia
gcloud config set. Aby sprawdzić, czy projekt jest już ustawiony w Twoim środowisku, uruchomgcloud 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 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. ROTATION_PERIOD wskazuje odstęp czasu, po którym klucz ma zostać poddany rotacji, a NEXT_ROTATION_TIME wskazuje datę i godzinę, kiedy powinna nastąpić pierwsza rotacja.
Aby na przykład wykonywać rotację klucza co 30 dni, a pierwszą rotację przeprowadzić za tydzień, ustaw ROTATION_PERIOD na
30d, a 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 na temat federacji tożsamości zadań.
Utwórz pulę tożsamości zadań.
locationdla puli musi być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"Przypisz rolę deszyfratora kluczy do dostawcy puli tożsamości zadań.
# 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ę deszyfratora kluczy 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 instrukcje konfigurowania zasobów 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 udanej 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ę na sesję 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
Arnw sekcjiKeyMetadata. Ta nazwa zasobu Amazon (ARN) będzie potrzebna w innych 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 jest przydatny 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 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 zasadę uprawnień, używając 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 innych krokach.
AWS_IAM_POLICY_ARN
Tworzenie i dołączanie roli uprawnień
Utwórz plik JSON o nazwie
role-trust-policy.jsonz podaną niżej treścią i nazwą 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) 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 haszowania, które obowiązują w przypadku danych niezaszyfrowanych.
Nie szyfruj wartości niezaszyfrowanych. Nie szyfruj na przykład region_code, postal_code, city ani administrative_area elementu AddressInfo.
Po sformatowaniu i zaszyfrowaniu danych w każdym polu zaszyfruj wartość skrótu, wykonując te czynności:
Zakoduj bajty hasha za pomocą kodowania Base64.
Zaszyfruj skrót zakodowany w formacie Base64 za pomocą klucza DEK. Ponieważ wymagany szyfr to
XCHACHA20_POLY1305, funkcjaencrypt()w Tink wymaga powiązanego parametru danych. Ten parametr musi być pusty (np.b""w Pythonie lubnew byte[0]w Javie). Jeśli przekażesz wartośćnulllub wartość niepustą, interfejs Data Manager API nie będzie mógł odszyfrować danych.Zakoduj dane wyjściowe z procesu szyfrowania za pomocą kodowania szesnastkowego lub Base64.
Użyj zakodowanej wartości pola.
Ustaw
encryption_infoiencodingw żądaniu.
Aby wykonać ostatni krok, zmodyfikuj IngestAudienceMembersRequest lub IngestEventsRequest, aby wskazać, że dane zostały zaszyfrowane:
Ustaw pole
encryption_info.W polu
encodingustaw kodowanie używane do kodowania zaszyfrowanych wartości pól.
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 utworzenia i wysłania żądania, zapoznaj się z przykładowym kodem IngestAudienceMembers w języku Java lub ingest_audience_members w języku Python.
Sprawdzanie diagnostyki pod kątem problemów z szyfrowaniem
Po przesłaniu zaszyfrowanych danych użyj narzędzia diagnostycznego, 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, których dotyczą ostrzeżenia w diagnostyce, ponownie wyślij żądania i sprawdź, czy po wprowadzeniu zmian diagnostyka nie zwraca już ostrzeżeń.