שימוש ב-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, אפשר להוסיף את השורה הבאה לקובץ hosts:

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. מ-SSMS, מנסים להתחבר ל-SQL Server באמצעות אימות Windows.
  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, אפשר לנסות את השיטה שמתוארת במסמכי התיעוד של מיקרוסופט.
  • אימות Kerberos באמצעות יחסי אמון חיצוניים לא פועל. במקום זאת, אפשר להשתמש ביחסי אמון בין יערות.
  • אימות Kerberos דורש ניתוב של סיומות שמות כדי לאפשר את איתור השירותים ביער אחר. אפשר לנסות את השיטה שמתוארת במאמר בנושא הגדרת יחסי אמון בין שני דומיינים.
  • אימות Kerberos לא פועל אם לא רשום SPN לשירות. כדי להתחבר באמצעות אימות Windows, צריך להשתמש רק ב-FQDN או בכתובות IP שמתקבלות מ Google Cloud המסוף.

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

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

CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS

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

  • מכונה עם כתובת 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 גורמת להפעלה מחדש של מופע.
  • אפשר להשתמש בכלי האבחון של AD כדי לפתור בעיות בהגדרת AD בדומיין בניהול הלקוח ובמכונות Cloud SQL ל-SQL Server במסוף Google Cloud . מדלגים על השלבים שקשורים לשירות מנוהל ל-Microsoft AD.

פתרון בעיות

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

לגבי השגיאה הזו... יכול להיות שהבעיה היא... אפשר לנסות את הפעולות הבאות…
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.

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