Cloud SQL for SQL Server は、Managed Service for Microsoft Active Directory(別名 Managed Microsoft AD)と統合できます。
このページには、統合を開始する前に確認すべき情報が記載されています。以下の情報(制限事項を含む)を確認後、Managed Microsoft AD での Cloud SQL の使用をご覧ください。
マネージド Microsoft AD との統合のメリット
認証、認可などは、マネージド Microsoft AD を介して行うことができます。たとえば、インスタンスをマネージド Microsoft AD ドメインに結合させると、AD ベースの ID で Windows 認証を使用してログインできるようになります。
Cloud SQL for SQL Server を AD ドメインと統合すると、Cloud をオンプレミスの AD ドメインと統合できるという利点もあります。
統合の前提条件
インスタンスに Windows 認証のサポートを追加して、マネージド Microsoft AD と統合できます。ただし、統合を行う前に、Google Cloud プロジェクトで次のものが必要です。
- マネージド Microsoft AD ドメイン。ドメインの設定については、ドメインを作成するをご覧ください。
- オンプレミス AD ドメインには、マネージド AD の信頼が必要です。一方向の信頼の作成と、オンプレミスの AD ユーザーを使用して Cloud SQL への Windows ログインを作成するをご覧ください。
- 以下で説明するように、プロダクトごととプロジェクトごとのサービス アカウントについては、サービス アカウントの作成をご覧ください。
サービス アカウントを作成して構成する
マネージド Microsoft AD と統合する予定の各プロジェクトに、プロダクトごと、プロジェクトごとのサービス アカウントが必要です。gcloud
または Console を使用して、プロジェクト レベルでアカウントを作成します。プロダクトごと、プロジェクトごとのサービス アカウントには、プロジェクトに対する managedidentities.sqlintegrator
ロールを付与する必要があります。詳細については、gcloud projects set-iam-policy をご覧ください。
Google Cloud コンソールを使用している場合、Cloud SQL によって自動的にサービス アカウントが作成され、managedidentities.sqlintegrator
のロールを付与するように求められます。
gcloud
でサービス アカウントを作成するには、次のコマンドを実行します。
gcloud beta services identity create --service=sqladmin.googleapis.com \ --project=PROJECT_NUMBER
このコマンドは、次の形式でサービス アカウント名を返します。
service-PROJECT_NUMBER
@gcp-sa-cloud-sql.iam.gserviceaccount.com
サービス アカウント名の例を次に示します。
service-333445@gcp-sa-cloud-sql.iam.gserviceaccount.com
統合に必要な権限を付与するには、既存の権限が必要です。必要な権限については、必要な権限をご覧ください。
統合に必要な権限を付与するには、次のコマンドを実行します。マネージド Microsoft AD が別のプロジェクトにある場合、AD_PROJECT_ID
は Managed Service for Microsoft Active Directory インスタンスを含むプロジェクトである必要があります。一方、サービス アカウントの SQL_PROJECT_NUMBER
は SQL Server インスタンスを含むプロジェクトである必要があります。
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
gcloud beta services identity create もご覧ください。
マネージド Microsoft AD との統合に関するベスト プラクティス
統合を計画する場合は、次の点を確認してください。
- 統合の前提条件
- 別のプロジェクトのマネージド AD ドメインとの統合
- マネージド Microsoft AD のドキュメント
- 追加のリージョンにドメイン コントローラをデプロイする
- AD 診断ツールを使用して、Google Cloud コンソールでオンプレミス ドメインと Cloud SQL for SQL Server インスタンスの AD の設定の問題をトラブルシューティングします。
SQL Server インスタンスとマネージド AD インスタンスを同じリージョンに配置すると、ネットワーク レイテンシを最小限に抑え、最適なパフォーマンスを実現できます。したがって、可能な場合には、同じリージョンに SQL Server インスタンスと AD インスタンスを設定します。さらに、それらのインスタンスを同じリージョンに設定するかどうかを問わず、プライマリ リージョンとバックアップ リージョンを設定して高可用性を確保します。
Managed Microsoft AD と統合するためのトポロジ
Cloud SQL for SQL Server は、ドメイン ローカル グループをサポートしていません。ただし、次のように設定を変更できます。
- グローバル グループまたは個々のユーザーのログインを SQL Server に直接追加する
- すべてのグループとユーザーが同じフォレストに属している場合は、ユニバーサル グループを使用する
ドメインのローカル グループがサポートされている場合、個々のユーザー グループ、グローバル グループとユニバーサル グループは、ドメインのローカル グループの子として追加できます(SQL Server へのアクセスは保護されます)。これにより、ドメイン ローカル グループを SQL Server のログインとして追加できます。このセクションで説明するように、Cloud SQL for SQL Server で同様の機能を有効にできます。
オプション 1: SQL Server へのログインとしてユーザー アカウントとグループを追加する
複数のフォレストに複数のドメインがあり、複数のグローバル グループが存在している場合、個々のユーザー アカウント、グローバル グループ、ユニバーサル グループすべてを SQL Server へのログインとして直接追加できます。次の図にオプション 1 の例を示します。
オプション 2: いずれかのドメインでユニバーサル グループを定義する
ドメインが同じフォレストにある場合は、いずれかのドメインにユニバーサル グループを定義できます。次に、個々のユーザー アカウント、グローバル グループとユニバーサル グループを定義済みのユニバーサル グループの子として追加し、定義済みのユニバーサル グループを SQL Server ログインとして追加します。次の図にオプション 2 の例を示します。
制限事項と代替案
マネージド Microsoft AD と統合する場合は、次の制限が適用されます。
- ドメインのローカル グループはサポートされていませんが、SQL Server 内でグローバル グループまたは個別のユーザーのログインを直接追加できます。または、すべてのグループとユーザーが同じフォレストに属する場合は、ユニバーサル グループを使用できます。
- 一般に、Google Cloud コンソールで作成した新しいユーザーには
CustomerDbRootRole
ロールが割り当てられます。このロールには、次の SQL Server エージェントの固定データベース ロールが含まれます(SQLAgentUserRole
)。ただし、マネージド Microsoft AD ユーザーなど、SQL Server で直接作成されたユーザーは、このロールを付与したり、SQL Server Agent を使用することはできません。これは、このロールを付与する必要がある MSDB データベースが保護されているためです。 - 制限されたオペレーションによっては、「Windows NT フループ / ユーザーに関する情報を取得できませんでした」というエラーが発生する可能性があります。このタイプの制限付きオペレーションの一例として、信頼関係を介して接続されたドメインからのユーザーのログインを作成するというものがあります。別の例としては、信頼関係を介して接続されたドメインのユーザーに権限を付与するというものです。このようなケースでは、多くの場合、オペレーションの再試行は成功します。再試行に失敗した場合は、接続を閉じてから新しい接続を開きます。
- 完全修飾ドメイン名(FQDN)は、Windows の SQL Server ではサポートされていません。そのため、SQL Server ログインを作成するときは、FQDN ではなくドメイン名(略称)を使用します。たとえば、ドメイン名が
ad.mydomain.com
の場合、ad.mydomain.com\user
ではなくad\user
の SQL Server ログインを作成します。 - SQL Server インスタンスにアクセスするには、常に FQDN を使用します。たとえば、
private.myinstance.us-central1.myproject.cloudsql.mydomain.com
のような FQDN を使用できます。NetBIOS 名はサポートされていません。また、DNS サフィックスを省略した場合は略称も使用できません。 - Active Directory ユーザーとグループに基づく SQL Server ログインは、Google Cloud コンソールから管理できません。
- Cloud SQL では、SQL Server インスタンスが 2021 年 3 月 12 日以前に作成された場合、このインスタンスは、Managed Microsoft AD と統合できません。
- Windows 認証は外部の信頼では機能しません。次のようなエラーが表示されます。「ターゲット プリンシパル名が正しくありません。SSPI コンテキストを生成できません。」また、Microsoft の推奨事項に関連して、Kerberos 認証には外部信頼ではなくフォレストの信頼を使用してください。
統合の対象外
マネージド Microsoft AD と統合する場合、次の機能はサポートされていません。
- ドメイン ローカル グループ
- 信頼関係を介して接続されたドメインから、ユーザーが SQL Server ログインを削除する。このおオペレーションは、マネージド ドメインのユーザーまたは
sqlserver
ログインにより実行できます。 - NTLM 認証。
- 信頼関係を介して接続されたドメインの IP アドレスを使用してログインする。
- 長い名前(63 文字を超える)を持つインスタンス。
次のステップ
- マネージド Microsoft AD ドメインを作成するためのクイックスタートを確認する。
- 統合 Cloud SQL インスタンスの作成の準備をする。
- オンプレミスのドメインとマネージド Microsoft AD のドメイン間の信頼関係を作成する方法を確認する。
- 統合インスタンスを表示する方法を確認する。