יצירת מופע של Confidential VM

אפשר ליצור מכונה וירטואלית חסויה כחלק מיצירת מכונה וירטואלית חדשה ב-Compute Engine.

לפני שמתחילים

לפני שיוצרים מכונת VM חסויה, צריך להגדיר את הסביבה באופן הבא:

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. אופציונלי: כדי להשתמש בדוגמאות ל-CLI של gcloud במדריך הזה:
  9. אופציונלי: כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר אימות לבקשות. מידע נוסף על OAuth 2.0

יצירת מופע

המסוף

כדי ליצור מכונה וירטואלית חסויה באמצעות מסוף Google Cloud :

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על Create instance.

  3. בחלונית Machine configuration:

    1. בוחרים אזור ותחום נתמכים.

    2. בוחרים אחת ממשפחות המכונות הבאות:

      • מטרה כללית

      • אופטימיזציה של מחשוב

      • GPUs

    3. אם בחרתם במשפחת GPUs, בוחרים את סוג ה-GPU המתאים ואת מספר ה-GPU על סמך סוג המכונה הנתמך.

    4. בוחרים סוג מכונה נתמך לטכנולוגיית Confidential Computing שרוצים להשתמש בה.

  4. בתפריט הניווט, לוחצים על אבטחה.

  5. בקטע Confidential VM service (שירות מכונות וירטואליות חסויות), לוחצים על Enable (הפעלה).

  6. בתיבה Select a type (בחירת סוג), בוחרים באחד מהסוגים הבאים של טכנולוגיית Confidential Computing:

    • AMD SEV

    • AMD SEV-SNP

    • Intel TDX

  7. בתיבת הדו-שיח Enable Confidential Computing, בודקים את רשימת ההגדרות שמתעדכנות כשמפעילים את השירות. הם יכולים לכלול את השדות הבאים, אם הם הוגדרו לערכים לא תואמים.

  8. לוחצים על אישור ואז על יצירה.

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

gcloud

כדי ליצור מכונה וירטואלית חסויה באמצעות ה-CLI של gcloud, משתמשים בפקודת המשנה instances create עם הדגל --confidential-compute-type.

gcloud compute instances create INSTANCE_NAME \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --min-cpu-platform="CPU_PLATFORM" \
    --maintenance-policy=MAINTENANCE_POLICY \
    --zone=ZONE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --project=PROJECT_ID

מספקים את הערכים הבאים:

  • INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. בוחרים אחד מהערכים הבאים:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: סוג המכונה הווירטואלית, לדוגמה, n2d-standard-2. סוגי מכונות תקפים למופעי Confidential VM נקבעים על ידי טכנולוגיית Confidential Computing שבחרתם. סוגי מכונות, מעבדים ותחומים

  • CPU_PLATFORM: בוחרים אחד מהערכים הבאים:

    • ‫AMD SEV: ‏AMD Milan (סוגי מכונות C2D או N2D),‏ AMD Genoa (סוגי מכונות C3D) או AMD Turin (סוגי מכונות C4D).

    • ‫AMD SEV-SNP: ‏ AMD Milan (סוגי מכונות N2D).

    • ‫Intel TDX: מסירים את הדגל הזה.

  • MAINTENANCE_POLICY: עבור סוגי מכונות N2D ו-C3D שמשתמשים ב-SEV, צריך להגדיר את הערך הזה ל-MIGRATE כדי לתמוך במיגרציה פעילה. לכל שאר סוגי המכונות, צריך להגדיר את הערך הזה כ-TERMINATE, כי אין תמיכה במיגרציה פעילה.

  • ZONE_NAME: האזור שבו יש תמיכה ב-Confidential VM שבו רוצים ליצור את המכונה.

  • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת.

  • IMAGE_FAMILY_NAME: המשפחה של קובץ אימג' של המערכת שנתמכת על ידי Confidential VM. אם לא מציינים בנוסף את --image, הגרסה האחרונה של התמונה נבחרת.

  • PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

דוגמה

מריצים את הפקודה הבאה כדי ליצור מכונת n2d-standard-2 שנקראת my-instance באזור us-central1-a, באמצעות AMD SEV-SNP:

gcloud compute instances create my-instance \
    --machine-type=n2d-standard-2 \
    --min-cpu-platform="AMD Milan" \
    --zone=us-central1-a \
    --confidential-compute-type=SEV_SNP \
    --maintenance-policy=TERMINATE \
    --image-project=ubuntu-os-cloud \
    --image-family=ubuntu-2404-lts-amd64

תשובה

תגובה לבקשת יצירה נראית בערך כך:

Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance].
NAME: my-instance
ZONE: us-central1-a
MACHINE_TYPE: n2d-standard-2
PREEMPTIBLE:
INTERNAL_IP: 0.0.0.0
EXTERNAL_IP: 0.0.0.0
STATUS: RUNNING

