You can integrate Cloud SQL for SQL Server with Managed Service for Microsoft Active Directory (also called Managed Microsoft AD).
This page contains information to review before you start an integration. After reviewing the following information, including the limitations, see Using Cloud SQL with Managed Microsoft AD.
Advantages of integrating with Managed Microsoft ADAuthentication, authorization, and more are available through Managed Microsoft AD. For example, joining an instance to a Managed Microsoft AD domain lets you to sign in using Windows Authentication with an AD-based identity.
Integrating Cloud SQL for SQL Server with an AD domain has the additional advantage of Cloud integration with your on-premises AD domains.
Prerequisites for integration Note: Only instances created after March 12, 2021, are supported. If you try to join an instance to a domain and it fails, check the instance creation date.You can integrate with Managed Microsoft AD, adding support for Windows Authentication to an instance. However, before integrating, the following are required for your Google Cloud project:
resourcemanager.projects.setIamPolicy
permission. This permission is included in the Project Owner, Project IAM Admin, and Organization Administrator roles. You also must enable the Cloud SQL Admin API.
You need a Per-Product, Per-Project Service account for each project that you plan to integrate with Managed Microsoft AD. Use gcloud
or the Console to create the account at the project level. The Per-Product, Per-Project Service account should be granted the managedidentities.sqlintegrator
role on the project. For additional information, see gcloud projects set-iam-policy.
If you are using the Google Cloud console, then Cloud SQL automatically creates a service account for you, and prompts you to grant the managedidentities.sqlintegrator
role.
To create a service account with gcloud
, run the following command:
gcloud beta services identity create --service=sqladmin.googleapis.com \ --project=PROJECT_NUMBER
That command returns a service account name in the following format:
service-PROJECT_NUMBER
@gcp-sa-cloud-sql.iam.gserviceaccount.com
Here is an example of a service account name:
service-333445@gcp-sa-cloud-sql.iam.gserviceaccount.com
Granting the necessary permission for integration requires existing permissions. For the required permissions, see Required permissions.
To grant the necessary permission for integration, run the following command. If your Managed Microsoft AD is in a different project, AD_PROJECT_ID
should be the one containing the Managed Service for Microsoft Active Directory instance, while the service account's SQL_PROJECT_NUMBER
should be the one containing the SQL Server instance:
gcloud projects add-iam-policy-binding AD_PROJECT_ID \ --member=serviceAccount:service-SQL_PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \ --role=roles/managedidentities.sqlintegrator
Also see gcloud beta services identity create.
Best practices for integrating with Managed Microsoft ADWhen you plan an integration, review the following:
Having a SQL Server instance and a managed AD instance in the same region offers the lowest network latency and the best performance. Thus, when possible, set up a SQL Server instance and an AD instance in the same region. Additionally, whether or not you set them up in the same region, set up a primary and a backup region for higher availability.
Topologies for integrating with Managed Microsoft ADCloud SQL for SQL Server doesn't support domain local groups. However, you can:
If domain local groups were supported, individual user accounts, and global and universal groups, could be added as children of a domain local group (that guards access to SQL Server). This would enable you to add a domain local group as a SQL Server login. In Cloud SQL for SQL Server, you can enable similar capabilities, as described in this section.
Option 1: Add user accounts and groups as logins to SQL ServerIf you have multiple domains, in multiple forests, and you have multiple global groups, you can add all of the individual user accounts, and the global and universal groups, directly as logins to SQL Server. As an example of Option 1, see the following diagram:
Option 2: Define a universal group in one of your domainsIf your domains are in the same forest, you can define a universal group in one of your domains. Then you can add all of the individual user accounts, and the global and universal groups, as children of that defined universal group, and add the defined universal group as a SQL Server login. As an example of Option 2, see the following diagram:
Limitations and alternatives Note: For information related to this section, see Unsupported for integration.The following limitations apply when integrating with Managed Microsoft AD:
CustomerDbRootRole
role, which has this SQL Server Agent fixed database role: SQLAgentUserRole
. However, users created through SQL Server directly, such as Managed Microsoft AD users, cannot be granted this role, or use SQL Server Agent, because the MSDB database where this role must be granted is protected.ad.mydomain.com
, then create SQL Server logins for ad\user
, rather than for ad.mydomain.com\user
.private.myinstance.us-central1.myproject.cloudsql.mydomain.com
. Netbios names aren't supported, nor are any short names if DNS suffixes are omitted.If you're using Windows Authentication and you want to establish a TLS connection without trusting the server certificate, you must rotate the certificates after Windows Authentication is enabled on the instance.
If the connection fails and one of your certificates was created before March 15, 2025, you must rotate the server certificate again and try the connection again.
Unsupported for integration Note: For alternatives to some unsupported operations, see Limitations and alternatives.The following features are unsupported when integrating with Managed Microsoft AD:
sqlserver
login.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4