«میانای برنامهسازی کاربردی مدیر داده» از رمزگذاری دادهها بااستفاده از خدمات مدیریت کلید زیر پشتیبانی میکند:
پشتیبانی از برخی موارد استفاده براساس سرویس مدیریت کلید (KMS) متفاوت است:
| دسته | کاربرد | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| مخاطبان | ارسال اعضای مخاطب | ||
| رویدادها | تبدیلهای آفلاین یا تبدیلهای بهبودیافته برای مشتریان بالقوه | ||
| رویدادها | تبدیلهای فروش فروشگاهی Google Ads | ||
| رویدادها | تبدیلهای چندمنبعی Google Ads | ||
| رویدادها | رویدادهای چندمنبعی Google Analytics |
راهاندازی Google Cloud KMS
در اینجا مراحل راهاندازی منابع Google Cloud KMS برای رمزگذاری آمده است.
راهاندازی میانای خط فرمان Google Cloud
میانای خط فرمان Google Cloud را نصب و مقداردهی اولیه کنید.
برای انتخاب یا ایجاد پروژه جدید Google Cloud و فعال کردن Cloud Key Management Service، روی فعال کردن Cloud KMS کلیک کنید.
فعال کردن Cloud KMSبرای تنظیم پروژه در محیط خود، از فرمان
gcloud config setاستفاده کنید. برای بررسی اینکه آیا پروژه ازقبل در محیط شما تنظیم شده است،gcloud config listرا اجرا کنید.اگر
projectتنظیم نشده است یا میخواهید از پروژه دیگری برای کلیدتان استفاده کنید،gcloud config setرا اجرا کنید:gcloud config set project PROJECT_ID
ایجاد کلید
برای اطلاعات بیشتر، نمای کلی «سرویس مدیریت کلید ابری» را ببینید.
حلقه کلید ایجاد کنید.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATIONبرای اطلاعات بیشتر، ایجاد حلقه کلید را ببینید.
کلیدی در حلقه کلید ایجاد کنید. ROTATION_PERIOD نشاندهنده فاصله زمانی برای چرخش کلید است و NEXT_ROTATION_TIME نشاندهنده تاریخ و زمان وقوع اولین چرخش است.
برای مثال، برای چرخاندن کلید هر ۳۰ روز و انجام اولین چرخش در ۱ هفته، ROTATION_PERIOD را روی
30dو NEXT_ROTATION_TIME را روی$(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"برای اطلاعات بیشتر، ایجاد کلید را ببینید.
ایجاد ارائهدهنده استخر هویت بار کاری
این بخش نمای کوتاهی از «فدراسیون هویت بار کاری» است. برای اطلاعات بیشتر، فدراسیون هویت بار کاری را ببینید.
استخر هویت بار کاری (WIP) ایجاد کنید.
locationاستخر بایدglobalباشد.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"برای اطلاعات بیشتر، مدیریت استخرهای هویت بار کاری و ارائهدهندگان را ببینید.
ارائهدهنده استخر هویت بار کاری ایجاد کنید. گزینه
--attribute-conditionتأیید میکند که تماسگیرنده حساب سرویس مطابقت محرمانه است.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 اعطا کنید.
# 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"اگر میخواهید دادههای رویداد را برای تبدیلهای آفلاین و تبدیلهای بهبودیافته برای مشتریان بالقوه رمزگذاری کنید، نقش رمزگشای کلید را به حساب خدمات 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"
به بخش رمزگذاری دادهها بروید.
راهاندازی AWS KMS
در اینجا مراحل راهاندازی منابع AWS KMS برای رمزگذاری آمده است.
راهاندازی «میانای خط فرمان AWS»
- «میانای خط فرمان AWS» را نصب کنید.
برای درستیسنجی نصب، فرمان زیر را اجرا کنید:
aws --versionدر اینجا گزیدهای از برونداد برای نصب موفق آورده شده است:
aws-cli/2.31.12 Python/3.13.7 ...
راهاندازی کاربر AWS و ورود به سیستم
- پیشنیازهای استفاده از «میانای خط فرمان AWS» را تکمیل کنید.
- به سیستم جلسه IAM Identity Center وارد شوید.
ایجاد کلید
کلید KMS متقارن (KEK) ایجاد کنید.
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"به
ArnزیرKeyMetadataدر برونداد توجه کنید. در مراحل دیگر به این نام منبع Amazon (ARN) نیاز خواهید داشت.AWS_KEY_ARNاختیاری: بااستفاده از نام مستعار دلخواهتان، کلید مستعار ایجاد کنید.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNنام مستعار الزامی نیست، اما برای ساختن فرمانهای «میانای خط فرمان AWS» مفید است. برای مثال، میتوانید ARN کلید را بااستفاده از نام مستعار بازیابی کنید:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
ایجاد ارائهدهنده هویت OpenID Connect
ارائهدهنده هویت OpenID Connect (OIDC) ایجاد کنید. فقط یکبار برای هر حساب AWS نیاز است این مرحله را انجام دهید.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
ARN ارائهدهنده OIDC را از برونداد یادداشت کنید. در مراحل دیگر به این مورد نیاز خواهید داشت.
AWS_OIDC_PROVIDER_ARN
ایجاد خطمشی IAM
فایل JSON بهنام
kms-decrypt-policy.jsonبا محتوای زیر ایجاد کنید:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }بااستفاده از فایل JSON و نام خطمشی انتخابی خود، خطمشی IAM ایجاد کنید.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonARN خطمشی IAM را در برونداد یادداشت کنید. در مراحل دیگر به این مورد نیاز خواهید داشت.
AWS_IAM_POLICY_ARN
ایجاد و پیوست کردن نقش IAM
فایل JSON بهنام
role-trust-policy.jsonبا محتوای زیر و ARN ارائهدهنده OIDC از مرحله قبلی ایجاد کنید:{ "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*" } } } ] }نقش IAM را با نام نقش انتخابی خودتان ایجاد کنید.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonخطمشی نقش را به خطمشی IAM پیوست کنید.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
رمزگذاری دادهها
رمزگذاری در Data Manager API به کلید رمزگذاری داده (DEK) نیاز دارد. «کلید رمزگذاری داده» کلید متقارنی است که برای رمزگذاری دادهها استفاده میکنید. DEK شما بااستفاده از کلید رمزگذاری کلید (KEK) سرویس مدیریت کلید Google Cloud یا AWS رمزگذاری میشود. شما DEK رمزگذاریشده، نشانی وب KEK، و ارائهدهنده WIP را بهعنوان بخشی از درخواست ارسال میکنید.
برای آماده کردن دادهها در درخواست رمزگذاری، همان دستورالعملهای قالببندی و درهمسازی را که برای دادههای رمزگذارینشده استفاده میکنید دنبال کنید.
مقادیر بدون درهمسازی رمزگذاری نشود. برای مثال، region_code،
postal_code، city، یا administrative_area یک
AddressInfo را درهمسازی نکنید.
پساز قالببندی و درهمسازی دادههای هر فیلد، مقدار درهمسازیشده را بااستفاده از مراحل زیر رمزگذاری کنید:
- بایتهای درهمسازی را بااستفاده از کدبندی Base64 کدبندی کنید.
- درهمسازی کدبندیشده با Base64 را بااستفاده از DEK خود رمزگذاری کنید.
- برونداد فرایند رمزگذاری را بااستفاده از کدبندی هگزادسیمال یا Base64 کدبندی کنید.
- از مقدار کدبندیشده برای فیلد استفاده کنید.
encryption_infoوencodingرا در درخواست تنظیم کنید.
برای تکمیل مرحله آخر،
IngestAudienceMembersRequest یا
IngestEventsRequest
را اصلاح کنید تا نشان دهید
دادههایتان را رمزگذاری کردهاید:
- فیلد
encryption_infoرا تنظیم کنید. - فیلد
encodingرا روی کدبندی مورداستفاده برای کدبندی مقادیر فیلد رمزگذاریشده تنظیم کنید.
در اینجا تکهای از درخواست بااستفاده از کلید Google Cloud KMS و با فیلدهای رمزگذاری و کدبندی تنظیمشده آمده است:
{
...
"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"
}
برای استفاده از کتابخانه و
برنامههای کمکی Data Manager API برای ساختن و ارسال درخواست، به
IngestAudienceMembers نمونه کد
برای جاوا یا
ingest_audience_members نمونه کد
برای پایتون مراجعه کنید.
بررسی تشخیص خرابی برای مشکلات رمزگذاری
پساز بارگذاری دادههای رمزگذاریشده، از عیبیابی برای بررسی
هشدارهای مربوط به رمزگذاری، مانند
PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED یا
PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR استفاده کنید. هرگونه هشدار در
تشخیص خرابی را برطرف کنید، درخواستها را دوباره ارسال کنید، و تأیید کنید که تشخیص خرابی دیگر پساز تغییرات شما
هشدار برنمیگرداند.