שילוב עם Microsoft Entra ID

שילוב של Cloud SQL ל-SQL Server עם Microsoft Entra ID מספק ניהול זהויות והרשאות גישה (IAM) מרכזי למסדי הנתונים שלכם באמצעות דייר Microsoft Entra ID הקיים.

השילוב הזה מציע את היתרונות הבאים:

  • אימות מרכזי. מאפשר למשתמשים ולאפליקציות להיכנס למכונות Cloud SQL ל-SQL Server באמצעות הזהויות הקיימות שלהם ב-Microsoft Entra ID, בלי להזין מחדש סיסמה. היכולת הזו מייתרת את הצורך לנהל פרטי כניסה וסיסמאות נפרדים שספציפיים ל-SQL Server.

  • אבטחה משופרת. עוזרת לכם לאכוף את מדיניות האבטחה הקיימת של הארגון, כמו אימות רב-שלבי (MFA) וכללי גישה מותנית (CA), ברמת מסד הנתונים.

  • ניהול משתמשים פשוט יותר. כשמשביתים או מסירים חשבון של משתמש ב-Microsoft Entra ID, הגישה של המשתמש למסד הנתונים נשללת אוטומטית. היכולת הזו עוזרת לפשט את תהליך הסרת הגישה ואת ביקורות הגישה.

דרישות מוקדמות לשילוב

כדי להשתמש בשילוב של Cloud SQL ל-SQL Server עם Microsoft Entra ID, המופע צריך לעמוד בדרישות הבאות:

  1. צריך שיהיה לכם מופע קיים של SQL Server 2022 או ליצור מופע חדש.

    אימות באמצעות Microsoft Entra ID נתמך רק ב-SQL Server 2022, ולא זמין ב-SQL Server 2017 או ב-SQL Server 2019.

  2. הפעלת אימות של Microsoft Entra ID.

    לפני שמפעילים אימות באמצעות Microsoft Entra ID, צריך לבצע את השלבים הבאים ב-Azure Portal:

    1. איך מוצאים את מזהה הדייר ב-Microsoft Entra
    2. יוצרים רישום חדש של אפליקציה ב-Microsoft Entra ID.

      Cloud SQL ל-SQL Server משתמש באפליקציה הזו כדי לתקשר עם מזהה הדייר של Microsoft Entra. כשיוצרים את האפליקציה, צריך לשים לב למזהה האפליקציה או הלקוח.

    3. נותנים לאפליקציה הרשאות לקרוא נתונים בספרייה:

      1. בוחרים את רישום האפליקציה שיצרתם ולוחצים על API permissions (הרשאות API).
      2. בוחרים באפשרות הוספת הרשאה > Microsoft Graph > הרשאות לאפליקציה.
      3. מעניקים אחת מקבוצות ההרשאות הבאות:
        • אפשרות 1.
          • Directory.Read.All
        • אפשרות 2. ההרשאות ספציפיות יותר.
          • Application.Read.All
          • Group.Read.All
          • User.Read.All
      4. צריך לתת הסכמה של אדמין ברמת הדייר כדי לאפשר לאפליקציה להשתמש בהרשאות האלה.

קישוריות רשת

‫Microsoft Entra ID הוא שירות ציבורי שמשתמש בנקודות קצה ציבוריות לאימות. כדי שהאימות של Microsoft Entra ID יפעל בצורה תקינה, המכונה של Cloud SQL צריכה להיות מסוגלת ליצור חיבורים יוצאים לנקודות הקצה הציבוריות האלה. בקטעים הבאים מפורטים השלבים הבאים, בהתאם להגדרת קישוריות הרשת של המופע:

מופעים עם כתובת IP ציבורית

אם מופע Cloud SQL מוגדר עם כתובת IP ציבורית, יש לו גישה מובנית לאינטרנט.

כדי שהאימות של Microsoft Entra ID יפעל, לא נדרשת הגדרה נוספת של הרשת, אבל כדאי לעיין במגבלות לפני שממשיכים.

מופעים עם כתובת IP פרטית

