تتيح واجهة برمجة التطبيقات Data Manager API تشفير البيانات باستخدام خدمات إدارة المفاتيح التالية:
يختلف دعم بعض حالات الاستخدام حسب خدمة إدارة مفاتيح التشفير (KMS):
| الفئة | حالة الاستخدام | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| شرائح الجمهور | إرسال رسائل إلى أفراد الجمهور | ||
| الأحداث | الإحالات الناجحة غير الإلكترونية أو الإحالات الناجحة المحسّنة للعملاء المحتملين | ||
| الأحداث | الأحداث التي يتم إرسالها كمصدر بيانات إضافي إلى وجهة في "إعلانات Google" | ||
| الأحداث | الأحداث المُرسَلة كمصدر بيانات إضافي إلى وجهة في "إحصاءات Google" |
إعداد Google Cloud KMS
في ما يلي خطوات إعداد موارد Google Cloud KMS للتشفير.
إعداد واجهة سطر الأوامر في Google Cloud
ثبِّت واجهة سطر الأوامر في Google Cloud وأعِد ضبطها.
لاختيار مشروع جديد أو إنشاء مشروع جديد على Google Cloud وتفعيل خدمة إدارة المفاتيح على السحابة الإلكترونية، انقر على تفعيل 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 يومًا وإجراء عملية التغيير الأولى بعد أسبوع واحد، اضبط 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 للتشفير.
إعداد واجهة سطر الأوامر من Amazon Web Services
- تثبيت واجهة سطر الأوامر من AWS
نفِّذ الأمر التالي للتحقّق من عملية التثبيت:
aws --versionفي ما يلي مقتطف من الناتج لعملية تثبيت ناجحة:
aws-cli/2.31.12 Python/3.13.7 ...
إعداد مستخدم AWS وتسجيل الدخول
- أكمِل المتطلبات الأساسية لاستخدام واجهة سطر الأوامر من AWS.
- سجِّل الدخول إلى جلسة "مركز إدارة الهوية في IAM".
إنشاء مفتاح
أنشئ مفتاح 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
إنشاء سياسة إدارة الهوية وإمكانية الوصول
أنشئ ملف JSON باسم
kms-decrypt-policy.jsonيتضمّن المحتوى التالي:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }أنشئ سياسة IAM باستخدام ملف JSON واسم سياسة من اختيارك.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonدوِّنوا رقم تعريف الموارد (ARN) لسياسة إدارة الهوية وإمكانية الوصول في الناتج. ستحتاج إلى هذا الرمز في خطوات أخرى.
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*" } } } ] }أنشئ دورًا في "إدارة الهوية وإمكانية الوصول" مع اسم دور من اختيارك.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonربط سياسة الدور بسياسة "إدارة الهوية وإمكانية الوصول"
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
تشفير البيانات
يتطلّب التشفير في Data Manager API مفتاح تشفير بيانات (DEK). مفتاح تشفير البيانات (DEK) هو مفتاح متماثل تستخدمه لتشفير البيانات. يتم تشفير مفتاح تشفير البيانات باستخدام مفتاح Google Cloud أو AWS KMS. ترسِل مفتاح تشفير البيانات (DEK) المشفّر كجزء من الطلب.
لإعداد البيانات في الطلب للتشفير، اتّبِع إرشادات التنسيق والتجزئة نفسها التي تستخدمها للبيانات غير المشفّرة.
لا تشفِّر القيم غير المجزّأة. على سبيل المثال، region_code أو postal_code
AddressInfo.
بعد تنسيق البيانات لكل حقل وتجزئتها، يجب تشفير القيمة المجزّأة باتّباع الخطوات التالية:
- رمِّز وحدات البايت المجزّأة باستخدام ترميز Base64.
- شفِّر التجزئة المرمّزة بـ Base64 باستخدام مفتاح تشفير البيانات.
- رمِّز الناتج من عملية التشفير باستخدام الترميز السداسي العشري أو 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 لإنشاء طلب وإرساله، راجِع عيّنة الرمز IngestAudienceMembersWithEncryption الخاصة بلغة Java أو عيّنة الرمز ingest_audience_members_with_encryption الخاصة بلغة Python.