در اینجا نحوه ارسال داده های رمزگذاری شده آورده شده است.
رابط خط فرمان Google Cloud را تنظیم کنید
رابط خط فرمان Google Cloud را نصب و مقداردهی اولیه کنید .
برای انتخاب یا ایجاد یک پروژه 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"اگر میخواهید دادههای رویداد را برای تبدیلهای آفلاین و تبدیلهای پیشرفته برای سرنخها رمزگذاری کنید، نقش رمزگشای کلید را به حساب سرویس 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"
داده ها را رمزگذاری کنید
رمزگذاری در Data Manager API به یک کلید رمزگذاری داده (DEK) نیاز دارد. DEK یک کلید متقارن است که از آن برای رمزگذاری داده ها استفاده می کنید. DEK شما با استفاده از کلید Google Cloud KMS رمزگذاری می شود. شما DEK رمزگذاری شده را به عنوان بخشی از درخواست ارسال می کنید.
برای آمادهسازی دادهها در درخواست رمزگذاری، همان دستورالعملهای قالببندی و درهمسازی را که برای دادههای رمزگذاری نشده استفاده میکنید، دنبال کنید.
مقادیر هش نشده را رمزگذاری نکنید. برای مثال، region_code یا postal_code یک AddressInfo .
هنگامی که داده های هر فیلد فرمت و هش شد، مقدار هش شده را با استفاده از مراحل زیر رمزگذاری کنید:
- بایت های هش را با استفاده از رمزگذاری Base64 رمزگذاری کنید.
- هش رمزگذاری شده با Base64 را با استفاده از DEK رمزگذاری کنید.
- خروجی فرآیند رمزگذاری را با استفاده از کدگذاری هگز یا Base64 رمزگذاری کنید.
- از مقدار کدگذاری شده برای فیلد استفاده کنید.
-
encryption_infoوencodingروی درخواست تنظیم کنید.
برای تکمیل آخرین مرحله، IngestAudienceMembersRequest یا IngestEventsRequest را تغییر دهید تا نشان دهد داده های خود را رمزگذاری کرده اید:
- فیلد
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 مراجعه کنید.