אם מופעלת במכונת Cloud SQL רק כתובת IP פרטית, אין לה גישה ישירה לאינטרנט. צריך להגדיר נתיב יציאה כדי לאפשר למופע להגיע לנקודות הקצה הציבוריות של הזהויות של מיקרוסופט. הגדרת השילוב של Microsoft Entra ID תלויה באופן שבו המופע הפרטי שלכם מוגדר:

התחברות לשירות פרטי

אם מכונת Cloud SQL מוגדרת לשימוש בכתובת IP פרטית, מומלץ להשתמש ב-Private Service Connect כדי להפעיל את Microsoft Entra ID, כי כך לא צריך לבצע משימות תחזוקה מסוימות כמו:

  • ניהול מכונות וירטואליות של יעד מבוצר (bastion host).
  • תחזוקת מסלולים.
  • יצירת מסלולים רחבים מדי כמו אלה שנדרשים לקישוריות PSA.

לפני שממשיכים, כדאי לעיין במגבלות השימוש ב-Microsoft Entra ID.

כדי להפעיל קישוריות, צריך להגדיר Cloud NAT (תרגום כתובות רשת ב-Cloud) ב-VPC של הלקוח. כך המכונה עם PSC יכולה להשתמש בשער Cloud NAT לתנועה יוצאת לנקודות קצה ציבוריות של מיקרוסופט. אחרי שמפעילים את הניתוב הפנימי, התנועה מוגבלת כך שרק תנועה שקשורה ל-Microsoft Entra ID מגיעה למופע Cloud NAT.

כדי להפעיל את הקישוריות, צריך לבצע את השלבים הבאים:

  1. יצירת מכונה עם PSC.
  2. מגדירים קישוריות יוצאת למכונה של Cloud SQL.
  3. יוצרים שער Cloud NAT.

גישה לשירותים פרטיים

אם מופע Cloud SQL מוגדר לשימוש בכתובת IP פרטית ואתם משתמשים ב-PSA, צריך לבצע את השלבים הבאים כדי לאפשר קישוריות ל-Microsoft Entra ID:

  1. פריסת מכונה וירטואלית של יעד מבוצר (bastion host) בתוך ה-VPC.

    כשיוצרים מכונת וירטואלית של יעד מבוצר (bastion host) בפרויקט, צריך להפעיל את העברת ה-IP. אם יצרתם מכונה וירטואלית של יעד מבוצר (bastion host) שמבוססת על Linux, אתם צריכים להגדיר את המכונה הווירטואלית של היעד המבוצר שיצרתם כדי לבצע העברת IP:

    sudo sysctl net.ipv4.conf.all.forwarding=1
    sudo iptables --table nat --append POSTROUTING --out-interface  ens4 -j MASQUERADE
    
  2. מגדירים את נתיבי הרשת הדרושים כדי לנתב את תעבורת האימות של Microsoft Entra ID מהמכונה של Cloud SQL דרך המכונה המארחת של המכונה הווירטואלית של יעד מבוצר (bastion host), כדי להגיע לאינטרנט.

    מוסיפים את המסלולים המתאימים לכל נקודת קצה של Microsoft Entra ID. אפשר למצוא את טווחי כתובות ה-IP הנוכחיים בקטע AzureActiveDirectory.ServiceEndpoint בקובץ המשאבים Azure IP Ranges and Service Tags.

    gcloud

    לכל טווח כתובות IP של Microsoft Entra ID, יוצרים שתי נתיבים ומחליפים את VM_NAME ואת VM_ZONE בשם ובאזור בפועל של מכונת ה-VM של מארח היעד המבוצר (bastion host):

    gcloud --project=PROJECT_ID compute routes create NAME \
      --network=NETWORK --destination-range=RANGE \
      --priority=998 --next-hop-gateway=default-internet-gateway
    
    gcloud  --project=PROJECT_ID compute routes create NAME \
      --network=NETWORK --destination-range=RANGE --priority=999 \
      --next-hop-instance=VM_NAME --next-hop-instance-zone=VM_ZONE \
      --next-hop-ilb=ILB_VALUE
    

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

    • PROJECT_ID: מזהה הפרויקט שבו נמצא מופע Cloud SQL.
    • NAME: השם של המסלול שרוצים ליצור.
    • NETWORK: השם של הרשת שבה נמצא מופע Cloud SQL.
    • RANGE: טווח כתובות ה-IP שרוצים להשתמש בו.
    • VM_NAME: השם של המכונה הווירטואלית של יעד מבוצר (bastion host) שרוצים לכלול.
    • VM_ZONE: האזור של מכונת ה-VM של יעד מבוצר (bastion host) שרוצים לכלול, למשל us-central1.
    • ILB_VALUE: אופציונלי. השם או כתובת ה-IP של כלל העברה במאזן עומסים פנימי מסוג TCP/UDP. אם הגדרתם מאזן עומסים לפני מכונות ה-VM של יעד מבוצר (bastion host), אז צריך לכלול את הדגל --next-hop-ilb בפקודה הזו.

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

    דוגמה:

    gcloud  --project=my-customer-project compute routes create my-route-1 --network=default --destination-range=20.20.32.0/27 --priority=998 --next-hop-gateway=default-internet-gateway
    
    gcloud  --project=my-customer-project compute routes create my-route-2 --network=default --destination-range=20.20.32.0/27 --priority=999 --next-hop-instance=my-bastion-vm --next-hop-instance-zone=us-central1-c --next-hop-ilb=fr-ilb1
    
  3. משתמשים באותה פקודה מהשלב הקודם כדי להחיל את אותה הגדרה ולאפשר תנועה לבדיקות של ביטול אישורים ב-Microsoft Entra ID. משתמשים בטווחי כתובות ה-IP שמפורטים בכתובת ה-IP של סטטוס האישור של DigiCert.

    אם לא משלימים את השלב הזה, יכול להיות שהאימות של Microsoft Entra ID עדיין יעבוד, אבל יכול להיות שיהיו עיכובים בפתיחת חיבורים חדשים.

