שימוש ב-Microsoft Active Directory (CMAD) בניהול הלקוח

בדף הזה נסביר איך להשתמש ב-Microsoft Active Directory בניהול הלקוח (שנקרא גם AD בניהול הלקוח (CMAD)):

  • שילוב של Cloud SQL ל-SQL Server עם CMAD.
  • מתחברים למופע באמצעות משתמש Active Directory ‏ (AD).

מכונת Cloud SQL שמשולבת עם CMAD תומכת באימות Windows בנוסף לאימות SQL.

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

יצירת מופע עם אימות Windows

אפשר לבצע שילוב עם CMAD במהלך יצירת מופע, על ידי הפעלת אימות Windows עבור המופע. כדי לבצע שילוב, בוחרים דומיין שהמופע יצטרף אליו. אם ההצטרפות לדומיין נכשלת, יצירת המופע נכשלת.

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

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

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

gcloud

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

  gcloud sql instances create INSTANCE_NAME \
  --database-version=DATABASE_VERSION \
  --root-password=PASSWORD \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUD_OU,DC=DC1,DC=DC2" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2 \
  --cpu=CPU \
  --memory=MEMORY  \
  --network=NETWORK

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

  • ‫INSTANCE_NAME: השם של מופע Cloud SQL ל-SQL Server שרוצים ליצור.
  • ‫DATABASE_VERSION: גרסת מסד הנתונים שרוצים להשתמש בה, למשל SQLSERVER_2019_STANDARD.
  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: מזהה הפרויקט שבו תמוקם המכונה.
  • ‫SECRET_NAME: הוא הסוד שבו רוצים להשתמש.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.
  • ‫CPU: כמות המעבד שרוצים להקצות למופע.
  • ‫MEMORY: נפח הזיכרון שרוצים להקצות למכונה.
  • ‫NETWORK: השם של הרשת שאליה המכונה תתחבר, למשל projects/my-gcp-project-123/global/networks/my-production-vpc.

REST v1

כדי ליצור מכונה עם CMAD, משתמשים בבקשת POST עם ה-method‏ users:insert.

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

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

  • ‫DATABASE_VERSION: גרסת מסד הנתונים שרוצים להשתמש בה, למשל SQLSERVER_2019_STANDARD.
  • ‫INSTANCE_NAME: השם של מופע Cloud SQL ל-SQL Server שרוצים ליצור.
  • ‫REGION: האזור שבו רוצים שהמכונה תמוקם, למשל us-central1.
  • ‫PASSWORD: הסיסמה של המכונה.
  • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה עבור המופע, למשל db-n1-standard-8.
  • ‫NETWORK: השם של הרשת שאליה המכונה תתחבר, למשל projects/my-gcp-project-123/global/networks/my-production-vpc.
  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: מזהה הפרויקט שבו תמוקם המכונה.
  • ‫SECRET_NAME: הוא הסוד שבו רוצים להשתמש.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

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

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

תוכן בקשת JSON:

