در اینجا نحوه ارسال دادههای رمزگذاریشده در درخواستهای جذب اعضای مخاطب آورده شده است.
رابط خط فرمان Google Cloud را تنظیم کنید
رابط خط فرمان Google Cloud را نصب و مقداردهی اولیه کنید .
برای اطمینان از به روز بودن اجزای
gcloud
، دستور زیر را اجرا کنید.gcloud components update
برای انتخاب یا ایجاد یک پروژه Google Cloud جدید و فعال کردن سرویس مدیریت کلید Cloud ، روی Enable 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 تاریخ و زمانی را نشان میدهد که اولین چرخش باید انجام شود.
به عنوان مثال، برای چرخاندن کلید هر 30 روز و انجام اولین چرخش در 1 هفته، 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"
برای اطلاعات بیشتر، به ایجاد کلید مراجعه کنید.
یک ارائه دهنده استخر هویت حجم کار ایجاد کنید
این بخش مروری کوتاه بر Workload Identity Federation است. برای اطلاعات بیشتر، به مستندات فدراسیون هویت حجم کاری مراجعه کنید.
یک مخزن هویت بار کاری (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"
داده ها را رمزگذاری کنید
رمزگذاری در Data Manager API به یک کلید رمزگذاری داده (DEK) نیاز دارد. DEK یک کلید متقارن است که از آن برای رمزگذاری داده ها استفاده می کنید. DEK شما با استفاده از کلید Google Cloud KMS رمزگذاری می شود. شما DEK رمزگذاری شده را به عنوان بخشی از درخواست ارسال می کنید.
برای آمادهسازی دادهها در درخواست رمزگذاری، همان دستورالعملهای قالببندی و درهمسازی را که برای دادههای رمزگذاری نشده استفاده میکنید، دنبال کنید.
مقادیر هش نشده را رمزگذاری نکنید. برای مثال، region_code
یا postal_code
یک AddressInfo
.
هنگامی که داده های هر فیلد فرمت و هش شد، مقدار هش شده را با استفاده از مراحل زیر رمزگذاری کنید:
- بایت های هش را با استفاده از رمزگذاری Base64 رمزگذاری کنید.
- هش رمزگذاری شده با Base64 را با استفاده از DEK رمزگذاری کنید.
- خروجی فرآیند رمزگذاری را با استفاده از کدگذاری هگز یا Base64 رمزگذاری کنید.
- از مقدار کدگذاری شده برای فیلد استفاده کنید.
-
encryption_info
وencoding
روی درخواست تنظیم کنید.
برای تکمیل آخرین مرحله، IngestAudienceMembersRequest
را تغییر دهید تا نشان دهد داده های خود را رمزگذاری کرده اید:
- فیلد
encryption_info
را تنظیم کنید. - فیلد
encoding
را روی رمزگذاری مورد استفاده برای رمزگذاری مقادیر فیلد رمزگذاری شده تنظیم کنید.
در اینجا قطعه ای از یک درخواست با فیلدهای رمزگذاری و رمزگذاری تنظیم شده است:
{
...
"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 و ابزارهای کاربردی برای ساخت و ارسال درخواست، به نمونه کد IngestAudienceMembersWithEncryption
برای جاوا یا ingest_audience_members_with_encryption
برای Python مراجعه کنید.