Cloud SQL for SQL Server と Microsoft Entra ID の統合により、既存の Microsoft Entra ID テナントを使用して、データベースの一元的な ID とアクセス管理(IAM)が提供されます。
この統合には次の利点があります。
一元化された認証。ユーザーとアプリケーションが、既存の Microsoft Entra ID ID を使用して Cloud SQL for SQL Server インスタンスにログインできるようにします。パスワードを再入力する必要はありません。この機能により、SQL Server 固有のログインとパスワードを個別に管理する必要がなくなります。
セキュリティの強化。多要素認証(MFA)や条件付きアクセス(CA)ルールなど、組織の既存のセキュリティ ポリシーをデータベース レベルで適用できます。
簡素化されたユーザー管理。ユーザーの Microsoft Entra ID アカウントが無効または削除されると、ユーザーのデータベース アクセス権が自動的に取り消されます。この機能により、オフボーディングとアクセス レビューを簡素化できます。
統合の前提条件
Cloud SQL for SQL Server と Microsoft Entra ID の統合を使用するには、インスタンスが次の要件を満たしている必要があります。
既存の SQL Server 2022 インスタンスがあるか、新しいインスタンスを作成する必要があります。
Microsoft Entra ID 認証は SQL Server 2022 でのみサポートされています。SQL Server 2017 または SQL Server 2019 では使用できません。
Microsoft Entra ID 認証を有効にします。
Microsoft Entra ID 認証を有効にする前に、Azure ポータルで次の手順を完了します。
- Microsoft Entra テナント ID を確認します。
Microsoft Entra ID で新しいアプリケーション登録を作成します。
Cloud SQL for SQL Server は、このアプリケーションを使用して Microsoft Entra テナント ID と通信します。アプリケーションを作成するときに、アプリケーション ID またはクライアント ID をメモします。
アプリケーションにディレクトリ データの読み取り権限を付与します。
- 先ほど作成したアプリケーション登録を選択し、[API 権限] をクリックします。
- [権限を追加] > [Microsoft Graph] > [アプリケーションの権限] を選択します。
- 次のいずれかの権限セットを付与します。
- オプション 1.
- Directory.Read.All
- 方法 2. より詳細な権限を提供します。
- Application.Read.All
- Group.Read.All
- User.Read.All
- オプション 1.
- テナント全体の管理者の同意を付与して、アプリケーションがこれらの権限を使用できるようにします。
ネットワーク接続
Microsoft Entra ID は、認証にパブリック エンドポイントを使用するパブリック サービスです。Microsoft Entra ID 認証が正しく機能するには、Cloud SQL インスタンスがこれらのパブリック エンドポイントへのアウトバウンド接続を確立できる必要があります。以降のセクションでは、インスタンスのネットワーク接続構成に基づいて、次の手順について説明します。
パブリック IP を持つインスタンス
Cloud SQL インスタンスがパブリック IP アドレスで構成されている場合、インターネットへのアウトバウンド アクセスが組み込まれています。
Microsoft Entra ID 認証を機能させるために追加のネットワーク構成は必要ありませんが、続行する前に制限事項を確認してください。
プライベート IP を使用するインスタンス
Cloud SQL インスタンスがプライベート IP アドレスのみで構成されている場合、インターネットに直接アクセスできません。インスタンスが Microsoft のパブリック ID エンドポイントにアクセスできるように、下り(外向き)パスを構成する必要があります。Microsoft Entra ID 統合の構成は、プライベート インスタンスの構成方法によって異なります。
Private Service Connect
プライベート IP アドレスを使用するように Cloud SQL インスタンスが構成されている場合は、Private Service Connect を使用して Microsoft Entra ID を有効にすることをおすすめします。これにより、次のような特定のオーバーヘッド メンテナンス タスクが不要になります。
- 踏み台インスタンス VM の管理。
- ルートの維持。
- PSA 接続に必要なルートなど、広すぎるルートを作成する。
続行する前に、Microsoft Entra ID の使用に関する制限事項をご確認ください。
接続を有効にするには、コンシューマー VPC で Cloud ネットワーク アドレス変換(Cloud NAT)を構成する必要があります。これにより、PSC 対応インスタンスは、パブリック Microsoft エンドポイントへのアウトバウンド トラフィックに Cloud NAT ゲートウェイを使用できます。有効にすると、内部ルーティングによってトラフィックが制限され、Microsoft Entra ID 関連のトラフィックのみが Cloud NAT インスタンスに到達します。
接続を有効にするには、次の必須の手順を完了します。
プライベート サービス アクセス
Cloud SQL インスタンスがプライベート IP アドレスを使用するように構成されていて、PSA を使用している場合は、Microsoft Entra ID への接続を有効にするために次の手順が必要になります。
VPC 内に踏み台インスタンス VM をデプロイします。
プロジェクトに踏み台ホスト VM を作成する場合は、IP 転送を有効にする必要があります。Linux ベースの踏み台インスタンス VM を作成した場合は、作成した踏み台インスタンス VM を IP 転送を実行するように構成します。
sudo sysctl net.ipv4.conf.all.forwarding=1 sudo iptables --table nat --append POSTROUTING --out-interface ens4 -j MASQUERADECloud SQL インスタンスから踏み台ホスト VM ホストを経由してインターネットに Microsoft Entra ID 認証トラフィックを転送するために必要なネットワーク ルートを構成します。
各 Microsoft Entra ID エンドポイントに対応するルートを追加します。現在の IP 範囲は、Azure IP 範囲とサービスタグのリソース ファイルの
AzureActiveDirectory.ServiceEndpointセクションにあります。gcloud
Microsoft Entra ID の各 IP 範囲に対して、2 つのルートを作成します。
VM_NAMEとVM_ZONEは、踏み台ホスト VM の実際の名前とゾーンに置き換えます。gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE \ --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE --priority=999 \ --next-hop-instance=VM_NAME --next-hop-instance-zone=VM_ZONE \ --next-hop-ilb=ILB_VALUE次のように置き換えます。
- PROJECT_ID: Cloud SQL インスタンスが存在するプロジェクトの ID。
- NAME: 作成するルートの名前。
- NETWORK: Cloud SQL インスタンスが存在するネットワークの名前。
- RANGE: 使用する IP 範囲。
- VM_NAME: 含める要塞ホスト VM の名前。
- VM_ZONE: 含める踏み台インスタンス VM のゾーン(
us-central1など)。 ILB_VALUE: 省略可。内部 TCP/UDP ロードバランサの転送ルールの名前または IP アドレス。踏み台ホスト VM の前にロードバランサを構成した場合は、このコマンドに
--next-hop-ilbフラグを指定する必要があります。詳細については、ネクストホップとしての内部パススルー ネットワーク ロードバランサをご覧ください。
例を次に示します。
gcloud --project=my-customer-project compute routes create my-route-1 --network=default --destination-range=20.20.32.0/27 --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=my-customer-project compute routes create my-route-2 --network=default --destination-range=20.20.32.0/27 --priority=999 --next-hop-instance=my-bastion-vm --next-hop-instance-zone=us-central1-c --next-hop-ilb=fr-ilb1前の手順と同じコマンドを使用して、Microsoft Entra ID 証明書の取り消しチェックのトラフィックを許可する同じ構成を適用します。DigiCert 証明書のステータス IP アドレスに記載されている IP 範囲を使用します。
この手順を完了しない場合でも、Microsoft Entra ID 認証は機能する可能性がありますが、新しい接続を開くときに遅延が発生する可能性があります。
Microsoft Entra ID 認証を管理する
新しいインスタンスまたは既存のインスタンスで Entra ID 認証を有効にできます。
Microsoft Entra ID 認証が有効になっているインスタンスを作成する
新しい Cloud SQL for SQL Server インスタンスを作成するときに、Microsoft Entra ID 認証を有効にできます。Azure ポータルで構成したアプリ登録の特定の Microsoft Entra テナント ID とアプリケーション ID(クライアント ID)を指定する必要があります。
詳細については、前提条件をご覧ください。
gcloud
gcloud beta sql instances create INSTANCE_NAME \
--database-version=EDITION \
--tier=TIER \
--network=NETWORK
--root-password=PASSWORD
--entra-id-tenant-id=TENANT_ID \
--entra-id-application-id=APPLICATION_ID
次のように置き換えます。
- INSTANCE_NAME: 作成するインスタンスの名前。
- EDITION: 使用するインスタンス エディション(
SQLSERVER_2022_STANDARDなど)。 - TIER: 使用するインスタンス階層またはマシンタイプ(
db-custom-2-3840など)。 - NETWORK: 使用するネットワーク名。
- PASSWORD: インスタンスのパスワード。
- TENANT_ID: Microsoft Entra テナント ID。
- APPLICATION_ID: アプリケーションまたはクライアント ID。
例を次に示します。
gcloud beta sql instances create my-entraid-instance \
--database-version=SQLSERVER_2022_STANDARD \
--tier=db-custom-2-3840 \
--assign-ip \
--root-password=D61Xv36f!0lE \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 作成するインスタンスが配置されるプロジェクトの名前。
- INSTANCE_ID: 作成するインスタンスの ID。
- EDITION: 使用するインスタンス エディション(
SQLSERVER_2022_STANDARDなど)。 - REGION: インスタンスを配置するリージョン(例:
us-central1)。 - PASSWORD: インスタンスのパスワード。
- TIER: 使用するインスタンス階層またはマシンタイプ(
db-custom-2-3840など)。 - NETWORK: 使用するネットワーク名。
- TENANT_ID: Microsoft Entra テナント ID。
- APPLICATION_ID: アプリケーションまたはクライアント ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 作成するインスタンスが配置されるプロジェクトの名前。
- INSTANCE_ID: 作成するインスタンスの ID。
- EDITION: 使用するインスタンス エディション(
SQLSERVER_2022_STANDARDなど)。 - REGION: インスタンスを配置するリージョン(例:
us-central1)。 - PASSWORD: インスタンスのパスワード。
- TIER: 使用するインスタンス階層またはマシンタイプ(
db-custom-2-3840など)。 - NETWORK: 使用するネットワーク名。
- TENANT_ID: Microsoft Entra テナント ID。
- APPLICATION_ID: アプリケーションまたはクライアント ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
既存のインスタンスで Microsoft Entra ID 認証を管理する
既存のインスタンスで Microsoft Entra ID 構成を有効、変更、無効にすることはいつでも可能です。
インスタンスの構成を変更するには、新しいテナント ID とアプリケーション(クライアント)ID の値または削除されたテナント ID とアプリケーション(クライアント)ID の値でインスタンスにパッチを適用する必要があります。
このプロセスでは、ドメインへの参加やドメインからの離脱は行いません。
Microsoft Entra ID との統合を有効または無効にすることなく、テナント ID とアプリケーション ID の値を更新できます。
gcloud
gcloud beta sql instances patch INSTANCE_NAME \
--entra-id-tenant-id="NEW_TENANT_ID" \
--entra-id-application-id="NEW_APPLICATION_ID"
次のように置き換えます。
- INSTANCE_NAME: 変更するインスタンスの名前。
- NEW_TENANT_ID: 新しい Microsoft Entra テナント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
- NEW_APPLICATION_ID: 新しいアプリケーションまたはクライアント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
例を次に示します。
gcloud beta sql instances patch my-existing-instance \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 変更するインスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 変更するインスタンスの ID。
- TENANT_ID: Microsoft Entra テナント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
- APPLICATION_ID: アプリケーションまたはクライアント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 変更するインスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 変更するインスタンスの ID。
- TENANT_ID: Microsoft Entra テナント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
- APPLICATION_ID: アプリケーションまたはクライアント ID。Microsoft Entra ID を無効にするには、この文字列を空のままにします。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
アプリケーションに証明書を追加する
Microsoft Entra ID で Cloud SQL for SQL Server インスタンスを認証するには、Cloud SQL for SQL Server インスタンスの公開証明書を Microsoft Entra ID アプリの登録にアップロードする必要があります。
インスタンスで Microsoft Entra ID 認証を有効にしたら、Microsoft Entra ID のインスタンス固有の証明書を作成します。
gcloud
gcloud beta sql ssl entraid-certs create --instance=INSTANCE_NAME次のように置き換えます。
- INSTANCE_NAME: 証明書を作成するインスタンスの名前。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }インスタンスの詳細を取得して、作成した証明書の詳細を取得します。
gcloud
gcloud beta sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"次のように置き換えます。
- INSTANCE_NAME: 作成した証明書に関連付けられているインスタンスの名前。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
このコマンドは、ファイルに保存して後で Azure ポータルにアップロードできる証明書を出力します。
ファイルから埋め込みの改行文字をすべて削除し、各改行を手動で区切る必要があります。これを行わないと、ファイルのアップロードが失敗します。
たとえば、次のようなテキスト文字列が表示されることがあります。
Line1\Line2\Line3次のように、各行を手動で区切る必要があります。
Line1 Line2 Line3このタスクを手動で実行しない場合は、次のコマンドを使用します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクト ID。
- INSTANCE_NAME: 作成した証明書に関連付けられているインスタンスの名前。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
このコマンドは、ファイルに保存して後で Azure ポータルにアップロードできる証明書を出力します。
ファイルから埋め込みの改行文字をすべて削除し、各改行を手動で区切る必要があります。これを行わないと、ファイルのアップロードが失敗します。
たとえば、次のようなテキスト文字列が表示されることがあります。
Line1\Line2\Line3次のように、各行を手動で区切る必要があります。
Line1 Line2 Line3このタスクを手動で実行しない場合は、次のコマンドを使用します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクト ID。
- INSTANCE_NAME: 作成した証明書に関連付けられているインスタンスの名前。
Azure ポータルに証明書を追加します。
- Azure ポータルで [アプリの登録] に移動します。
- [証明書とシークレット] を開きます。
- [証明書をアップロード] を選択します。インスタンスから取得した証明書ファイルを参照して追加します。
- [OK] をクリックします。
Microsoft Entra ID 証明書をローテーションする
Microsoft Entra ID 証明書は、有効期限が切れる前にローテーションする必要があります。このプロセスは、予定されている有効期限の少なくとも 1 週間前に開始することをおすすめします。
アプリケーションに証明書を追加するの手順に沿って、Cloud SQL for SQL Server インスタンスに新しい非アクティブな証明書を作成し、Azure portal を使用して Microsoft Entra ID にアップロードします。現在の有効な証明書には影響しません。
Cloud SQL for SQL Server インスタンスで新しい証明書を有効にします。これにより、Cloud SQL for SQL Server は、すべての新しい認証に新しい証明書を使用するようになります。
gcloud
gcloud beta sql ssl entraid-certs rotate --instance=INSTANCE_NAME次のように置き換えます。
- INSTANCE_NAME: ローテーションする証明書に関連付けられているインスタンスの名前。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
これで、インスタンスで新しい証明書が使用されるようになりました。
古い証明書は、Microsoft Entra ID アプリの登録と Cloud SQL for SQL Server インスタンスから安全に削除できます。詳細については、Microsoft Entra ID でアプリケーション認証情報を追加、管理するをご覧ください。
Microsoft Entra ID 証明書をロールバックする
新しい証明書にローテーションした後に問題が発生した場合は、前の証明書にロールバックできます。
ロールバックを実行するには、以前の証明書が有効であり、Microsoft Entra ID アプリ登録で信頼されている必要があります。
次のコマンドは、Cloud SQL for SQL Server インスタンスで指定された以前の証明書を直ちに再有効化します。
gcloud
gcloud beta sql ssl entraid-certs rollback --instance=INSTANCE_NAME
次のように置き換えます。
- INSTANCE_NAME: ロールバックする証明書に関連付けられているインスタンスの名前。
REST v1
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 証明書をロールバックするインスタンスの ID。
- CERTIFICATE_NAME: 古い証明書の置き換えに使用する新しい証明書の名前(
sha1Fingerprintなど)。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
リクエストの本文(JSON):
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 証明書をロールバックするインスタンスの ID。
- CERTIFICATE_NAME: 古い証明書の置き換えに使用する新しい証明書の名前(
sha1Fingerprintなど)。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
リクエストの本文(JSON):
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Microsoft Entra ID の初回ログインを作成する
インスタンスで Microsoft Entra ID 認証を有効にした後、Microsoft Entra ID ログインを作成する必要があります。
最初の Microsoft Entra ID ログインを作成します。
Microsoft Entra ID のユーザーまたはグループを表すこの初期ログインは、T-SQL を使用して作成できません。gcloud CLI または Cloud SQL Admin API を使用して作成する必要があります。
gcloud
gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USER次のように置き換えます。
- USER_NAME: 作成する Cloud SQL for SQL Server ユーザーの名前。
- INSTANCE_NAME: Microsoft Entra ID ログインを作成するインスタンスの名前。
- ENTRAID_USER: Microsoft Entra ID のユーザー名。
例を次に示します。
gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USERREST v1
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 更新するインスタンスの ID。
- USER_NAME: 作成する Cloud SQL for SQL Server ユーザーの名前。
- ENTRAID_USER: Microsoft Entra ID のユーザー名。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
リクエストの本文(JSON):
{ "name": "USER_NAME" "type": "ENTRAID_USER" }リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
以下の基本的な API 呼び出しでは、指定可能なフィールドがすべて示されているわけではありません。JSON リクエストのプロトタイプについては、設定をご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが配置されているプロジェクトの ID。
- INSTANCE_ID: 更新するインスタンスの ID。
- USER_NAME: 作成する Cloud SQL for SQL Server ユーザーの名前。
- ENTRAID_USER: Microsoft Entra ID のユーザー名。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
リクエストの本文(JSON):
{ "name": "USER_NAME" "type": "ENTRAID_USER" }リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }最初の Microsoft Entra ID ログインが作成されると、そのユーザーとしてデータベースに接続できます。
後続の Microsoft Entra ID ログインを作成します。
前の手順で説明したように、Microsoft Entra ID の追加のログインを作成して管理できます。
または、SQL Server Management Studio(SSMS)などの別のツールを使用する場合は、最初に他のログインを管理する権限を最初のログインに付与する必要があります。
GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRoleENTRAID_USER は、Microsoft Entra ID のユーザー名に置き換えます。
権限が付与されると、このログインは標準の T-SQL コマンドを使用して他の Microsoft Entra ID ログインを作成して管理できます。コマンドの例を次に示します。
CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDERENTRAID_USER は、Microsoft Entra ID のユーザー名に置き換えます。
Microsoft Entra ID ログインに基づいてユーザーを作成したり、権限を付与したりするには、標準の T-SQL コマンドを使用します。
適切な構文を使用してログインを作成する方法など、詳細については、アプリ登録を使用して SQL Server の Microsoft Entra 認証を設定するをご覧ください。
ベスト プラクティス
権限を分離し、セキュリティ境界をより適切に定義するために、Cloud SQL for SQL Server インスタンスごとに一意の Microsoft Entra ID アプリケーション登録を作成することを強くおすすめします。アプリケーションの認証情報を取り消しても、他の関連性のないインスタンスには影響しません。
詳細については、Microsoft Entra ID でアプリケーションを登録する方法をご覧ください。
トラブルシューティング
以降のセクションでは、Microsoft Entra ID 統合の管理中に発生する可能性のある問題に対処する方法について説明します。
プライベート IP インスタンスのネットワーク接続に関する問題
統合のセットアップ中に、次の問題が発生することがあります。
- Microsoft Entra ID ログインの作成が遅い
- Microsoft Entra ID ログインを作成できない
- Microsoft Entra ID 認証を使用してインスタンスに接続できない
これらの問題に対処するには、次の接続テストを実施します。
同じ Google Cloud プロジェクトと VPC 内で、Cloud SQL for SQL Server インスタンスと同じリージョンに、プライベート IP のみで構成されたテスト VM を作成します。
リモート デスクトップ プロトコル(RDP)またはセキュア シェル プロトコル(SSH)を使用して、作成した VM に接続します。次に、次のコマンドを実行して到達可能性をテストします。次の手順は、Linux ベースと Windows ベースの両方の VM に適用できます。
curl -4iv login.microsoftonline.com curl -4iv graph.microsoft.com curl -4iv ocsp.digicert.com
タイムアウトまたは接続拒否エラーが原因で、これらのエンドポイントに到達できない場合は、ネットワーク構成で次の点を確認してください。
- Private Service Connect の場合は、アウトバウンドのインターネット アクセスを許可するように Cloud NAT が正しく構成されていることを確認します。
- プライベート サービス アクセスについては、カスタムルートと踏み台ホストの構成を確認します。
- VPC ファイアウォール ルールを確認して、これらのドメインへの下り(外向き)トラフィックがブロックされていないことを確認します。
一般的なエラー メッセージ
Microsoft Entra ID 認証中に、次のログイン エラーが発生することがあります。
Login failed for user ""
この問題を解決するには、この Microsoft Entra ID ユーザーの SQL Server ログインが存在することを確認します。
Microsoft Active Directory からの移行
次のシナリオでは、既存の Microsoft Active Directory 認証を無効にせずに Microsoft Entra ID 認証を有効にできます。
- 段階的な移行を実行する。顧客管理の Active Directory(CMAD)または Managed Service for Microsoft Active Directory を使用して、認証機関を Microsoft Active Directory から Microsoft Entra ID に移行する。
- ハイブリッド環境を使用する。Microsoft Active Directory と Microsoft Entra ID の両方を同時に有効にしておく。
リードレプリカ
- Microsoft Entra ID が有効になっているプライマリ インスタンスにリードレプリカを追加すると、リードレプリカは Microsoft Entra ID を使用するように自動的に構成されます。
- プライマリ インスタンスで Microsoft Entra ID が有効になっている場合に、そのインスタンスにバックアップを復元すると、ID が変更されないため、関連付けられている読み取りレプリカは Microsoft Entra を使用するように自動的に構成されます。
クローン作成されたインスタンスと別のインスタンスへの復元
次のシナリオでは、Microsoft Entra ID の統合は新しいインスタンスに自動的に構成されません。
- プライマリ インスタンスのクローン。
- プライマリ以外のインスタンスに復元されたバックアップ。
このような場合は、新しいインスタンスで Microsoft Entra ID を手動で有効にしてから、その証明書を Microsoft Entra ID アプリケーションに再度アップロードする必要があります。この要件は、複数の無関係なインスタンスが同じアプリケーション ID を使用することを防ぐためのセキュリティ対策です。
制限事項
- Microsoft Entra ID 認証は SQL Server 2022 でのみサポートされています。SQL Server 2017 または SQL Server 2019 では使用できません。
- インスタンスのクローンを作成するか、バックアップを別のインスタンスに復元した場合、新しいインスタンスで Microsoft Entra ID 統合が自動的に構成されることはありません。詳細については、バックアップと復元をご覧ください。
- パブリック IP で構成された高可用性(HA)インスタンスでは、Microsoft Entra ID 認証はサポートされていません。
- Microsoft Entra ID 認証は、PSC 対応のプライマリ インスタンスと、対応するリードレプリカ インスタンスではサポートされていません。
- レプリカがアタッチされているプライマリ インスタンスで Microsoft Entra ID 証明書をローテーションすることは避けてください。プライマリ インスタンスの証明書をローテーションしても、レプリカ証明書は更新されません。
- Cloud SQL for SQL Server と Microsoft Entra ID の統合は、gcloud CLI または Cloud SQL Admin API を使用して構成できます。この統合は Terraform を使用して管理できません。