تشفير بيانات المستخدمين

في ما يلي كيفية إرسال بيانات مشفّرة:

إعداد واجهة سطر الأوامر في Google Cloud

  1. ثبِّت واجهة سطر الأوامر في Google Cloud وأعِد ضبطها.

  2. لضمان أنّ مكوّنات gcloud محدَّثة، نفِّذ الأمر التالي.

    gcloud components update
    
  3. لاختيار مشروع جديد أو إنشاء مشروع جديد على Google Cloud وتفعيل خدمة إدارة المفاتيح على السحابة الإلكترونية، انقر على تفعيل Cloud KMS.

    تفعيل Cloud KMS
  4. لضبط مشروعك في بيئتك، استخدِم الأمر gcloud config set. للتحقّق مما إذا كان المشروع قد تم إعداده في بيئتك، شغِّل gcloud config list.

    إذا لم يتم ضبط project، أو إذا أردت استخدام مشروع مختلف لمفتاحك، نفِّذ gcloud config set:

    gcloud config set project PROJECT_ID
    

إنشاء مفتاح

لمزيد من المعلومات، يُرجى الاطّلاع على مستندات "خدمة إدارة المفاتيح".

  1. أنشئ سلسلة مفاتيح.

    gcloud kms keyrings create KEY_RING_NAME \
        --location KEY_RING_LOCATION
    

    لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء سلسلة مفاتيح.

  2. أنشئ مفتاحًا في سلسلة المفاتيح. يشير 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"
    

    لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء مفتاح.

إنشاء موفِّر لمجموعة المعلومات التعريفية

يتضمّن هذا القسم نظرة عامة موجزة على ميزة "اتحاد موفّري هويات المستخدمين". لمزيد من المعلومات، راجِع مستندات Workload Identity Federation.

  1. أنشئ مجموعة معلومات تعريفية للمعالجة (WIP). يجب أن تكون قيمة location للمسبح global.

    gcloud iam workload-identity-pools create WIP_ID \
       --location=global \
       --display-name="WIP_DISPLAY_NAME" \
       --description="WIP_DESCRIPTION"
    

    لمزيد من المعلومات، راجِع المستند إدارة موفّري ومجموعات المعلومات التعريفية.

  2. إنشاء موفِّر لمجموعة المعلومات التعريفية تتحقّق الوسيطة --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"
    
  3. امنح موفّر 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.

بعد تنسيق البيانات لكل حقل وتجزئتها، يجب تشفير القيمة المجزّأة باتّباع الخطوات التالية:

  1. رمِّز وحدات البايت المجزّأة باستخدام ترميز Base64.
  2. شفِّر التجزئة المرمّزة بـ Base64 باستخدام مفتاح تشفير البيانات.
  3. رمِّز الناتج من عملية التشفير باستخدام الترميز السداسي العشري أو Base64.
  4. استخدِم القيمة المشفرة للحقل.
  5. اضبط 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 للغة Java أو عيّنة الرمز ingest_audience_members_with_encryption للغة Python.