داده ها را با کلیدهای رمزگذاری مدیریت شده توسط مشتری رمزگذاری کنید

این سند نحوه استفاده از کلیدهای رمزگذاری مدیریت‌شده توسط مشتری (CMEK) را برای رمزگذاری و کنترل داده‌های در حال استراحت در یک سرویس ابری از طریق سرویس مدیریت کلید ابری نشان می‌دهد. CMEK با سفارشی‌سازی کد برای Gemini Code Assist یکپارچه شده است. Gemini Code Assist از استفاده از کلیدهای Cloud EKM پشتیبانی نمی‌کند.

در این سند، موارد زیر را انجام می‌دهید:

  • یاد بگیرید که چگونه یک CMEK ایجاد کنید.
  • به حساب سرویس Gemini Code Assist مجوز بدهید.
  • با استفاده از CMEK یک فهرست مخزن کد ایجاد کنید.
  • دسترسی به مخزن CMEK را حذف کنید.

به طور پیش‌فرض، Gemini برای Google Cloud محتوای مشتری را در حالت استراحت رمزگذاری می‌کند . Gemini رمزگذاری را برای شما و بدون هیچ اقدام اضافی از جانب شما انجام می‌دهد. این گزینه رمزگذاری پیش‌فرض گوگل نامیده می‌شود.

پس از تنظیم منابع خود با CMEKها، تجربه دسترسی به منابع Gemini شما مشابه استفاده از رمزگذاری پیش‌فرض گوگل خواهد بود. برای اطلاعات بیشتر در مورد گزینه‌های رمزگذاری، به کلیدهای رمزگذاری مدیریت‌شده توسط مشتری (CMEK) مراجعه کنید.

قبل از اینکه شروع کنی

  1. در یکی از محیط‌های توسعه زیر، رابط خط فرمان gcloud را راه‌اندازی کنید:

    اگر از یک ارائه‌دهنده هویت خارجی (IdP) استفاده می‌کنید، ابتدا باید با هویت فدرال خود وارد رابط خط فرمان gcloud شوید .

  2. در محیط توسعه‌ای که رابط خط فرمان gcloud را تنظیم می‌کنید، دستور gcloud components update را اجرا کنید تا مطمئن شوید که تمام اجزای نصب شده gcloud را به آخرین نسخه به‌روزرسانی کرده‌اید.

    gcloud components update
    

ایجاد یک CMEK و اعطای مجوزها

برای ایجاد یک CMEK و اعطای مجوزهای حساب کاربری سرویس Gemini Code Assist روی کلید، مراحل زیر را انجام دهید:

  1. در پروژه Google Cloud که می‌خواهید کلیدهای خود را مدیریت کنید، موارد زیر را انجام دهید:

    1. رابط برنامه‌نویسی کاربردی سرویس مدیریت کلید ابری (Cloud Key Management Service API) را فعال کنید .

    2. حلقه کلید و کلید را مستقیماً در Cloud KMS ایجاد کنید.

  2. نقش IAM رمزنگاری/رمزگشای CryptoKey ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) را به حساب سرویس Gemini Code Assist اعطا کنید. این مجوز را به کلیدی که ایجاد کرده‌اید، اعطا کنید.

    کنسول

    1. به مدیریت کلید بروید.

      به مدیریت کلید بروید

    2. کلیدی که ایجاد کرده‌اید را انتخاب کنید.

    3. دسترسی به حساب سرویس Gemini Code Assist را اعطا کنید:

      1. روی افزودن مدیر اصلی کلیک کنید.
      2. حساب سرویس Gemini Code Assist را اضافه کنید. حساب سرویس service- PROJECT_NUMBER @gcp-sa-cloudaicompanions. ، که در آن PROJECT_NUMBER شماره پروژه Google Cloud است که Gemini Code Assist در آن فعال است.
      3. در بخش «انتخاب نقش» ، Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter را انتخاب کنید.
      4. روی ذخیره کلیک کنید.
    4. مرحله قبل را برای اعطای دسترسی به حسابی که ایندکس مخزن کد را با CMEK ایجاد می‌کند، تکرار کنید.

    5. به صفحه مدیریت کلید برگردید و دوباره کلید را انتخاب کنید.

    6. نمایش پنل اطلاعات را انتخاب کنید. باید نقش‌ها را در ستون نقش/عضو ببینید.

    جی‌کلاود

    1. برای اعطای دسترسی به حساب سرویس Gemini Code Assist، در یک محیط shell، از دستور kms keys add-iam-policy-binding استفاده کنید:

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion." \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      موارد زیر را جایگزین کنید:

      • KEY_NAME : نام کلید.
      • PROJECT_ID : شناسه پروژه‌ای که حاوی کلید است.
      • LOCATION : مکان کلیدی.
      • KEYRING_NAME : نام حلقه کلید.
      • PROJECT_NUMBER : شماره پروژه گوگل کلود با فعال بودن Gemini Code Assist.
    2. مرحله قبل را برای اعطای دسترسی به حسابی که ایندکس مخزن کد را با CMEK ایجاد می‌کند، تکرار کنید.

    برای اطلاعات بیشتر در مورد این دستور، به مستندات gcloud kms keys add-iam-policy-binding مراجعه کنید.