ניהול אימות של Microsoft Entra ID

אפשר להפעיל אימות של Entra ID במופע חדש או קיים.

יצירת מופע עם אימות Microsoft Entra ID מופעל

אפשר להפעיל אימות באמצעות Microsoft Entra ID כשיוצרים מופע חדש של Cloud SQL ל-SQL Server. צריך לספק את מזהה הדייר הספציפי של Microsoft Entra ואת מזהה האפליקציה (מזהה הלקוח) של רישום האפליקציה שהגדרתם בפורטל Azure.

מידע נוסף זמין במאמר בנושא דרישות מוקדמות.

gcloud

gcloud beta sql instances create INSTANCE_NAME \
    --database-version=EDITION \
    --tier=TIER \
    --network=NETWORK
    --root-password=PASSWORD
    --entra-id-tenant-id=TENANT_ID \
    --entra-id-application-id=APPLICATION_ID

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

  • INSTANCE_NAME: השם של המכונה שרוצים ליצור.
  • EDITION: מהדורת המכונה שרוצים להשתמש בה, למשל SQLSERVER_2022_STANDARD.
  • TIER: רמת המכונה או סוג המכונה שרוצים להשתמש בהם, למשל db-custom-2-3840.
  • NETWORK: שם הרשת שרוצים להשתמש בה.
  • PASSWORD: הסיסמה של המכונה.
  • TENANT_ID: מזהה הדייר ב-Microsoft Entra.
  • APPLICATION_ID: מזהה האפליקציה או הלקוח.

דוגמה:

gcloud beta sql instances create my-entraid-instance \
    --database-version=SQLSERVER_2022_STANDARD \
    --tier=db-custom-2-3840 \
    --assign-ip \
    --root-password=D61Xv36f!0lE \
    --entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
    --entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd

