将 Managed Microsoft AD 与 Cloud SQL 结合使用

本页面介绍了使用 Cloud SQL 执行以下操作的方法:

  • 与 Managed Service for Microsoft Active Directory(也称为代管式 Microsoft AD)集成。
  • 以 AD 用户身份连接到实例。

除 SQL 身份验证外,与代管式 Microsoft AD 集成的 Cloud SQL 实例还支持 Windows 身份验证

准备工作

  1. 在 Google Cloud 控制台中,选择您的项目名称
  2. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能
  3. 安装并初始化 gcloud CLI
  4. 确保您的用户账号具有 Cloud SQL Admin 角色。 转到 IAM 页面
  5. 查看集成方面的前提条件

使用 Windows 身份验证创建实例

您可以在实例创建期间与代管式 Microsoft AD 集成,从而为实例启用 Windows 身份验证。如需进行集成,请为要加入的实例选择一个网域。如果加入网域失败,则实例创建将失败。

在准备使用 Windows 身份验证创建实例时,请先查看提示以及限制和替代方案

系统支持具有公共 IP 的实例,但前提是该实例也具有专用 IP;必须为该实例启用专用 IP。然后,您可以选择使用公共 IP 或专用 IP 连接到实例,只要这两个 IP 均可用即可。

以下选项可用于创建与代管式 Microsoft AD 集成的实例。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击创建实例
  3. 点击选择 SQL Server (Choose SQL Server)。
  4. 输入实例的名称。请勿在实例名称中包含敏感信息或个人身份信息,因为此名称对外可见。无需在实例名称中包含项目 ID。此 ID 将在适当的位置(例如在日志文件中)自动创建。
  5. 'sqlserver' 用户输入密码。
  6. 为您的实例设置区域。请参阅与 Managed Microsoft AD 集成的最佳做法
  7. 配置选项部分,设置所需的选项(但请等到身份验证选项的下一步)。
  8. 点击身份验证。用于加入代管式 Active Directory 域的下拉菜单会列出先前在您的项目中添加的所有代管式 Microsoft AD 域
  9. 从用于加入代管式 Active Directory 域的下拉菜单中选择一个网域。
  10. 完成配置选项的选择后,请点击创建。Cloud SQL 会自动为您创建一个按产品、按项目的服务账号。如果该账号没有适当的角色,系统会提示您授予 managedidentities.sqlintegrator 角色。

gcloud

以下命令会创建一个与代管式 Microsoft AD 集成,从而启用 Windows 身份验证的实例。如需了解用于创建实例的基本命令,请参阅创建实例

gcloud 命令中指定 --active-directory-domain=DOMAIN 的参数。例如,指定以下内容:--active-directory-domain=ad.mydomain.com

下面是 gcloud 命令的原型:

gcloud beta sql instances create INSTANCE_NAME \
--database-version=EDITION \
--root-password=PASSWORD \
--active-directory-domain=DOMAIN\
--cpu=CPU \
--memory=MEMORY  \
--network=NETWORK

Terraform

如需创建与代管式 Microsoft AD 集成的实例,请使用 Terraform 资源

