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

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

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

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

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

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

قبل از شروع

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

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

  2. در محیط توسعه که در آن gcloud CLI را راه اندازی می کنید، دستور 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. نمایش پانل اطلاعات را انتخاب کنید. شما باید نقش ها را در ستون Role/Member ببینید.

    gcloud

    1. برای اجازه دسترسی به حساب سرویس Gemini Code Assist، در یک محیط پوسته، از دستور 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 : شماره پروژه پروژه Google Cloud با فعال بودن Gemini Code Assist.
    2. مرحله قبل را تکرار کنید تا به حسابی که فهرست مخزن کد را با یک CMEK ایجاد می کند، دسترسی پیدا کنید.

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

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

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

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

gcloud

از دستور 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 : نام کلید.

API

  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 را لغو کنید. تغییرات در مجوزها در عرض چند ثانیه ثابت است، بنابراین می توانید اثرات غیرفعال کردن یا از بین بردن یک کلید را مشاهده کنید.