REST v1

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: השם של הפרויקט שבו תמוקם המכונה שרוצים ליצור.
  • INSTANCE_ID: המזהה של המכונה שרוצים ליצור.
  • EDITION: מהדורת המכונה שרוצים להשתמש בה, למשל SQLSERVER_2022_STANDARD.
  • REGION: האזור שבו רוצים שהמכונה תמוקם, למשל us-central1.
  • PASSWORD: הסיסמה של המכונה.
  • TIER: רמת המכונה או סוג המכונה שרוצים להשתמש בהם, למשל db-custom-2-3840.
  • NETWORK: שם הרשת שרוצים להשתמש בה.
  • TENANT_ID: מזהה הדייר ב-Microsoft Entra.
  • APPLICATION_ID: מזהה האפליקציה או הלקוח.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: השם של הפרויקט שבו תמוקם המכונה שרוצים ליצור.
  • INSTANCE_ID: המזהה של המכונה שרוצים ליצור.
  • EDITION: מהדורת המכונה שרוצים להשתמש בה, למשל SQLSERVER_2022_STANDARD.
  • REGION: האזור שבו רוצים שהמכונה תמוקם, למשל us-central1.
  • PASSWORD: הסיסמה של המכונה.
  • TIER: רמת המכונה או סוג המכונה שרוצים להשתמש בהם, למשל db-custom-2-3840.
  • NETWORK: שם הרשת שרוצים להשתמש בה.
  • TENANT_ID: מזהה הדייר ב-Microsoft Entra.
  • APPLICATION_ID: מזהה האפליקציה או הלקוח.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

ניהול אימות של Microsoft Entra ID במופע קיים

בכל שלב אפשר להפעיל, לשנות או להשבית את ההגדרה של Microsoft Entra ID במופע קיים.

כדי לשנות את ההגדרה של המופע, צריך לתקן את המופע עם הערכים החדשים או שנמחקו של מזהה הדייר ומזהה האפליקציה (הלקוח).

התהליך הזה לא כולל הצטרפות לדומיין או ביטול ההצטרפות לדומיין.

אפשר לעדכן את הערכים של מזהה הדייר ומזהה האפליקציה בלי להפעיל או להשבית את השילוב עם Microsoft Entra ID.

gcloud

gcloud beta sql instances patch INSTANCE_NAME \
    --entra-id-tenant-id="NEW_TENANT_ID" \
    --entra-id-application-id="NEW_APPLICATION_ID"

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

  • INSTANCE_NAME: השם של המכונה שרוצים לשנות.
  • NEW_TENANT_ID: מזהה הדייר החדש ב-Microsoft Entra. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.
  • NEW_APPLICATION_ID: מזהה האפליקציה או הלקוח החדש. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.

דוגמה:

gcloud beta sql instances patch my-existing-instance \
    --entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
    --entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd

REST v1

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: המזהה של הפרויקט שבו נמצאת המכונה שרוצים לשנות.
  • INSTANCE_ID: המזהה של המופע שרוצים לשנות.
  • TENANT_ID: מזהה הדייר ב-Microsoft Entra. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.
  • APPLICATION_ID: מזהה האפליקציה או הלקוח. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: המזהה של הפרויקט שבו נמצאת המכונה שרוצים לשנות.
  • INSTANCE_ID: המזהה של המופע שרוצים לשנות.
  • TENANT_ID: מזהה הדייר ב-Microsoft Entra. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.
  • APPLICATION_ID: מזהה האפליקציה או הלקוח. כדי להשבית את Microsoft Entra ID, משאירים את המחרוזת הזו ריקה.

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

הוספת האישור לאפליקציה

כדי שמזהה Microsoft Entra יאמת את המופע של Cloud SQL ל-SQL Server, צריך להעלות את האישור הציבורי של המופע של Cloud SQL ל-SQL Server לרישום האפליקציה של מזהה Microsoft Entra.

  1. אחרי שמפעילים אימות של Microsoft Entra ID במופע, צריך ליצור אישור ספציפי למופע עבור Microsoft Entra ID.

    gcloud

    gcloud beta sql ssl entraid-certs create --instance=INSTANCE_NAME
    

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

    • INSTANCE_NAME: השם של המופע שעבורו רוצים ליצור אישור.

    REST v1

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate

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

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate

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

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
  2. כדי לקבל את הפרטים של האישור שיצרתם, מאחזרים את פרטי המופע:

    gcloud

    gcloud beta sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"
    

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

    • INSTANCE_NAME: השם של המכונה שמשויכת לאישור שיצרתם.

    REST v1

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates

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

    אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

    הפקודה הזו מדפיסה אישור שאפשר לשמור בקובץ ואז להעלות אותו ל-Azure portal.

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

    לדוגמה, יכול להיות שתקבלו מחרוזת טקסט שדומה לזו:

    Line1\Line2\Line3
    

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

    Line1
    Line2
    Line3
    

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

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'
    

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

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

    REST v1beta4

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates

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

    אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

    הפקודה הזו מדפיסה אישור שאפשר לשמור בקובץ ואז להעלות אותו ל-Azure portal.

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

    לדוגמה, יכול להיות שתקבלו מחרוזת טקסט שדומה לזו:

    Line1\Line2\Line3
    

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

    Line1
    Line2
    Line3
    

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

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'
    

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

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

    1. עוברים אל App Registration בפורטל Azure.
    2. פותחים את Certificates & secrets.
    3. בוחרים באפשרות העלאת אישור. מחפשים את קובץ האישור שאוחזר מהמופע ומוסיפים אותו.
    4. לוחצים על OK.