اکنون می‌توانید با استفاده از API، یک فهرست مخزن کد با CMEK ایجاد کنید و کلید مورد استفاده برای رمزگذاری را مشخص کنید.

ایجاد یک فهرست مخزن کد با CMEK

برای ایجاد یک مخزن جدید که دارای حفاظت CMEK است، یکی از موارد زیر را انجام دهید:

جی‌کلاود

از دستور gemini code-repository-indexes create استفاده کنید:

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

موارد زیر را جایگزین کنید:

  • CODE_REPOSITORY_INDEX_NAME : نام اندیس مخزن کد جدیدی که ایجاد خواهید کرد.
  • LOCATION : مکان کلیدی.
  • KEY_PROJECT_ID : شناسه کلیدی پروژه.
  • KEYRING_NAME : نام حلقه کلید.
  • KEY_NAME : نام کلید.

رابط برنامه‌نویسی کاربردی

  1. یک فایل JSON ایجاد کنید که شامل اطلاعات زیر باشد:

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    موارد زیر را جایگزین کنید:

    • KEY_PROJECT_ID : شناسه کلیدی پروژه
    • KEY_LOCATION : مکان کلید
    • KEYRING_NAME : نام حلقه کلید
    • KEY_NAME : نام کلید
  2. از یک دستور cURL برای فراخوانی متد projects.locations.codeRepositoryIndexes.create استفاده کنید:

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    موارد زیر را جایگزین کنید:

    • JSON_FILE_NAME : مسیر فایل JSON که در مرحله قبل ایجاد کردید.
    • PROJECT_ID : شناسه پروژه‌ای که قرار است مخزن در آن ایجاد شود.
    • KEY_LOCATION : مکانی که مخزن در آن ایجاد می‌شود، که باید با مکانی که CMEK در آن وجود دارد، مطابقت داشته باشد.
    • CODE_REPOSITORY_INDEX_NAME : نام اندیس مخزن کد جدیدی که ایجاد خواهید کرد. برای مثال، zg-btf-0001 .

پاسخ، مجموعه‌ای از ورودی‌های لاگ را برمی‌گرداند.

حذف دسترسی به مخزن CMEK

چندین روش برای حذف دسترسی به مخزن رمزگذاری شده با CMEK وجود دارد:

توصیه می‌کنیم قبل از غیرفعال کردن یا از بین بردن یک کلید، مجوزهای حساب سرویس Gemini Code Assist را لغو کنید. تغییرات در مجوزها ظرف چند ثانیه اعمال می‌شوند، بنابراین می‌توانید تأثیرات غیرفعال کردن یا از بین بردن یک کلید را مشاهده کنید.