ביצוע רוטציה למפתח

בדף הזה מוסבר איך לסובב מפתח באופן אוטומטי או ידני. מידע נוסף על רוטציית מפתחות זמין במאמר רוטציית מפתחות.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות בשביל להחליף מפתחות, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במפתח:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לרוטציה של מפתחות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי להחליף מפתחות, צריך את ההרשאות הבאות:

  • שינוי גרסת המפתח הראשי: cloudkms.cryptoKeys.update
  • משנים או משביתים את הסיבוב האוטומטי: cloudkms.cryptoKeys.update
  • יוצרים גרסה חדשה של המפתח: cloudkms.cryptoKeyVersions.create
  • משביתים גרסאות ישנות של המפתח: cloudkms.cryptoKeyVersions.update
  • הצפנה מחדש של הנתונים:
    • cloudkms.cryptoKeyVersions.useToDecrypt
    • cloudkms.cryptoKeyVersions.useToEncrypt

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

משתמש יחיד עם תפקיד מותאם אישית שמכיל את כל ההרשאות האלה יכול להחליף מפתחות ולהצפין מחדש את הנתונים בעצמו. משתמשים בתפקיד Cloud KMS Admin ובתפקיד Cloud KMS CryptoKey Encrypter/Decrypter יכולים לעבוד יחד כדי לבצע רוטציה למפתחות ולהצפין מחדש את הנתונים. כשמקצים תפקידים, חשוב לפעול בהתאם לעיקרון של הרשאות מינימליות. פרטים נוספים זמינים במאמר בנושא הרשאות ותפקידים.

כשמבצעים רוטציה למפתח, נתונים שהוצפנו באמצעות גרסאות קודמות של המפתח לא מוצפנים מחדש באופן אוטומטי. מידע נוסף זמין במאמר בנושא פענוח והצפנה מחדש. רוטציה של מפתח לא משביתה או משמידה באופן אוטומטי גרסאות קיימות של המפתח. השמדה של גרסאות מפתח שכבר לא נחוצות עוזרת לצמצם את העלויות.

הגדרת רוטציה אוטומטית

יצירת מפתח חדש עם לוח זמנים מותאם אישית להחלפה

כדי להגדיר רוטציה אוטומטית כשיוצרים מפתח חדש:

המסוף

כשמשתמשים במסוף Google Cloud כדי ליצור מפתח, Cloud KMS מגדיר באופן אוטומטי את תקופת הרוטציה ואת שעת הרוטציה הבאה. אתם יכולים להשתמש בערכי ברירת המחדל או לציין ערכים אחרים.

כדי לציין תקופת רוטציה ושעת התחלה שונות, כשיוצרים את המפתח, אבל לפני שלוחצים על הלחצן יצירה:

  1. עבור תקופת רוטציית מפתחות, בוחרים באחת מהאפשרויות.

  2. בקטע החל מ, בוחרים את התאריך שבו רוצים שהרוטציה האוטומטית הראשונה תתבצע. אפשר להשאיר את הערך שמוגדר כברירת מחדל ב-Starting on כדי שהרוטציה האוטומטית הראשונה תתחיל אחרי תקופה של רוטציית מפתחות אחת ממועד יצירת המפתח.

gcloud

כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose "encryption" \
    --rotation-period ROTATION_PERIOD \
    --next-rotation-time NEXT_ROTATION_TIME

מחליפים את מה שכתוב בשדות הבאים:

  • KEY_NAME: השם של המפתח.
  • KEY_RING: השם של אוסף המפתחות שמכיל את המפתח.
  • LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות.
  • ROTATION_PERIOD: מרווח הזמן לרוטציה של המפתח. לדוגמה, 30d לרוטציה של המפתח כל 30 יום. תקופת הרוטציה צריכה להיות לפחות יום אחד ולכל היותר 100 שנים. מידע נוסף זמין במאמר בנושא CryptoKey.rotationPeriod.
  • NEXT_ROTATION_TIME: חותמת הזמן שבה תסתיים הרוטציה הראשונה. לדוגמה: 2023-01-01T01:02:03. אפשר להשמיט את --next-rotation-time כדי לתזמן את הרוטציה הראשונה לתקופה של רוטציה אחת מהרגע שבו מריצים את הפקודה. מידע נוסף זמין במאמר CryptoKey.nextRotationTime.

כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.

C#

כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ‎ ולהתקין את ה-SDK של Cloud KMS C# ‎.


using Google.Cloud.Kms.V1;
using Google.Protobuf.WellKnownTypes;
using System;

public class CreateKeyRotationScheduleSample
{
    public CryptoKey CreateKeyRotationSchedule(
      string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring",
      string id = "my-key-with-rotation-schedule")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the parent key ring name.
        KeyRingName keyRingName = new KeyRingName