החלפת האישור של Microsoft Entra ID

עליך לסובב את האישור של Microsoft Entra ID לפני שהוא יפוג. מומלץ להתחיל את התהליך הזה לפחות שבוע לפני תאריך התפוגה המתוזמן:

  1. פועלים לפי השלבים במאמר בנושא הוספת האישור לאפליקציה כדי ליצור אישור חדש ולא פעיל במופע Cloud SQL ל-SQL Server, ואז מעלים אותו ל-Microsoft Entra ID באמצעות Azure Portal. הפעולה הזו לא משפיעה על האישור הפעיל הנוכחי.

  2. מפעילים את האישור החדש במופע Cloud SQL ל-SQL Server, מה שגורם ל-Cloud SQL ל-SQL Server להתחיל להשתמש באישור החדש לכל האימותים החדשים.

    gcloud

    gcloud beta sql ssl entraid-certs rotate --instance=INSTANCE_NAME
    

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

    • INSTANCE_NAME: השם של המופע שמשויך לאישור שרוצים להחליף.

    REST v1

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate

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

    אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

    REST v1beta4

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate

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

    אמור להתקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

  3. המכונה שלכם משתמשת עכשיו באישור החדש.

    אפשר להסיר בבטחה את האישור הישן מרישום האפליקציה ב-Microsoft Entra ID וממופע Cloud SQL ל-SQL Server. מידע נוסף זמין במאמר בנושא הוספה וניהול של פרטי כניסה לאפליקציות ב-Microsoft Entra ID.

ביטול השינויים באישור של Microsoft Entra ID

אם נתקלתם בבעיות אחרי המעבר לאישור חדש, אתם יכולים לחזור לאישור הקודם.

כדי לבצע החזרה לגרסה קודמת, האישור הקודם צריך להיות תקף ומהימן ברישום האפליקציה ב-Microsoft Entra ID.

הפקודות הבאות מפעילות מחדש באופן מיידי את האישור הקודם שצוין במכונה של Cloud SQL ל-SQL Server.

gcloud

gcloud beta sql ssl entraid-certs rollback --instance=INSTANCE_NAME

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

  • INSTANCE_NAME: השם של המכונה שמשויכת לאישור שרוצים לבטל.

REST v1

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו נמצאת המכונה.
  • INSTANCE_ID: המזהה של המופע שעבורו רוצים לבטל את השינוי של האישור.
  • CERTIFICATE_NAME: השם של האישור החדש שרוצים להשתמש בו כדי להחליף את האישור הישן, למשל sha1Fingerprint.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate

תוכן בקשת JSON:

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו נמצאת המכונה.
  • INSTANCE_ID: המזהה של המופע שעבורו רוצים לבטל את השינוי של האישור.
  • CERTIFICATE_NAME: השם של האישור החדש שרוצים להשתמש בו כדי להחליף את האישור הישן, למשל sha1Fingerprint.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate

תוכן בקשת JSON:

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

יצירת הכניסה הראשונית ל-Microsoft Entra ID