REST

כדי ליצור מכונה וירטואלית חסויה, צריך לשלוח בקשת POST עם תוכן הבקשה המתאים.

שיטת ה-HTTP וכתובת ה-URL:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "machineType": "zones/ZONE_NAME/machineTypes/MACHINE_TYPE_NAME",
  "minCpuPlatform": "CPU_PLATFORM",
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "onHostMaintenance": "MAINTENANCE_POLICY",
    "preemptible": false
  },
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ]
}

מספקים את הערכים הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

  • ZONE_NAME: האזור שבו יש תמיכה ב-Confidential VM שבו רוצים ליצור את המכונה.

  • INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. בוחרים אחד מהערכים הבאים:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME: סוג המכונה הווירטואלית, לדוגמה, n2d-standard-2. סוגי מכונות תקפים למופעי Confidential VM נקבעים על ידי טכנולוגיית Confidential Computing שבחרתם. סוגי מכונות, מעבדים ותחומים

  • CPU_PLATFORM: בוחרים אחד מהערכים הבאים:

    • ‫AMD SEV: ‏AMD Milan (סוגי מכונות C2D או N2D),‏ AMD Genoa (סוגי מכונות C3D) או AMD Turin (סוגי מכונות C4D).

    • ‫AMD SEV-SNP: ‏ AMD Milan (סוגי מכונות N2D).

    • ב-Intel TDX: מסירים את צמד המפתח/ערך הזה.

  • MAINTENANCE_POLICY: עבור סוגי מכונות N2D שמשתמשים ב-SEV, צריך להגדיר את הערך הזה ל-MIGRATE כדי לתמוך במיגרציה פעילה. לכל שאר סוגי המכונות, צריך להגדיר את הערך הזה כ-TERMINATE, כי הן לא תומכות במיגרציה פעילה.

  • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת.

  • IMAGE_FAMILY_NAME: המשפחה של קובץ אימג' של המערכת שנתמכת על ידי Confidential VM. אם לא מציינים בנוסף את --image, הגרסה האחרונה של התמונה נבחרת.

דוגמה

מריצים אחת מהפקודות הבאות כדי ליצור מופע n2d-standard-2 בשם my-instance באזור us-central1-a, בפרויקט my-project, באמצעות AMD SEV-SNP:

‏Curl (Linux,‏ macOS או Cloud Shell)

curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
            "name": "my-instance",
            "confidentialInstanceConfig": {
              "confidentialInstanceType": "SEV_SNP"
            },
            "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
            "minCpuPlatform": "AMD Milan",
            "scheduling": {
              "automaticRestart": true,
              "nodeAffinities": [],
              "onHostMaintenance": "TERMINATE",
              "preemptible": false
            },
            "disks": [
              {
                "boot": true,
                "initializeParams": {
                  "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
                }
              }
            ],
            "networkInterfaces": [
              {
                "nicType": "gVNIC"
              }
            ]
          }' \
      https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

‎PowerShell (Windows)

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
$body = @"
{
  "name": "my-instance",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "SEV_SNP"
  },
  "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
  "minCpuPlatform": "AMD Milan",
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "onHostMaintenance": "TERMINATE",
    "preemptible": false
  }
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ]
}
"@
Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://compute.googleapis.com/compute/projects/my-project/zones/us-central1-a/instances" | Select-Object -Expand Content

תשובה

תגובה לבקשת יצירה נראית בערך כך:

{
  "kind": "compute#operation",
  "id": "0000000000000000000",
  "name": "operation-0000000000000-0000000000000-00000000-00000000",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance",
  "targetId": "0000000000000000000",
  "status": "RUNNING",
  "user": "alex@example.com",
  "progress": 0,
  "insertTime": "2024-09-29T18:06:52.174-07:00",
  "startTime": "2024-09-29T18:06:52.175-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-0000000000000-0000000000000-00000000-00000000"
}

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

GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/operations/OPERATION_ID

הפעלת רוחב פס גבוה יותר ברשת לסוגי מכונות ספציפיים

סוגי מכונות גדולים יותר תומכים ברשתות עם רוחב פס גבוה. כשבוחרים הגדרת רוחב פס של רשת Tier_1, רוחב הפס של העברת הנתונים היוצאים גדל מ-32 Gbps (ברירת המחדל) ל-50 עד 200 Gbps, בהתאם לסוג המכונה. כדי להשיג את מהירויות רוחב הפס הגבוהות יותר של Tier_1, המופע צריך להריץ את מנהל ההתקן של הרשת הווירטואלית gVNIC. מידע נוסף על הגדרת מכונה וירטואלית עם רוחב פס גבוה יותר

המאמרים הבאים

איך משתמשים ב-Cloud Monitoring כדי לאמת את מופעי Confidential VM