{
   "databaseVersion":"DATABASE_VERSION",
   "name":"INSTANCE_NAME",
   "region":"REGION",
   "rootPassword":"PASSWORD",
   "settings":{
      "tier":"MACHINE-TYPE",
      "ipConfiguration":{
         "privateNetwork":"NETWORK"
      },
      "activeDirectoryConfig":{
         "domain":"DOMAIN"
         "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
         "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
         "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
         "dns_servers":"IP1,IP2"
      }
   }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

כדי ליצור מכונה עם CMAD, משתמשים בבקשת POST עם ה-method‏ users:insert.

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

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

  • ‫DATABASE_VERSION: גרסת מסד הנתונים שרוצים להשתמש בה, למשל SQLSERVER_2019_STANDARD.
  • ‫INSTANCE_NAME: השם של מופע Cloud SQL ל-SQL Server שרוצים ליצור.
  • ‫REGION: האזור שבו רוצים שהמכונה תמוקם, למשל us-central1.
  • ‫PASSWORD: הסיסמה של המכונה.
  • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה עבור המופע, למשל db-n1-standard-8.
  • ‫NETWORK: השם של הרשת שאליה המכונה תתחבר, למשל projects/my-gcp-project-123/global/networks/my-production-vpc.
  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: מזהה הפרויקט שבו תמוקם המכונה.
  • ‫SECRET_NAME: הוא הסוד שבו רוצים להשתמש.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

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

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

תוכן בקשת JSON:

{
   "databaseVersion":"DATABASE_VERSION",
   "name":"INSTANCE_NAME",
   "region":"REGION",
   "rootPassword":"PASSWORD",
   "settings":{
      "tier":"MACHINE-TYPE",
      "ipConfiguration":{
         "privateNetwork":"NETWORK"
      },
      "activeDirectoryConfig":{
         "domain":"DOMAIN"
         "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
         "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
         "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
         "dns_servers":"IP1,IP2"
      }
   }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

עדכון מכונה עם אימות Windows

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

מידע כללי על עדכון מכונה זמין במאמר עריכת מכונות.

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

gcloud

זוהי דוגמה לפקודה לעדכון של מכונה קיימת. הפקודה מוסיפה או מחליפה דומיין. מעבירים את הערך --active-directory-domain=DOMAIN לפקודה, באופן הבא:

  gcloud sql instances patch INSTANCE_NAME \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2

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

  • ‫INSTANCE_NAME: השם של מופע Cloud SQL ל-SQL Server שרוצים לעדכן.
  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: הוא מזהה הפרויקט שבו נמצאת המכונה.
  • ‫SECRET_NAME: הסוד שמשויך למכונה.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, לדוגמה 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

REST v1

כדי לעדכן מופע של CMAD, משתמשים בבקשת PATCH עם השיטה users:insert.

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

  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: הוא מזהה הפרויקט שבו נמצאת המכונה.
  • ‫SECRET_NAME: הסוד שמשויך למכונה.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

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

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

תוכן בקשת JSON:

{
    "settings":{
        "activeDirectoryConfig":{
          "domain":"DOMAIN"
          "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
          "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
          "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
          "dns_servers":"IP1,IP2"
        }
    }
}

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

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

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

REST v1beta4

כדי לעדכן מופע של CMAD, משתמשים בבקשת PATCH עם השיטה users:insert.

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

  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: הוא מזהה הפרויקט שבו נמצאת המכונה.
  • ‫SECRET_NAME: הסוד שמשויך למכונה.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

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

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

תוכן בקשת JSON:

{
    "settings":{
        "activeDirectoryConfig":{
          "domain":"DOMAIN"
          "mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
          "organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
          "admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
          "dns_servers":"IP1,IP2"
        }
    }
}

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

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

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

העברה בין שירות מנוהל ל-Microsoft Active Directory לבין CMAD

כדי להעביר מופע משילוב עם שירות מנוהל ל-Microsoft AD לשילוב עם CMAD, משתמשים בפקודה הבאה של ה-CLI של gcloud:

  gcloud sql instances patch INSTANCE_NAME \
  --active-directory-domain=DOMAIN \
  --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \
  --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \
  --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \
  --active-directory-dns-servers=IP1,IP2

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

  • ‫INSTANCE_NAME: השם של מופע Cloud SQL ל-SQL Server שרוצים לשנות.
  • ‫DOMAIN: שם הדומיין שרוצים להשתמש בו, למשל myaddomain.com.
  • ‫CUSTOMER_MANAGED_ACTIVE_DIRECTORY: מציין את המצב של הדומיין. אם הדומיין נוצר על ידי Google והיא הבעלים שלו, מזינים MANAGED_ACTIVE_DIRECTORY. אם המשתמש יצר את הדומיין והוא הבעלים שלו, מזינים CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • ‫CLOUD_OU: הוא השם של היחידה הארגונית שרוצים להשתמש בה. לדוגמה, CLOUDOU. אפשר להזין כמה יחידות ארגוניות שרוצים.
  • ‫DC1: הוא רכיב הדומיין הראשון שמשמש לשם המובחן של היחידה הארגונית. לדוגמה, DOMAIN. אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫DC2: הוא הרכיב השני בדומיין שמשמש לשם הייחודי של היחידה הארגונית. לדוגמה, COM. ערך מלא של הדגל --active-directory-organizational-unit יכול להיראות כך: "OU=CLOUDOU,DC=DOMAIN,DC=COM". אפשר להזין כמה רכיבי דומיין שרוצים.
  • ‫PROJECT_ID: הוא מזהה הפרויקט שבו נמצאת המכונה.
  • ‫SECRET_NAME: הסוד שמשויך למכונה.
  • ‫IP1: כתובת ה-IP של שרת ה-DNS הראשון שרוצים להשתמש בו, למשל 10.20.30.40. אפשר להזין כמה כתובות IP שרוצים.
  • ‫IP2: כתובת ה-IP של שרת ה-DNS השני שרוצים להשתמש בו, למשל 20.30.40.50. אפשר להזין כמה כתובות IP שרוצים.

התחברות למכונה באמצעות משתמש

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

אחרי שמבצעים שילוב של מופע עם CMAD, אפשר להתחבר למופע עם המשתמש sqlserver, באופן הבא:

  1. יוצרים התחברות ל-SQL Server על סמך משתמש או קבוצה ב-Windows, באופן הבא:
          CREATE LOGIN [domain\user_or_group] FROM WINDOWS
        
  2. מתחברים למופע באמצעות אימות Windows, עם שם ה-DNS של המופע. דוגמאות לשמות DNS של מופעים שאפשר לציין:
    • דוגמה לחיבור באמצעות כתובת IP פרטית:
            private.myinstance.us-central1.myproject.cloudsql.mydomain.com
            
    • דוגמה לחיבור דרך כתובת IP ציבורית:
              public.myinstance.us-central1.myproject.cloudsql.mydomain.com
              
    • בדוגמה הבאה מוסבר איך להתחבר באמצעות שרת proxy ל-Cloud SQL Auth:
              proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
              

      מידע נוסף זמין במאמר שימוש בשרת proxy ל-Cloud SQL Auth עם אימות Windows.

אם משתמשים בכתובת ה-IP של המכונה, צריך להגדיר את לקוחות Kerberos כך שיתמכו בשמות מארחים של כתובות IP. ‫Cloud SQL לא תומך בכניסה באמצעות כתובות IP מדומיינים שמחוברים דרך יחסי אמון.

שימוש בשרת proxy ל-Cloud SQL Auth עם אימות Windows

אפשר להשתמש בשרת proxy ל-Cloud SQL Auth בשילוב עם CMAD.

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

שלבים לאימות ב-Windows

מידע נוסף על הפעלת שרת proxy ל-Cloud SQL Auth זמין במאמר בנושא הפעלת שרת proxy ל-Cloud SQL Auth.

כדי להשתמש באימות Windows, צריך להריץ את שרת ה-proxy ל-Cloud SQL Auth ביציאה 1433. כדי למפות רשומה של שם שירות ראשי (SPN) שהוגדר מראש לכתובת של שרת proxy ל-Cloud SQL Auth, משתמשים בפקודה הבאה:

Proxy.[instance].[location].[project].cloudsql.[domain]

הפעלת שרת proxy ל-Cloud SQL Auth באופן מקומי

אם מריצים את Cloud SQL Auth Proxy באופן מקומי, צריך להשתמש בקובץ המארחים כדי למפות את הערכים הבאים ל-127.0.0.1:

Proxy.[instance].[location].[project].cloudsql.[domain]

לדוגמה, אפשר להוסיף את השורה הבאה לקובץ hosts (למשל, ל-c:\windows\system32\drivers\etc\hosts):

127.0.0.1 proxy.[instance].[location].[project].cloudsql.[domain]

בדוגמה הזו, אפשר להריץ את שרת ה-proxy ל-Cloud SQL Auth באמצעות הפקודה הזו, ולהפוך אותו לזמין ב-127.0.0.1:1433:

cloud-sql-proxy.exe --credentials-file credential.json project:name

הפעלת שרת proxy ל-Cloud SQL Auth שלא באופן מקומי

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

לדוגמה, אם מארח לא מקומי הוא MyOtherHost, אפשר להוסיף את השורה הבאה לקובץ המארחים:

127.0.0.1 MyOtherHost proxy.[instance].[location].[project].cloudsql.[domain]

פתרון בעיות שקשורות לגיבוי NTLM בלקוחות

אם אתם משתמשים באימות Windows ובכתובת IP של מכונה כדי להיכנס למכונה, אתם צריכים להגדיר לקוח Kerberos כדי לתמוך בשמות מארחים של כתובות IP.

‫Cloud SQL לא תומך באימות NTLM, אבל יכול להיות שחלק מלקוחות Kerberos ינסו לחזור אליו. כפי שצוין בקטע הזה, אם מנסים להתחבר באמצעות SQL Server Management Studio‏ (SSMS) ומופיעה הודעת השגיאה הבאה, סביר להניח שהסיבה לכך היא חזרה ל-NTLM:

Login failed. The login is from an untrusted domain and cannot be used with
Integrated authentication. (Microsoft SQL Server, Error: 18452)

‫NTLM הוא קבוצה של פרוטוקולי אבטחה של מיקרוסופט לאימות. מידע נוסף זמין במאמר Reasons for NTLM fallback (סיבות למעבר חזרה ל-NTLM).

אימות של חזרה ל-NTLM עבור לקוח Windows

כדי לוודא שחזרה ל-NTLM גרמה לשגיאה ממסוף Windows, צריך לבצע את הפעולות הבאות:

  1. נכנסים באמצעות פרטי הכניסה המקומיים שבהם רוצים להשתמש. לא להשתמש בפקודות "Run as...".
  2. פותחים שורת פקודה.
  3. מריצים את klist purge.
  4. מנסים להתחבר ל-SQL Server באמצעות אימות Windows מ-SSMS.
  5. מריצים את הפקודה klist ובודקים אם הונפק כרטיס לשגיאה שהוחזרה,
    MSSQLSvc/
    :1433 @ domain.
  6. אם אין כרטיס כזה, סביר להניח שהשגיאה נגרמת בגלל חזרה ל-NTLM.
  7. אם יש כרטיס כזה, צריך לוודא שמנהל ההתקן של SQL Server לא אוכף אימות NTLM. בנוסף, בודקים אם אימות NTLM נאכף באמצעות מדיניות קבוצתית.

אימות של חזרה ל-NTLM בלקוח Linux

כדי לוודא שחזרה ל-NTLM גרמה לשגיאה ב-Ubuntu 16.04, פועלים לפי השלבים שבקטע הזה. השלבים דומים לאלה של הפצות אחרות של Linux.

הגדרת אימות Kerberos

  1. הגדרת לקוח Kerberos:
          sudo apt-get install krb5-user
        
  2. כשמוצגת לכם בקשה להזין את התחום שמוגדר כברירת מחדל, הקלידו שם דומיין מקומי באותיות רישיות.
  3. מריצים את הפקודה הבאה כדי להתקין את כלי שורת הפקודה של SQL Server:
          curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
          curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
          sudo apt-get update
          sudo apt-get install mssql-tools unixodbc-dev
        

התחברות באמצעות אימות Windows

  1. מריצים את הכלי kinit באופן הבא:
        kinit 
        
  2. כדי להתחבר באמצעות אימות Windows, מריצים את הפקודה הבאה:
        /opt/mssql-tools/bin/sqlcmd -S 
  3. מריצים את הפקודה klist ובודקים אם כרטיס הונפק במיוחד להודעה הבאה שמוחזרת:
        MSSQLSvc/
    :1433 @ domain
  4. אם הכרטיס לא הונפק, השגיאה הקודמת מצביעה כנראה על בעיה שגורמת לחזרה ל-NTLM.

הסיבות למעבר חזרה ל-NTLM

חזרה ל-NTLM היא הגדרה שגויה של הלקוח שיכולה להיות משויכת לתנאים הבאים:

  • כברירת מחדל, מערכת Windows לא מנסה לבצע אימות Kerberos למארח אם שם המארח הוא כתובת IP. כדי להפעיל אימות Kerberos לכתובות IP, אפשר לנסות את השיטה שמתוארת במסמכי העזרה של Microsoft.
  • אימות Kerberos באמצעות יחסי אמון חיצוניים לא פועל. במקום זאת, אפשר להשתמש ביחסי אמון בין יערות.
  • אימות Kerberos דורש ניתוב של סיומות שמות כדי לאפשר את האיתור של שירותים ביער אחר. אפשר לנסות את השיטה שמתוארת במאמר בנושא הגדרת יחסי אמון בין שני דומיינים.
  • אימות Kerberos לא פועל אם לא רשום SPN לשירות. כדי להתחבר באמצעות אימות Windows, צריך להשתמש רק ב-FQDN או בכתובות IP שמתקבלות מ Google Cloud המסוף.

יצירת התחברות ל-Windows למשתמשי AD מקומיים

פועלים לפי ההוראות לCREATE LOGINיצירת התחברות ל-Windows עבור משתמש מקומי. לדוגמה, מציינים פקודה שדומה לפקודה הבאה:

CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS

טיפים לשימוש ב-CMAD עם Cloud SQL

  • מכונה עם כתובת IP ציבורית נתמכת, כל עוד יש לה גם כתובת IP פרטית. צריך להפעיל את כתובת ה-IP הפרטית עבור המופע. לאחר מכן, תוכלו לבחור להשתמש בכתובת IP ציבורית או בכתובת IP פרטית כדי להתחבר למופע, כל עוד שתיהן זמינות.
  • לפני שיוצרים מופע, כולל מופע חלופי, חשוב לקרוא את המידע הבא:
  • אם אימות Windows נכשל מדומיין שמחובר דרך יחסי אמון, צריך לוודא שאימות Windows פועל עבור משתמש מדומיין בניהול הלקוח. אם כן, מבצעים את הפעולות הבאות:
    1. מוודאים שהשתמשתם בשם DNS. אין תמיכה בכתובות IP מדומיינים שמקושרים באמצעות יחסי אמון.
    2. חשוב לוודא שהשלמתם את השלבים במאמר בנושא הגדרת יחסי אמון בין שני דומיינים, כולל פתיחת כל הפורטים בחומת האש.
    3. מאמתים את האמון.
    4. מוודאים שכיוון האמון מאפשר למשתמשים מהדומיין (שמחובר דרך יחסי אמון) לבצע אימות.
    5. פועלים לפי השלבים שמתוארים במאמר בנושא הכנת דומיין שלא ניתן לניתוב לסנכרון עם ספריית כתובות.
    6. מוודאים שהאמון פועל בלי להשתמש ב-Cloud SQL ל-SQL Server:
      1. יוצרים מכונה וירטואלית של Windows.
      2. מצטרפים לדומיין CMAD.
      3. לדוגמה, מנסים להפעיל את פנקס הרשימות כמשתמש מהדומיין שמחובר באמצעות יחסי אמון.
    7. מפעילים מחדש את ה-VM של הלקוח ובודקים מחדש את אימות Windows.
  • יכול להיות שתנסו ליצור התחברות ל-SQL Server, אבל תקבלו את השגיאה הבאה:
        Windows NT user or group domain\name not found. Check the name again.
        

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

  • אם שאילתות של SQL Server מחזירות את השגיאה הבאה, חשוב לדעת שכתובות IP לא נתמכות למשתמשים מדומיינים שמחוברים באמצעות יחסי אמון:
        The login is from an untrusted domain.
        

    כדי לפתור את הבעיה, אפשר לנסות את הפעולות הבאות:

    • אם כתובת IP משמשת לחיבור משתמשים מדומיין מנוהל, צריך לפעול לפי ההוראות במסמכי מיקרוסופט.
    • אל תשתמשו בשרתי proxy, ותמיד השתמשו באותו שם DNS כדי להתחבר ל-Cloud SQL ל-SQL Server, כמו שאתם רואים את השם במסוף Google Cloud .
  • אם יש מופע עם בעיות מתמשכות באימות Windows (בין אם המופע עודכן לאחרונה ובין אם לא), נסו לבטל את ההצטרפות שלו לדומיין ואז להצטרף אליו מחדש. כדי לעשות זאת, משתמשים בתהליך העדכון כדי לבטל את ההצטרפות לדומיין ואז להצטרף אליו מחדש. הפעולה הזו לא תסיר משתמשים או התחברויות קיימים שאומתו ב-Windows ומאוחסנים במסדי הנתונים. עם זאת, הסרה של אימות Windows גורמת להפעלה מחדש של מופע.
  • כדי לפתור בעיות בהגדרת Active Directory בדומיין בניהול הלקוח, אפשר להשתמש בכלי לאבחון Active Directory בניהול הלקוח.

פתרון בעיות

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

לשגיאה הזו... יכול להיות שהבעיה היא... כדאי לנסות את זה...
Per-product, per-project Service Account (P4 SA) not found for project. השם של חשבון השירות שגוי. בדף Service Accounts, מוודאים שיצרתם חשבון שירות עבור פרויקט המשתמש הנכון.
The operation completed but an update to Active Directory failed. You may experience issues with Windows Authentication on this instance, please see https://cloud.google.com/sql/docs/sqlserver/configure-cmad for tips. לא ניתן לבצע את העדכונים הנדרשים בדומיין CMAD. אם נתקלים בבעיות באימות Windows, אפשר לנסות לבטל את ההצטרפות לדומיין CMAD ואז להצטרף אליו מחדש. כדי לעשות זאת, משתמשים בתהליך העדכון כדי לבטל את ההצטרפות לדומיין ואז להצטרף אליו מחדש. הפעולה הזו לא תסיר משתמשים או התחברויות קיימים שאומתו ב-Windows ומאוחסנים במסדי הנתונים. עם זאת, הסרה של אימות Windows גורמת להפעלה מחדש של מופע.
This instance would need new network architecture to support Active Directory. See https://cloud.google.com/sql/docs/sqlserver/configure-cmad." המופע הזה לא משתמש בארכיטקטורת הרשת החדשה. משדרגים את המכונה לארכיטקטורת הרשת החדשה.
Admin credential secret name / Organizational unit / DNS Server names is required or Invalid Admin credential secret name / OrganizationalUnit / DNS Server names provided. פרמטרים נדרשים: פרטי אדמין, יחידה ארגונית ושרתי DNS. נסו לשלוח שוב את הבקשה עם הפרמטרים האלה.
Integration failed due to insufficient permissions. The Service Agent for this project must be granted the secretmanager.secrets.getIamPolicy and secretmanager.secrets.setIamPolicy permissions on the provided admin credential key in Secret Manager. לסוכן השירות בפרויקט הזה חסרות הרשאות נדרשות. יוצרים תפקיד בהתאמה אישית עם ההרשאות secretmanager.secrets.getIamPolicy ו-secretmanager.secrets.setIamPolicy ומקצים אותו לסוכן השירות של הפרויקט. מידע נוסף זמין במאמר בנושא תפקידים והרשאות ב-Secret Manager.

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