אחרי שמפעילים את האימות של Microsoft Entra ID במופע, צריך ליצור את פרטי הכניסה שלכם ל-Microsoft Entra ID.

  1. יצירת הכניסה הראשונה ל-Microsoft Entra ID.

    אי אפשר ליצור את הכניסה הראשונית הזו, שמייצגת משתמש או קבוצה של Microsoft Entra ID, באמצעות T-SQL. צריך ליצור אותו באמצעות ה-CLI של gcloud או Cloud SQL Admin API:

    gcloud

    gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USER
    

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

    • USER_NAME: השם של משתמש Cloud SQL ל-SQL Server שרוצים ליצור.
    • INSTANCE_NAME: השם של המופע שעבורו רוצים ליצור התחברויות ל-Microsoft Entra ID.
    • ENTRAID_USER: שם המשתמש ב-Microsoft Entra ID.

    דוגמה:

    gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USER
    

    REST v1

    לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: מזהה הפרויקט שבו נמצאת המכונה.
    • INSTANCE_ID: המזהה של המופע שרוצים לעדכן.
    • USER_NAME: השם של משתמש Cloud SQL ל-SQL Server שרוצים ליצור.
    • ENTRAID_USER: שם המשתמש ב-Microsoft Entra ID.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users

    תוכן בקשת JSON:

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

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

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    לא כל השדות האפשריים מוצגים בקריאה הבסיסית הבאה ל-API. דוגמה לבקשת JSON מופיעה במאמר בנושא הגדרות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: מזהה הפרויקט שבו נמצאת המכונה.
    • INSTANCE_ID: המזהה של המופע שרוצים לעדכן.
    • USER_NAME: השם של משתמש Cloud SQL ל-SQL Server שרוצים ליצור.
    • ENTRAID_USER: שם המשתמש ב-Microsoft Entra ID.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users

    תוכן בקשת JSON:

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

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

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    אחרי שיוצרים את הכניסה הראשונית באמצעות Microsoft Entra ID, אפשר להתחבר למסד הנתונים בתור המשתמש הזה.

  2. יצירת כניסות עתידיות ל-Microsoft Entra ID.

    אפשר ליצור ולנהל כניסות נוספות ל-Microsoft Entra ID כמו שצוין בשלב הקודם.

    לחלופין, אם אתם מעדיפים להשתמש בכלי אחר כמו SQL Server Management Studio‏ (SSMS), אתם צריכים קודם לתת לפרטי ההתחברות הראשוניים את ההרשאה לנהל פרטי התחברות אחרים:

    GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRole
    

    מחליפים את ENTRAID_USER בשם המשתמש ב-Microsoft Entra ID.

    אחרי שמעניקים הרשאות, אפשר להשתמש בהתחברות הזו כדי ליצור ולנהל התחברויות אחרות ל-Microsoft Entra ID באמצעות פקודות T-SQL רגילות. דוגמה לפקודה:

    CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDER
    

    מחליפים את ENTRAID_USER בשם המשתמש ב-Microsoft Entra ID.

    כדי ליצור משתמשים על סמך פרטי הכניסה של Microsoft Entra ID, או כדי להעניק הרשאות, צריך להשתמש בפקודות T-SQL רגילות.

    מידע נוסף, כולל איך ליצור התחברות באמצעות התחביר המתאים, זמין במאמר הגדרת אימות של Microsoft Entra ל-SQL Server באמצעות רישום אפליקציה.

שיטות מומלצות

כדי לעזור בבידוד הרשאות ולהגדיר טוב יותר את גבולות האבטחה, מומלץ מאוד ליצור רישום ייחודי של אפליקציה ב-Microsoft Entra ID לכל מכונה של Cloud SQL ל-SQL Server. ביטול האישורים של האפליקציה לא ישפיע על מקרים אחרים שלא קשורים.

מידע נוסף מופיע במאמר בנושא איך רושמים אפליקציה ב-Microsoft Entra ID.

פתרון בעיות

בקטעים הבאים מוסבר איך לפתור בעיות שעלולות להתעורר במהלך ניהול השילוב של Microsoft Entra ID.

בעיות בקישוריות לרשת עם מופעים של כתובות IP פרטיות

יכול להיות שתיתקלו באחת מהבעיות הבאות במהלך הגדרת השילוב:

  • פעולות איטיות ליצירת התחברויות ל-Microsoft Entra ID
  • אי אפשר ליצור כניסות ל-Microsoft Entra ID
  • אי אפשר להתחבר למופע באמצעות אימות של Microsoft Entra ID

