Microsoft Entra 認証を使用する
適用対象: Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
この記事では、Microsoft Entra ID (旧称 Azure Active Directory) で、Microsoft Entra ID を使用して Azure SQL Database、Azure SQL Managed Instance、Windows Azure VM 上の SQL Server、Azure Synapse Analytics の Synapse SQL、Windows および Linux 用の SQL Server に対して認証を行う方法の概要を示します。
Microsoft Entra を作成して設定した後、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics の Synapse SQL で Microsoft Entra を構成する方法については、「Microsoft Entra を構成する方法」および「Azure VM 上の SQL Server を使用して Microsoft Entra を構成する方法」を参照してください。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
概要
Microsoft Entra 認証を使用すると、データベース ユーザーと他の Microsoft サービスの ID を一元管理できます。 ID の一元管理では、1 か所でデータベース ユーザーを管理できるようになるため、アクセス許可の管理が容易になります。 次のような利点があります。
SQL Server 認証の代替方法が用意されています。
サーバー全体でユーザー ID が急増するのを防ぐために役立ちます。
1 か所でのパスワードのローテーションを許可します。
Microsoft Entra グループを使用して、データベースのアクセス許可を管理できます。
統合 Windows 認証や、Microsoft Entra ID でサポートされる他の認証形式を有効にすることで、パスワードが保存されないようにすることができます。
Microsoft Entra 認証では、包含データベース ユーザーを使用して、データベース レベルで ID を認証します。
Microsoft Entra ID は、SQL Database と SQL Managed Instance に接続するアプリケーション向けにトークンベース認証をサポートしています。
Microsoft Entra 認証では次のことをサポートしています。
- Microsoft Entra クラウド専用 ID
- 以下をサポートする Microsoft Entra ハイブリッド ID
- シームレス シングル サインオン (SSO) と 2 つのオプション (パススルー認証とパスワード ハッシュ認証) を組み合わせたクラウド認証。
- フェデレーション認証。
- Microsoft Entra の認証方法と、どれを選ぶべきかに関する詳しい内容については、次の記事をご覧ください:
SQL Server Management Studio では、多要素認証で Microsoft Entra を使用する接続がサポートされています。 多要素認証には、電話、テキスト メッセージ、スマート カードと PIN、モバイル アプリ通知など、各種確認オプションによる強力な認証が用意されています。 詳細については、Azure SQL Database、SQL Managed Instance、Azure Synapse での Azure 多要素認証対応の SSMS サポートを参照してください
SQL Server Data Tools (SSDT) では、Microsoft Entra ID を使用したさまざまな認証オプションもサポートされています。 詳細については、「Microsoft SQL Server Data Tools (SSDT) での Microsoft Entra ID サポート材」を参照してください。
構成の手順には、Microsoft Entra 認証を構成して使用する次の手順が含まれます。
- Microsoft Entra テナント を作成して設定します
- 省略可能: 現在 Azure サブスクリプションに関連付けられている現在のディレクトリを関連付けるか、変更します。
- Microsoft Entra 管理者を作成します。
- クライアント コンピューターを構成します。
- Microsoft Entra ID にマップされている包含データベース ユーザーをデータベースに作成します。
- Microsoft Entra ID を使用してデータベースに接続します。
Note
Azure SQL、Azure VM、SQL Server 2022 の場合、Microsoft Entra 認証は Microsoft Entra ID からのアクセス トークンのみに対応しており、サードパーティのアクセス トークンには対応していません。 また、Microsoft Entra ID では、Microsoft Entra ID クエリをサード パーティのエンドポイントにリダイレクトすることもサポートされていません。 これは、すべての SQL プラットフォームと、Microsoft Entra 認証に対応するすべてのオペレーティング システムに適用されます。
信頼のアーキテクチャ
- Microsoft Entra ID、SQL Database、SQL Managed Instance、Windows Azure VM 上の SQL Server、Azure Synapse のクラウドの部分のみが、Microsoft Entra のネイティブ ユーザー パスワードに対応すると見なされます。
- Windows シングル サインオン資格情報 (または Windows 資格情報のユーザーとパスワード) をサポートするには、パススルー認証とパスワード ハッシュ認証のためのシームレスなシングル サインオン用に構成されたフェデレーション ドメインまたはマネージド ドメインから得られる Microsoft Entra 資格情報を使用します。 詳細については、「Microsoft Entra シームレス シングル サインオン」を参照してください。
- フェデレーション認証 (または Windows 資格情報のユーザー/パスワード) をサポートするには、ADFS ブロックとの通信が必要です。
Microsoft Entra ハイブリッド ID、セットアップ、および同期に関する詳細については、次の記事を参照してください。
- パスワード ハッシュ認証 - 「Microsoft Entra Connect 同期を使用したパスワード ハッシュ同期の実装」
- パススルー認証 - 「Microsoft Entra パススルー認証」
- フェデレーション認証 - 「Azure での Active Directory フェデレーション サービス (AD FS) のデプロイ」および「Microsoft Entra の接続とフェデレーション」
ADFS インフラストラクチャ (または Windows 資格情報のユーザーとパスワード) を使用したサンプルのフェデレーション認証については、以下の図を参照してください。 矢印は通信経路を示します。
次の図は、クライアントがトークンの送信によってデータベースへの接続を許可される、フェデレーション、信頼、およびホスティングの関係を示しています。 トークンは、Microsoft Entra ID によって認証され、データベースによって信頼されます。 顧客 1 は、ネイティブ ユーザーの Microsoft Entra ID またはフェデレーション ユーザーの Microsoft Entra ID を表します。 顧客 2 は、インポートされたユーザーなど、取りうるソリューションを表します。この例では、ADFS が Microsoft Entra ID と同期されているフェデレーション Microsoft Entra ID から取得しています。 重要なのは、Microsoft Entra 認証を使用してデータベースにアクセスするには、ホストしているサブスクリプションを Microsoft Entra ID に関連付ける必要があることを理解することです。 同じサブスクリプションを使用して、Azure SQL Database、SQL Managed Instance、または Azure Synapse リソースを作成する必要があります。
管理者の構造
Microsoft Entra 認証を使用する場合、元の Azure SQL データベース管理者と Microsoft Entra 管理者の 2 つのサーバー管理者アカウントがあります。 同じ概念が Azure Synapse に適用されます。 ユーザー データベースに最初の Microsoft Entra ID 包含データベース ユーザーを作成できるのは、Microsoft Entra アカウントに基づく管理者のみです。 Microsoft Entra ユーザーまたは Microsoft Entra グループを Microsoft Entra 管理者のログインにすることができます。 管理者がグループ アカウントの場合は、サーバー用に複数の Microsoft Entra 管理者を有効にすることで、すべてのグループ メンバーがそのアカウントを使用できます。 グループ アカウントを管理者として使用すると、SQL Database または Azure Synapse でユーザーまたはアクセス許可を変更することなく Microsoft Entra でグループ メンバーを一元的に追加および削除できるため、より管理しやすくなります。 いつでも構成できる Microsoft Entra 管理者 (ユーザーまたはグループ) は 1 つだけです。
Note
Azure SQL での Microsoft Entra 認証では、Azure SQL リソースが現在存在する 1 つの Microsoft Entra テナントのみがサポートされます。 このテナントのすべての Microsoft Entra オブジェクトは、このテナント内の Azure SQL へのアクセスを許可するユーザーとして設定できます。 Microsoft Entra 管理者は、Azure SQL リソースのテナントに所属している必要もあります。 異なるテナントから Azure SQL にアクセスする Microsoft Entra マルチテナント認証はサポートされていません。
アクセス許可
新しいユーザーを作成するには、データベースにおける ALTER ANY USER
アクセス許可が必要です。 ALTER ANY USER
アクセス許可は、任意のデータベース ユーザーに付与できます。 ALTER ANY USER
アクセス許可は、サーバーの管理者アカウント、そのデータベースの CONTROL ON DATABASE
または ALTER ON DATABASE
アクセス許可を持つデータベース ユーザー、db_owner
データベース ロールのメンバーも保持しています。
Azure SQL Database、Azure SQL Managed Instance、または Azure Synapse に包含データベース ユーザーを作成するには、Microsoft Entra ID を使用してデータベースまたはインスタンスに接続する必要があります。 最初の包含データベース ユーザーを作成するには、(データベースの所有者である) Microsoft Entra 管理者を使用してデータベースに接続する必要があります。 これは、SQL Database または Azure Synapse で Microsoft Entra 認証を構成して管理する方法で説明されています。 Azure SQL Database、Azure SQL Managed Instance、または Azure Synapse に対して Microsoft Entra 管理者が作成された場合にのみ、任意の Microsoft Entra 認証が可能です。 Microsoft Entra 管理者がサーバーから削除された場合、サーバー内で以前に作成した既存の Microsoft Entra ユーザーは、Microsoft Entra 資格情報を使用してデータベースに接続できなくなります。
Microsoft Entra の機能と制限事項
Microsoft Entra ID の次のメンバーを Azure SQL Database にプロビジョニングできます。
- Microsoft Entra ユーザー: 内部、外部、ゲスト、メンバーなど、Microsoft Entra テナント内の任意 の種類のユーザー 。 Active Directory のメンバーはメイン Microsoft Entra IDとの フェデレーション用に構成されており、シームレスなシングル サインオン用に構成できます。
- アプリケーション: Azure に存在するアプリケーションは、サービス プリンシパルまたはマネージド ID を使用して、Azure SQL データベースに対して直接認証できます。 認証にマネージド ID を使用することをお勧めします。パスワードレスであるため、開発者が管理する資格情報が不要になります。
- Microsoft Entra グループ。グループ メンバーシップに基づいて適切なユーザーとアプリケーションのアクセスを管理することで、組織全体のアクセス管理を簡略化できます。
db_owner
データベース ロールのメンバーであるグループに含まれている Microsoft Entra ユーザーは、Azure SQL Database と Azure Synapse に対して CREATE DATABASE SCOPED CREDENTIAL 構文を使用できません。 次のエラーが表示されます。SQL Error [2760] [S0001]: The specified schema name 'user@mydomain.com' either doesn't exist or you do not have permission to use it.
CREATE DATABASE SCOPED CREDENTIAL の問題を軽減するには、
db_owner
ロールを個々の Microsoft Entra ユーザーに直接追加します。Microsoft Entra プリンシパルによって実行された場合、以下のシステム関数はサポートされず、NULL 値を返します。
SUSER_ID()
SUSER_NAME(<ID>)
SUSER_SNAME(<SID>)
SUSER_ID(<name>)
SUSER_SID(<name>)
Azure SQL Database では、Microsoft Entra グループ メンバーシップの一部としてログインしているユーザーに暗黙的なユーザーを作成しません。 このため、その Microsoft Entra グループがそれらのアクセス許可を持つロールにメンバーとして追加されている場合でも、所有権の割り当てが必要なさまざまな操作が失敗します。
たとえば、db_ddladmin ロールを持つ Microsoft Entra グループを介しデータベースにサインインしたユーザーは、スキーマに明示的に定義されていない限り (テーブル、ビュー、型など)、CREATE SCHEMA、ALTER SCHEMA、およびその他のオブジェクト作成ステートメントを実行することができません。 これを解決するには、そのユーザーに対して Microsoft Entra ユーザーを作成するか、Microsoft Entra グループを変更して DEFAULT_SCHEMA を dbo に割り当てる必要があります。
SQL Managed Instance
Microsoft Entra のサーバー プリンシパル (ログイン) とユーザーは、SQL Managed Instance でサポートされています。
Microsoft Entra グループにマップされた Microsoft Entra ログインをデータベース所有者として設定することは、SQL Managed Instance ではサポートされていません。
- この拡張機能により、グループが
dbcreator
サーバー ロールの一部として追加されたときに、このグループのユーザーが SQL Managed Instance に接続して新しいデータベースを作成できますが、データベースにアクセスすることはできません。 これは、新しいデータベース所有者が SA であり、Microsoft Entra ユーザーではないためです。 この問題は、dbcreator
サーバー ロールに個々のユーザーが追加された場合は発生しません。
- この拡張機能により、グループが
SQL エージェントの管理とジョブの実行は、Microsoft Entra ログインでサポートされています。
データベースのバックアップと復元操作は、Microsoft Entra サーバー プリンシパル (ログイン) で実行できます。
Microsoft Entra サーバー プリンシパル (ログイン) と認証イベントに関連するすべてのステートメントの監査がサポートされています。
sysadmin サーバー ロールのメンバーである Microsoft Entra サーバー プリンシパル (ログイン) の専用管理者接続がサポートされています。
- sqlcmd ユーティリティおよび SQL Server Management Studio 経由でサポートされています。
Microsoft Entra サーバー プリンシパル (ログイン) によるログオン イベントでは、ログオン トリガーがサポートされています。
Service Broker とデータベース メールは、Microsoft Entra サーバー プリンシパル (ログイン) を使用して設定できます。
Microsoft Entra 識別情報を使用して接続する
Microsoft Entra 認証は、Microsoft Entra ID の識別情報を使用してデータベースに接続するために次の方法をサポートしています。
- Microsoft Entra パスワード
- Microsoft Entra 統合
- 多要素認証を使用した Microsoft Entra Universal
- アプリケーション トークン認証を使用する
Microsoft Entra サーバー プリンシパル (ログイン) では、次の認証方法がサポートされています。
- Microsoft Entra パスワード
- Microsoft Entra 統合
- 多要素認証を使用した Microsoft Entra Universal
その他の注意点
- さらに管理しやすくするには、管理者として専用の Microsoft Entra グループをプロビジョニングすることをお勧めします。
- SQL Database または Azure Synapse のサーバー用にいつでも構成できる Microsoft Entra 管理者 (ユーザーまたはグループ) は 1 つだけです。
- SQL Managed Instance 用の Microsoft Entra サーバー プリンシパル (ログイン) の追加により、
sysadmin
ロールに追加できる複数の Microsoft Entra サーバー プリンシパル (ログイン) を作成できます。
- SQL Managed Instance 用の Microsoft Entra サーバー プリンシパル (ログイン) の追加により、
- 最初に Microsoft Entra アカウントを使用してサーバーまたはマネージド インスタンスに接続できるのは、サーバーの Microsoft Entra 管理者だけです。 Microsoft Entra 管理者は、後続の Microsoft Entra データベース ユーザーを構成できます。
- 2048 より多くの Microsoft Entra セキュリティ グループに属している Microsoft Entra のユーザーとサービス プリンシパル (Microsoft Entra アプリケーション) は、SQL Database、SQL Managed Instance、または Azure Synapse のデータベースにログインできません。
- 接続のタイムアウトを 30 秒に設定することをお勧めします。
- SQL Server 2016 Management Studio と SQL Server Data Tools for Visual Studio 2015 (バージョン 14.0.60311.1April 2016 以降) では、Azure Active Directory 認証がサポートされています (Microsoft Entra 認証は、.NET Framework Data Provider for SqlServer (.NET Framework 4.6 以降のバージョン) でサポートされています)。 したがって、これらのツールとデータ層アプリケーション (DAC および BACPAC) の最新のバージョンでは、Microsoft Entra 認証を使用できます。
- バージョン 15.0.1 以降では、sqlcmd ユーティリティと bcp ユーティリティは Multi-Factor Authentication を使用した Active Directory 対話型認証をサポートしています。
- SQL Server Data Tools for Visual Studio 2015 には、April 2016 バージョン以降の Data Tools (バージョン 14.0.60311.1) が必要です。 現在、Microsoft Entra ユーザーは SSDT オブジェクト エクスプローラーには表示されません。 回避策として、ユーザーを sys.database_principals で表示してください。
- Microsoft JDBC Driver 6.0 for SQL Server は、Microsoft Entra 認証をサポートしています。 「 接続プロパティの設定」もご覧ください。
- PolyBase では Microsoft Entra 認証を使用した認証は行えません。
- Azure SQL Database と Azure Synapse 用 Microsoft Entra 認証は、Azure Portal の [データベースのインポート] ブレードと [データベースのエクスポート] ブレードによりサポートされています。 Microsoft Entra 認証を使用したインポートとエクスポートは、PowerShell コマンドでもサポートされています。
- Microsoft Entra 認証は、CLI を使用することによって、SQL Database、SQL Managed Instance、Azure Synapse でサポートされます。 詳細については、SQL Database または Azure Synapse で Microsoft Entra 認証を構成して管理する方法と「SQL Server - az sql server」を参照してください。
次のステップ
- Microsoft Entra インスタンスを作成して設定し、Azure SQL Database、SQL Managed Instance、または Azure Synapse を使用して構成する方法については、SQL Database、SQL Managed Instance、または Azure Synapse で Microsoft Entra 認証を構成して管理する方法を参照してください。
- SQL Managed Instance での Microsoft Entra サーバー プリンシパル (ログイン) の使用のチュートリアルについては、SQL Managed Instance での Microsoft Entra サーバー プリンシパル (ログイン) を参照してください
- SQL Database のログイン、ユーザー、データベース ロール、アクセス許可の概要については、ログイン、ユーザー、データベース ロール、およびアクセス許可に関するページを参照してください。
- データベース プリンシパルの詳細については、「プリンシパル」を参照してください。
- データベース ロールの詳細については、データベース ロールに関するページを参照してください。
- SQL Managed Instance 用の Microsoft Entra サーバー プリンシパル (ログイン) の作成の構文については、「CREATE LOGIN」を参照してください。
- SQL Database のファイアウォール規則の詳細については、SQL Database のファイアウォール規則に関するページを参照してください。