resource "google_sql_database_instance" "instance_with_ad" {
  name             = "database-instance-name"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"

  depends_on = [google_service_networking_connection.private_vpc_connection]

  settings {
    tier = "db-custom-2-7680"
    active_directory_config {
      domain = "ad.domain.com"
    }
    ip_configuration {
      ipv4_enabled    = "false"
      private_network = google_compute_network.private_network.id
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST

您可以使用 REST API 创建与代管式 Microsoft AD 集成的实例。为 domain 字段指定一个网域(例如 subdomain.mydomain.com),如以下请求原型所示:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "ipConfiguration":{
         "privateNetwork":"network"
      },
      "activeDirectoryConfig":{
         "domain":"domain"
      }
   }
}

使用 Windows 身份验证更新实例

您可以更新现有实例的网域,从而更改或添加网域。

如需了解如何更新实例的一般信息,请参阅修改实例

如果某实例目前已加入 Managed AD 域,则该实例最初将退出网域,然后再加入新网域。如果更新失败,则该实例可能无法再加入任何网域。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击修改
  4. 点击身份验证加入 Active Directory 域下拉菜单会列出先前在您的项目中添加的 Managed Microsoft AD 域
  5. 从用于加入代管式 Active Directory 域的下拉菜单,为您的实例选择新的(替换)网域。
  6. 点击保存以应用更改。

gcloud

以下是用于更新现有实例的命令的原型。该命令将添加或替换网域。将 --active-directory-domain=DOMAIN 传递给命令,如下所示:

gcloud beta sql instances patch INSTANCE_NAME \
--active-directory-domain=DOMAIN

REST

您可以使用 REST API 更新现有实例。在 domain 字段中指定网域,例如 subdomain.mydomain.com。以下是请求的原型:

{
   "settings":{
      "activeDirectoryConfig":{
         "domain":"domain"
      }
   }
}

与其他项目中的代管式 AD 域集成

您可以将实例与位于其他项目中的代管式 Microsoft AD 域集成。

在规划集成时,请查看限制条件

启用网域对等互连

在继续执行以下部分中的步骤之前,请启用网域对等互连,以便您的网域可用于所有具有 Cloud SQL for SQL Server 实例的必要项目。

对于已经可用的其他项目的网域列表,您可以指定以下内容:

`gcloud active-directory peerings list`

如需了解详情,请参阅列出网域对等互连

gcloud active-directory peerings list 命令需要 managedidentities.peerings.list 权限。以下角色具有此权限:

  • roles/managedidentities.peeringViewer
  • roles/managedidentities.viewer

如需了解详情,请参阅使用 IAM 进行访问权限控制

创建服务账号

对包含要集成的 Cloud SQL for SQL Server 实例的每个项目重复执行上述步骤。

  1. 查看用于创建服务账号的背景信息
  2. 使用类似如下的命令创建服务账号。指定包含 Cloud SQL for SQL Server 实例的项目的 ID:

    gcloud beta services identity create --service=sqladmin.googleapis.com \
    --project=[PROJECT_ID]
    
  3. 在具有代管式 Microsoft AD 实例的项目中授予 managedidentities.sqlintegrator 角色。指定包含代管式 Microsoft AD 实例的项目的 ID:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member=serviceAccount:SERVICE_ACCOUNT --role=roles/managedidentities.sqlintegrator
    

启用跨项目 Windows 身份验证

您可以使用 gcloud 命令或 Cloud SQL REST API 与其他项目中的 AD 域集成。无论哪种情况,您都必须指定完整的网域资源名称。

创建或更新 Cloud SQL for SQL Server 实例时,请指定完整的网域资源名称。支持两种格式:

  • projects/PROJECT_ID/locations/global/domains/DOMAIN_NAME
  • projects/PROJECT_NUMBER/locations/global/domains/DOMAIN_NAME

以下是使用 gcloud 的示例:

gcloud beta sql instances patch INSTANCE_NAME \
--active-directory-domain=projects/PROJECT_ID/locations/global/domains/DOMAIN_NAME

如果使用短网域资源名称(例如 DOMAIN_NAME),则系统会假设您的代管式 Microsoft AD 域与 Cloud SQL for SQL Server 实例位于同一项目中。

与其他项目集成的限制条件

如果要与其他项目中的代管式 AD 域集成,则会受到以下限制:

  • 最多 10 个具有 Cloud SQL for SQL Server 实例的网络可以共享位于其他项目中的一个代管式 Microsoft AD 实例。
  • Google Cloud 控制台仅支持位于同一项目中的代管式 Microsoft AD 实例。您可以使用 gcloud 命令或 Cloud SQL REST API 进行集成,而不使用 Google Cloud 控制台。
  • 如果使用 VPC Service Controls,Cloud SQL for SQL Server 实例和代管式 Microsoft AD 实例必须位于同一边界内。

此外,如果实例与其他项目中的代管式 AD 域集成,则 Google Cloud 控制台中显示的完全限定域名 (FQDN) 可能不准确。具体而言,在实例的连接页面连接此实例下,FQDN 可能包含用斜杠分隔的字符串,您可以忽略该字符串。 例如,不准确的 FQDN 可能显示为:

private.myinstance.myregion.myproject.projects/mydirectory/locations/global/domains/mydomain.com

在此情况下,准确的 FQDN 为:

private.myinstance.myregion.myproject.cloudsql.mydomain.com

从实例中移除 Windows 身份验证

您可以从现有实例中移除 Windows 身份验证,从而移除 Managed Microsoft AD 集成。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击修改
  4. 点击身份验证。用于加入代管式 Active Directory 域的下拉菜单会列出先前在您的项目中添加的所有代管式 Microsoft AD 域
  5. 从该下拉菜单中,为您的实例选择没有网域/稍后加入
  6. 阅读关于实例重启的消息,然后点击关闭
  7. 点击保存以应用更改。

gcloud

如需从网域中移除实例,从而移除 Windows 身份验证,请对网域使用空白值。也就是说,在您的命令中,对 --active-directory-domain 参数使用空白值,如下所示:

gcloud beta sql instances patch INSTANCE_NAME \
--active-directory-domain=

REST

使用 REST API,您可以从网域中移除实例。在 domain 字段中指定空白值,如下所示:

{
   "settings":{
      "activeDirectoryConfig":{
         "domain":""
      }
   }
}

以用户身份连接到实例

对于 Cloud SQL for SQL Server,默认用户sqlserver

将实例与 Managed Microsoft AD 集成后,您能以 sqlserver 用户身份连接到该实例,如下所示:

  1. 基于 Windows 用户或群组创建 SQL Server 登录,如下所示:

    CREATE LOGIN [domain\user_or_group] FROM WINDOWS
    
  2. 使用实例 DNS 名称通过 Windows 身份验证登录该实例。以下是要指定的实例 DNS 名称示例:

    • 如需通过专用 IP 进行连接,请使用以下实例 DNS 名称:

      private.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    • 如需通过公共 IP 进行连接,请使用以下实例 DNS 名称:

      public.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    • 如需通过 Cloud SQL Auth 代理进行连接(另请参阅下文):

      proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
      

    如果您使用实例 IP 地址,则必须配置 Kerberos 客户端以支持 IP 主机名。Cloud SQL 不支持来自通过信任关系连接的网域的登录用户。

搭配使用 Cloud SQL Auth 代理与 Windows 身份验证

您可以将 Cloud SQL Auth 代理与 Managed Microsoft AD 集成结合使用。

在开始之前,请先查看:

Windows 身份验证步骤

如需了解启动 Cloud SQL Auth 代理的背景信息,请参阅启动 Cloud SQL Auth 代理

对于 Windows 身份验证,您必须在端口 1433 上运行 Cloud SQL Auth 代理。如需将预定义的服务主体名称 (SPN) 条目映射到 Cloud SQL Auth 代理地址,请使用:

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

在本地运行 Cloud SQL Auth 代理

如果您在本地运行 Cloud SQL Auth 代理,请使用主机文件将以下内容映射到 127.0.0.1

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

例如,您可以将以下内容添加到主机文件(例如,c:\windows\system32\drivers\etc\hosts)中:

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

在该示例中,您可以使用以下命令运行 Cloud SQL Auth 代理,并将其提供给 127.0.0.1:1433

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

不在本地运行 Cloud SQL Auth 代理

如需不在本地运行 Cloud SQL Auth 代理,请按照在本地运行 Cloud SQL Auth 代理中的说明操作,但在主机文件中使用其他条目。

具体来说,例如,如果非本地主机为 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 是一组用于身份验证的 Microsoft 安全协议。另请参阅 NTLM 回退的原因

验证 Windows 客户端的 NTLM 回退

在 Windows 中,验证 NTLM 回退是否引发了错误:

  1. 使用所需的本地凭据登录(不要使用“运行方式...”选项)。
  2. 打开命令提示符窗口。
  3. 运行 klist purge
  4. 在 SSMS 中,尝试通过 Windows 身份验证连接到 SQL Server。
  5. 运行 klist 并检查是否为 "MSSQLSvc/<address>:1433 @ domain" 颁发了票据。
  6. 如果没有此类票据,则该错误可能是 NTLM 回退导致的。
  7. 如果存在此类票证,请检查您的 SQL Server 驱动程序是否不强制执行 NTLM 身份验证。此外,还要检查通过组策略强制执行 NTLM 身份验证。

验证 Linux 客户端的 NTLM 回退

在 Ubuntu 16.04 中,如需验证 NTLM 回退是否引发了错误,请按照本部分中的步骤操作。具体步骤与其他 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 <user_account>
  2. 如需通过 Windows 身份验证进行连接,请运行:/opt/mssql-tools/bin/sqlcmd -S <address >>
  3. 运行 klist 命令并检查是否专门针对以下对象颁发了票据:"MSSQLSvc/<address>:1433 @ domain"
  4. 如果未颁发票据,则上述错误可能表示一个导致 NTLM 回退的问题。

NTLM 回退的原因

回退到 NTLM 是一种客户端配置错误,可能与以下条件关联:

  • 默认情况下,如果主机名是 IP 地址,Windows 不会尝试对主机进行 Kerberos 身份验证。如需从代管式网域启用 Kerberos 身份验证,请尝试 Microsoft 文档中介绍的方法。如果必须使用 FQDNS,则此方法不适用于本地凭据。
  • 基于外部信任的 Kerberos 身份验证不起作用。请按照此处的说明,改用林信任。
  • Kerberos 身份验证需要名称后缀路由才能查找其他林中的服务。请尝试使用此处所述的方法。
  • 如果没有为服务注册 SPN,则 Kerberos 身份验证不起作用。仅使用从 Google Cloud 控制台获取的 FQDN 或 IP 地址建立 Windows 身份验证连接。

本地 AD 用户:创建 Windows 登录

您可以使用本地 AD 用户创建 Windows 登录 Cloud SQL for SQL Server。

例如,您可以使用在 Google Cloud 项目的 Virtual Private Cloud (VPC) 中托管的 Windows 虚拟机上运行的 SQL Server Management Studio (SMSS) 进行连接。

对于此上下文中的 Windows 身份验证,Cloud SQL for SQL Server 仅支持 Kerberos 协议。对于基于 Kerberos 的 Windows 身份验证,客户端必须解析本地 AD 和代管式 Microsoft AD 的 DNS 名称。

配置单向或双向信任

首先,决定是使用单向还是双向信任关系

然后,按照在本地 AD 域与代管式 Microsoft AD 域之间建立信任的相关说明执行操作。

设置 Windows 虚拟机并创建 Windows 登录

在本地 AD 域与代管式 Microsoft AD 域之间建立信任之后,请完成以下步骤。为了举例说明,这些步骤使用在 Google Cloud 项目的 VPC 中托管的 Windows 虚拟机上运行的 SQL Server Management Studio (SSMS):

  1. 创建 Windows 虚拟机。
    • 使用代管式 Microsoft AD 支持的 Windows 版本创建虚拟机
    • 在托管您的 Managed Microsoft AD 域的项目中创建虚拟机。如果有一个共享 VPC 是已获授权的网络,则还可以在其任何服务项目中创建虚拟机。
    • 在属于代管式 Microsoft AD 域已获授权的网络并为 Cloud SQL 配置了专用服务访问通道的 VPC 网络上创建虚拟机。
  2. 将 Windows 虚拟机加入 Managed Microsoft AD 域。
  3. 在 Windows 虚拟机上安装 SSMS
  4. 解析 VPC 网络中的本地网域。
    • 在运行 Windows 虚拟机的已获授权的网络中,按照解析针对非代管式 Microsoft AD 对象的查询页面上的步骤启用本地 DNS 解析。该页面上的步骤是基于 Kerberos 的 Windows 身份验证适用于本地用户的前提条件。
  5. 为本地用户创建 Windows 登录。

    • 按照创建登录说明为本地用户创建 Windows 登录。例如,指定如下所示的命令:
    CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS
    
  6. 使用有关登录本地用户的应用特定说明,登录您的 Cloud SQL for SQL Server 实例。例如,如果您使用的是 SQL Server Management Studio,请参阅这些说明

如果在登录 Cloud SQL for SQL Server 实例期间出现问题,请执行以下验证:

  • 按照使用本地网域创建信任的相关说明验证本地网络和项目授权的 VPC 的防火墙配置。
  • 验证本地信任关系的名称后缀路由
  • 确认您可以从运行 SSMS 的 Windows 虚拟机执行以下 DNS 解析操作:
    • nslookup fqdn-for-managed-ad-domain
    • nslookup fqdn-for-on-premises-ad-domain
    • nslookup fqdn-for-cloud-sql-server-instance

提示

  • 系统支持具有公共 IP 的实例,但前提是该实例也具有专用 IP;必须为该实例启用专用 IP。然后,您可以选择使用公共 IP 或专用 IP 连接到实例,只要这两个 IP 均可用即可。
  • 在创建实例(包括作为替换实例)之前,请根据需要查看以下内容:
  • 支持 Terraform
  • 如果您收到以下错误之一,请确认您满足集成的所有前提条件
    • “未找到每个产品、每个项目的服务账号”
    • “权限不足,无法与 Managed Service for Microsoft Active Directory 域集成”
  • 如果您收到“找不到网域”错误,请验证区分大小写的域名是否正确。
  • 如果 Windows 身份验证在通过信任关系进行连接的网域中失败,请验证 Windows 身份验证是否适合来自代管式网域的用户。如果适合,请执行以下操作:
    1. 确认您使用的是 DNS 名称。使用信任关系连接的网域的 IP 地址不受支持。
    2. 确保您按照使用本地网域创建信任的所有步骤操作,包括打开所有防火墙端口。
    3. 验证信任关系。
    4. 验证信任方向能否允许来自网域(通过信任关系连接)在代管式网域中进行身份验证。
    5. 验证是否在通过信任关系连接的网域上设置了名称后缀路由。
    6. 验证信任能否在不使用 Cloud SQL for SQL Server 的情况下正常工作:
      1. 创建 Windows 虚拟机。
      2. 将该虚拟机加入代管式 Microsoft AD 域。
      3. 尝试以来自通过信任关系连接的网域的用户身份运行 NotePad 等应用。
    7. 重启客户端虚拟机并重新测试 Windows 身份验证。
  • 您可以尝试创建 SQL Server 登录,但收到以下错误:“找不到 Windows NT 用户或群组 domain\name。请再次检查该名称”。可能会发生这种情况是因为网域本地组不受支持;如果适用,请改为使用全局群组或通用群组。
  • 用户通过信任关系连接的网域发出时,SQL Server 查询可能会导致以下错误:“无法获取有关 Windows NT 群组/用户的信息”。例如,如果您要通过信任关系连接的网域创建登录,就会发生此错误。如果您授予通过信任关系连接的网域的登录权限,也会发生此错误。在这些情况下,重试操作通常会成功。如果重试失败,请关闭连接并打开新连接。
  • 如果您收到“无法获取有关 Windows NT 群组/用户的信息”错误,请使用 Cloud Logging 中提供的 Cloud SQL for SQL Server 实例的日志文件 active_directory.log 检查到本地域的网络连接。此文件包含以下关于本地网域连接更改的诊断信息:

    • Cloud SQL for SQL Server 实例的可信本地网域。例如,以下日志显示了从没有可信网域更改为两个新的可信网域,其 NetBIOS 名称为 ONPREMCHILD
      2023-06-12 20:55:09.975 Detected change in trusted onprem domains: Previously trusted onprem domains: []. Current trusted onprem domains: [ONPREM CHILD]
      
      如果本地网域未列出或被记录为不受信任,请检查托管式 AD 域是否存在信任并已验证信任。如果托管式 AD 域与本地网域之间存在单向信任,则本地网域信任的其他本地网域可能不可见。
    • 使用 Cloud SQL for SQL Server 实例的常规 ping 的可达和不可达本地网域。例如,以下日志显示了从没有可达网域更改为两个新的可达网域 onprem.comchild.onprem.com
      2023-06-12 20:55:10.664 Detected change in reachable onprem domains: Previously reachable onprem domains: []. Current reachable onprem domains: [onprem.com child.onprem.com]
      
      如果某个网域未在可达性日志中列出,请确保先将其记录为可信网域。否则,系统不会检查其可达性。我们始终在具有本地实例的项目和 Google Cloud 项目之间建立 VPC 对等互连。还有一个或多个 VPC 对等互连引入了传递性对等互连连接,而 Cloud SQL 不支持该连接。我们建议您改用 VPN 隧道将本地网域连接到 Cloud SQL。本地项目与具有 Cloud SQL for SQL Server 实例的 Google Cloud 项目之间最多只能有一个对等互连连接。
    • 从 Cloud SQL for SQL Server 实例到本地网域的成功和失败的 Microsoft 远程过程调用 (MSRPC) ping。例如,以下日志显示了从没有 MSRPC 可 ping 域更改为两个新的 MSRPC 可 ping 域 ONPREMCHILD
      2023-06-12 20:55:10.664 Detected change in MSRPC pingable domains: Previously pingable onprem domains: []. Current pingable onprem domains: [ONPREM CHILD]
      
      MSRPC ping 作为额外的诊断信息提供,可能不适用于某些配置。您仍然可以通过前两个诊断来验证本地网域连接。
  • 如果 SQL Server 查询导致“登录来自不受信任的网域”错误,则请注意来自通过信任关系连接的网域的用户不支持 IP 地址。此外,以下操作可解决此问题:

    • 如果您使用 IP 地址将用户从代管式网域连接,请按照这些说明操作。
    • 避免使用任何代理,并始终使用相同的 DNS 名称连接到 Cloud SQL for SQL Server,即您在 Google Cloud 控制台中看到的名称。
    • 完全清除现有的 Kerberos 票据。如果您的客户端最近连接到 Cloud SQL for SQL Server 实例,并且该实例已停止和启动,则可能会出现上述错误。或者,如果已停用 Windows 身份验证,然后为 Cloud SQL for SQL Server 实例重新启用,则可能会发生此错误。如果客户端使用 Windows 凭据缓存,则锁定和解锁客户端工作站,或运行 klist purge
  • 尝试启用 Windows 身份验证可能会导致错误:“此实例需要较新的创建日期,才能支持 Managed Service for Microsoft Active Directory”。请注意有关此错误的以下事项:

    • 在 Cloud SQL 中,如果 Cloud SQL for SQL Server 实例是在 2021 年 3 月 12 日当天或之前创建的,则该实例无法与代管式 Microsoft AD 集成。
    • 在某些情况下,如果您创建一个 Cloud SQL for SQL Server 实例,并且在创建时未启用托管式 Microsoft AD,则可能会收到相同的错误。查看本部分中的其他提示后,请在创建实例时创建新实例以启用托管式 Microsoft AD。
  • 尝试创建 Cloud SQL for SQL Server 实例可能会导致错误:“此实例不支持 Managed Service for Microsoft Active Directory。”如果您收到此错误,则表示该项目可能不受支持;请尝试使用其他项目。

  • 如果实例存在 Windows 身份验证问题(无论是否最近更新了此实例),请尝试退出代管式 Active Directory 域,然后重新加入。为此,请使用更新过程退出该网域,然后重新加入。这样做不会移除数据库中任何现有通过 Windows 身份验证的用户或登录。但是,移除 Windows 身份验证会使实例重启

  • 在 Google Cloud 控制台中使用 AD 诊断工具排查本地网域和 Cloud SQL for SQL Server 实例中的 AD 设置问题。

问题排查

点击表中的链接可查看详细信息:

错误… 可能的问题… 请尝试以下操作…
Per-product, per-project service account not found. 服务账号名称不正确。 “服务账号”页面上,确保您已为正确的用户项目创建服务账号。
Insufficient permission to integrate with Managed Service for Microsoft Active Directory domain. 服务账号缺少 managedidentities.sqlintegrator 角色。 IAM 和管理页面中,为您的服务账号添加 managedidentities.sqlintegrator 角色。
Domain not found 网域不存在或输入有误。 确保域名正确无误。区分大小写。
The domain is busy with another operation. Please retry. 另一个 Cloud SQL 实例正在同一 代管式 Active Directory 域上执行操作。 重试该操作。如果对连接到同一网域的 Cloud SQL 实例执行批量更新,请限制并行执行更新的次数。
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-ad for tips 无法对代管式 Active Directory 域执行所需的更新。 如果 Windows 身份验证存在问题,可以尝试退出代管式 Active Directory 域,然后重新加入。为此,请使用更新过程退出该网域,然后重新加入。这样做不会移除数据库中任何现有通过 Windows 身份验证的用户或登录。但是,移除 Windows 身份验证会使实例重启
This instance would need a more recent creation date to support Managed Service for Microsoft Active Directory. 在 Cloud SQL 中,如果 Cloud SQL for SQL Server 实例是在 2021 年 3 月 12 日当天或之前创建的,则该实例无法与代管式 Microsoft AD 集成。 尝试对 2021 年 3 月 12 日之后创建的实例执行操作。

后续步骤

  • 确认您已完全阅读概览页面,其中包括限制和不支持的功能。该页面还包含指向其他文档的链接。