כדי לפתור את הבעיות האלה, כדאי לבצע את בדיקת הקישוריות הבאה:

  1. בתוך אותו פרויקט ו-VPC, ובאותו אזור שבו נמצאת מכונת Cloud SQL ל-SQL Server, יוצרים מכונה וירטואלית לבדיקה שמוגדרת עם כתובת IP פרטית בלבד. Google Cloud

  2. מתחברים ל-VM שיצרתם באמצעות פרוטוקול שולחן עבודה מרוחק (RDP) או פרוטוקול Secure Shell ‏ (SSH). לאחר מכן, מריצים את הפקודות הבאות כדי לבדוק את הנגישות. אפשר לבצע את השלבים האלה גם במכונות וירטואליות מבוססות Linux וגם במכונות וירטואליות מבוססות Windows:

    curl -4iv login.microsoftonline.com
    curl -4iv graph.microsoft.com
    curl -4iv ocsp.digicert.com
    

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

  • ב-Private Service Connect, מוודאים ש-Cloud NAT מוגדר בצורה נכונה כדי לאפשר גישה לאינטרנט.
  • בגישה לשירותים פרטיים, צריך לאמת את ההגדרה של המסלולים המותאמים אישית ומארחי ה-bastion.
  • צריך לבדוק את כללי חומת האש ב-VPC כדי לוודא שתנועת היציאה לדומיינים האלה לא נחסמת.

הודעות שגיאה נפוצות

יכול להיות שתיתקלו בשגיאת ההתחברות הבאה במהלך אימות של Microsoft Entra ID:

Login failed for user ""

כדי לפתור את הבעיה, צריך לוודא שקיים חשבון כניסה ל-SQL Server עבור המשתמש הזה ב-Microsoft Entra ID.

העברה מ-Microsoft Active Directory

במקרים הבאים, אפשר להפעיל אימות באמצעות Microsoft Entra ID בלי להשבית את האימות הקיים באמצעות Microsoft Active Directory:

רפליקות לקריאה

  • אם מוסיפים העתק לקריאה למופע ראשי שמופעל בו Microsoft Entra ID, העותק לקריאה מוגדר אוטומטית לשימוש ב-Microsoft Entra ID.
  • אם מופעל במופע הראשי Microsoft Entra ID, ואתם משחזרים גיבוי למופע הזה, רפליקת הקריאה שמשויכת אליו מוגדרת אוטומטית לשימוש ב-Microsoft Entra, כי הזהות לא משתנה.

שיבוט מופעים ושחזור למופע אחר

שילוב של Microsoft Entra ID לא מוגדר באופן אוטומטי במופע החדש בתרחישים הבאים:

  • שיבוט של המכונה הראשית.
  • גיבוי ששוחזר למופע שאינו המופע הראשי.

במקרים כאלה, צריך להפעיל ידנית את Microsoft Entra ID במופע החדש ואז להעלות מחדש את האישור שלו לאפליקציית Microsoft Entra ID. הדרישה הזו היא אמצעי אבטחה שעוזר למנוע ממקרים מרובים ולא קשורים להשתמש באותו מזהה אפליקציה.

מגבלות

  • אימות באמצעות Microsoft Entra ID נתמך רק ב-SQL Server 2022, ולא זמין ב-SQL Server 2017 או ב-SQL Server 2019.
  • אם משכפלים מופע או משחזרים גיבוי למופע אחר, השילוב של Microsoft Entra ID לא מוגדר אוטומטית במופע החדש. מידע נוסף זמין במאמר גיבוי ושחזור.
  • אימות באמצעות Microsoft Entra ID לא נתמך במופעים של זמינות גבוהה (HA) שהוגדרו עם כתובת IP ציבורית.
  • אי אפשר להשתמש באימות של Microsoft Entra ID במקרים הבאים: במקרים של מופעים עם PSC שמופעל בהם שכפול לקריאה, ובמקרים של מופעים מקבילים של שכפול לקריאה.
  • מומלץ להימנע מהחלפת אישורים של Microsoft Entra ID במופעים ראשיים שמצורפים אליהם עותקים משוכפלים. אם תבצעו רוטציה של האישור של המופע הראשי, האישורים של העותק לא יעודכנו.
  • אפשר להגדיר שילוב של Microsoft Entra ID עם Cloud SQL ל-SQL Server באמצעות ה-CLI של gcloud או Cloud SQL Admin API. אי אפשר לנהל את השילוב באמצעות Terraform.

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