Applies to:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
- SQL Server 2022
- SQL Server 2025
Azure SQL Database&Azure SQL Managed Instance - Azure VM 上の SQL Server
この記事では、認証にMicrosoft Entra IDを使用する方法について説明しますAzure SQL Database、Azure SQL Managed Instance、および Azure Synapse Analytics。
注記
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼れていました。
または、SQL Server on Azure Virtual Machines で Microsoft Entra 認証を構成することもできます。
前提条件
Azure SQL リソースでMicrosoft Entra認証を使用するには、次の前提条件が必要です。
- ユーザーとグループが設定されたMicrosoft Entra テナント。
- Azure SQL Database や Azure SQL Managed Instance といった既存の Azure SQL リソース。
Microsoft Entra テナントを作成して設定する
Azure SQL リソースのMicrosoft Entra認証を構成する前に、Microsoft Entra テナントを作成し、ユーザーとグループを設定する必要があります。 Microsoft Entraテナントは、Azure内で完全に管理することも、オンプレミスの Active Directory ドメイン サービスのフェデレーションに使用することもできます。
詳細については、以下を参照してください:
- Microsoft Entra IDは何ですか?
- Microsoft Entra ID とオンプレミスの ID を統合する
ドメイン名を Microsoft Entra ID - Microsoft Entra IDとのフェデレーションは何ですか?
- ディレクトリとMicrosoft Entra IDとの同期
- Windows PowerShell を使用して Microsoft Entra ID を管理する
- ハイブリッド ID で必要なポートとプロトコル
Microsoft Entra 管理者を設定する
リソースでMicrosoft Entra認証を使用するには、Microsoft Entra管理者が設定されている必要があります。 概念的には、Azure SQL Database、Azure Synapse Analytics、およびAzure SQL Managed Instanceの手順は同じですが、このセクションでは、製品ごとに行うさまざまな API とポータル エクスペリエンスについて詳しく説明します。
Microsoft Entra管理者は、Azure SQL リソースの作成時に構成することもできます。 Microsoft Entra管理者が既に構成されている場合は、このセクションをスキップします。
Azure SQL DatabaseとAzure Synapse Analytics
Microsoft Entra管理者を設定すると、Azure SQL DatabaseとAzure Synapse AnalyticsのLogical server のMicrosoft Entra認証が有効になります。 Azure ポータル、PowerShell、Azure CLI、または REST API を使用して、サーバーのMicrosoft Entra管理者を設定できます。
Azure ポータルでは、logical server 名を確認できます。
- Azure SQL Databaseの server nameOverview ページのフィールド。
- Azure Synapse Analyticsのスタンドアロン専用 SQL プールの server nameOverview ページのフィールド。
- Azure Synapse Analytics ワークスペースの Overviewページにある SQL エンドポイント.
- Azure portal
- PowerShell
- Azure CLI
- REST API
Azure ポータルで論理サーバーのMicrosoft Entra管理者を設定するには、次の手順に従います。
Azure portal Directories + subscriptions ペインで、Azure SQL リソースを含むディレクトリを Current directory として選択します。
SQL サーバーを検索したら、データベース リソースの論理サーバーを選択し、[SQL Server] ウィンドウを開きます。
SQL Server を検索して選択する方法を示すスクリーンショット。
論理サーバーの
SQL サーバー ペインで、Settings の下にある Microsoft Entra ID を選択して、Microsoft Entra ID ペインを開きます。Microsoft Entra ID ペインで、Set admin を選択して、Microsoft Entra ID ペインを開きます。
Microsoft Entra ID ペインには、現在のディレクトリ内のすべてのユーザー、グループ、アプリケーションが表示され、名前、エイリアス、または ID で検索できます。 Microsoft Entra管理者の目的の ID を見つけて選択し、Select を選択してウィンドウを閉じます。
論理サーバーの Microsoft Entra ID ページの上部にある Save を選択します。
スクリーンショットには、Microsoft Entra 管理者を保存するオプションが表示されています Object ID は、Microsoft Entraユーザーとグループの管理者名の横に表示されます。 アプリケーション(サービスプリンシパル)の場合は、アプリケーションIDが表示されます。
管理者を変更する処理には数分かかる場合があります。 その後、新しい管理者が Microsoft Entra admin フィールドに表示されます。
管理者を削除するには、Microsoft Entra ID ページの上部にある Remove admin を選択し、 Save を選択します。 Microsoft Entra管理者を削除すると、論理サーバーのMicrosoft Entra認証が無効になります。
注記
Microsoft Entra管理者は、サーバーの master データベースにユーザー (データベース プリンシパル) として格納されます。 データベース プリンシパル名は一意である必要があるため、管理者の表示名をサーバーの データベースにあるユーザーの名前と同じにすることはできません。 名前を持つユーザーが既に存在する場合、Microsoft Entra管理者のセットアップは失敗し、ロールバックされ、名前が既に使用されていることを示します。
Azure SQL Managed Instance
Microsoft Entra管理者を設定すると、Azure SQL Managed InstanceのMicrosoft Entra認証が有効になります。 Azure ポータル、PowerShell、Azure CLI、または REST API を使用して、SQL マネージド インスタンスのMicrosoft Entra管理者を設定できます。
- Azure portal
- PowerShell
- Azure CLI
- REST API
Azure ポータルを使用して SQL マネージド インスタンスにMicrosoft Entra IDの読み取りアクセス許可を付与するには、特権ロール管理者としてサインインし、次の手順に従います。
Azure ポータルで、アカウントを選択し、Switch ディレクトリを選択して、現在のディレクトリを確認します。 必要に応じてディレクトリを切り替えます。
Azure portal Directories + subscriptions ペイン で、マネージド インスタンスを含むディレクトリを Current ディレクトリ.'' として選択します。
SQL 管理インスタンスを検索し、その後管理インスタンスを選択して、[SQL 管理インスタンス] ウィンドウを開きます。 次に、Settings の下の Microsoft Entra ID を選択して、インスタンスの Microsoft Entra ID ペインを開きます。
Microsoft Entra admin ペインで、ナビゲーション バーから Set admin を選択して、Microsoft Entra ID ペインを開きます。
Microsoft Entra ID ウィンドウで、ユーザーを検索し、管理者になるユーザーまたはグループの横にあるチェック ボックスをオンにして、Select キーを押してウィンドウを閉じ、マネージド インスタンスの Microsoft Entra admin ページに戻ります。
Microsoft Entra ID ペインには、現在のディレクトリ内のすべてのメンバーとグループが表示されます。 グレー表示されたユーザーまたはグループは、Microsoft Entra管理者としてサポートされていないため、選択できません。 管理者として割り当てる ID を選択します。
マネージド インスタンスの Microsoft Entra admin ページのナビゲーション バーで、Save を選択して、Microsoft Entra管理者を確認します。
管理者の変更操作が完了すると、Microsoft Entra管理者フィールドに新しい管理者が表示されます。
Object ID は、Microsoft Entraユーザーとグループの管理者名の横に表示されます。 アプリケーション(サービスプリンシパル)の場合は、アプリケーションIDが表示されます。
ヒント
管理者を削除するには、Microsoft Entra ID ページの上部にある Remove admin を選択し、Save を選択します。
Microsoft Graphアクセス許可を割り当てる
SQL Managed Instanceには、セキュリティ グループ メンバーシップを介して接続するユーザーの承認や新しいユーザーの作成などのシナリオでMicrosoft Entra IDを読み取るためのアクセス許可が必要です。 Microsoft Entra認証を機能させるには、マネージド インスタンス ID を Directory Readers ロールに割り当てる必要があります。 これは、Azure ポータルまたは PowerShell を使用して行うことができます。
一部の操作では、Azure SQL DatabaseとAzure Synapse Analyticsには、Microsoft Graphのクエリを実行するためのアクセス許可も必要です(Microsoft Graphアクセス許可で説明します。 Azure SQL DatabaseとAzure Synapse Analyticsでは、これらのシナリオに対してきめ細かな Graph アクセス許可がサポートされますが、SQL Managed Instanceには Directory Reader ロールが必要です。 詳細なアクセス許可とその割り当てについては、Microsoft Entraのユーザー作成を可能にするサービス プリンシパルの有効化で詳細に説明されています。
Important
Azure SQL DatabaseとSQL Managed InstanceMicrosoft Graphアクセスに異なるアクセス許可モデルを使用します。
-
Azure SQL DatabaseとAzure Synapse Analytics: きめ細かい Microsoft Graph API アクセス許可 (
User.Read.All、GroupMember.Read.All、Application.Read.Allなど) をサーバー ID に直接割り当てることをサポートします。 この方法は最小特権の原則に従っており、推奨されます。 詳細な手順については、「Microsoft Entra のユーザーを作成するためにサービス プリンシパルを有効化する方法」を参照してください。 ディレクトリ閲覧者ロールは、より広範な代替手段として使用することもできます。 - SQL Managed Instance: インスタンスのアイデンティティに割り当てられたディレクトリ リーダー ロールまたは同等の細分化された Microsoft Graph のアクセス許可が必要です。 Azure ポータルには、Microsoft Entra ID ページに、ディレクトリ閲覧者ロールの付与を求める便利なバナーが表示されます。 [ディレクトリ閲覧者ロール] セクションの手順に従います。
Azure SQL Database を構成する場合は、基本的なMicrosoft Entra管理者セットアップにディレクトリ閲覧者ロールを割り当てる必要はありません。 代わりに、Azure SQL 用 Microsoft Entra のマネージド ID で説明されているように、きめ細かい Microsoft Graph アクセス許可をサーバー ID に割り当てます。
ディレクトリ閲覧者ロール
Directory Reader ロールと、このセクションで説明するポータル バナーは、主に SQL Managed Instance に適用されます。 Azure SQL Databaseの場合は、代わりに詳細なMicrosoft Graphアクセス許可を割り当てることも、必要に応じて、より広範な代替手段としてディレクトリ リーダーを使用することもできます。
- Azure portal
- PowerShell
- Azure CLI
- REST API
Azure ポータルのSQL Managed Instanceの Microsoft Entra ID ページには、インスタンスにディレクトリ閲覧者のアクセス許可が割り当てられていないときに便利なバナーが表示されます。
Microsoft Entra ID ページの上部にあるバナーを選択し、インスタンスを表すシステム割り当てマネージド ID またはユーザー割り当てマネージド ID にアクセス許可を付与します。 この操作を実行できるのは、テナント内の 特権ロール管理者 以上のロールのみです。
注記
バナーが表示されない場合は、インスタンスに既にディレクトリ閲覧者ロールが割り当てられているか、必要な 特権ロール管理者 ロールがない可能性があります。 このロールがない場合は、テナント管理者にアクセス許可を付与するよう依頼するか、 PowerShell タブで PowerShell メソッドを使用してください。
操作が成功すると、右上隅に成功の通知が表示されます。
Microsoft Entra管理者を使用して、Microsoft Entra サーバー プリンシパル (ログイン) とデータベース プリンシパル (ユーザー) を作成できるようになりました。 詳細については、Microsoft Entra Azure SQL Managed Instance との統合を参照してください。
SQL でMicrosoft Entra プリンシパルを作成する
SQL Database または Azure Synapse Analytics で、Microsoft Entra 認証を使ってデータベースに接続するには、少なくとも CONNECT アクセス許可を持つその ID に対し、プリンシパルがデータベースで構成されている必要があります。
データベース ユーザーのアクセス許可
データベース ユーザーは、作成されると、既定でデータベースに対する アクセス許可を受け取ります。 データベース ユーザーは、次の 2 つの状況でもアクセス許可を継承します。
- ユーザーが、サーバーに対するアクセス許可も割り当てられているMicrosoft Entra グループのメンバーである場合。
- ユーザーがログインから作成された場合、データベースに適用されるログインのサーバー割り当てアクセス許可が継承されます。
サーバー プリンシパルとデータベース プリンシパルのアクセス許可の管理は、プリンシパルの種類 (Microsoft Entra ID、SQL 認証など) に関係なく同じように機能します。 ユーザーにアクセス許可を直接付与するのではなく、データベース ロールにアクセス許可を付与することをお勧めします。 適切なアクセス許可を持つ役割にユーザーを追加できます。 長期的なアクセス許可の管理が簡素化され、必要なときに ID が有効期限の切れたアクセス権を維持する可能性を低減します。
詳細については、以下を参照してください:
- データベース エンジンのアクセス許可と例
- Blog: データベース エンジン のアクセス許可の基本
Azure SQL Database での特殊なデータベース ロールとログインの管理
含まれるデータベースユーザー
包含データベースのユーザーは、 データベースのログインに接続されていない SQL ユーザーの一種です。 Microsoft Entra包含データベース ユーザーを作成するには、少なくとも ALTER ANY USER** アクセス許可を持つMicrosoft Entra ID を使用してデータベースに接続します。 次の T-SQL の例では、Microsoft Entra IDからデータベース プリンシパル Microsoft_Entra_principal_name を作成します。
CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;
Microsoft Entra グループの包含データベース ユーザーを作成するには、グループの表示名を入力します。
CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;
マネージド ID またはサービス プリンシパルの包含データベース ユーザーを作成するには、ID の表示名を入力します。
CREATE USER [appName] FROM EXTERNAL PROVIDER;
Microsoft Entra ユーザーの制約付きデータベースユーザーを作成するためには、アイデンティティのユーザープリンシパル名を入力します。
CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;
ログイン ベースのユーザー
注記
Microsoft Entra サーバー プリンシパル (ログイン) は現在、Azure SQL DatabaseとAzure Synapse Analyticsのパブリック プレビュー段階にあります。 Microsoft Entra ログインは、Azure SQL Managed Instance および SQL Server 2022 で一般提供されています。
Microsoft Entra サーバー プリンシパル (またはログイン) がサポートされています。つまり、包含データベース ユーザーは必要ありません。 データベース プリンシパル (ユーザー) は、サーバー プリンシパルに基づいて作成できます。つまり、ユーザー Microsoft Entraログインのサーバー レベルの割り当てアクセス許可を継承できます。
CREATE USER [appName] FROM LOGIN [appName];
詳細については、SQL Managed Instanceの概要を参照してください。 Microsoft Entraサーバー プリンシパル (ログイン) の作成に関する構文については、CREATE LOGIN を参照してください。
外部ユーザー
Azure サブスクリプションに関連付けられているテナントとは異なるMicrosoft Entra テナントで管理されている ID のデータベース ユーザーを直接作成することはできません。 ただし、他のディレクトリ内のユーザーは、関連付けられているディレクトリに外部ユーザーとしてインポートできます。 データベースにアクセスできる包含データベース ユーザーを作成するために使用できます。 外部ユーザーは、Microsoft Entra グループのメンバーシップを通じてアクセスすることもできます。
** Examples: Microsoft Entra フェデレーション ドメインまたは管理ドメインのユーザーを表す、包含データベース ユーザーを作成するには:
CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
外部ユーザーとしてマネージド ドメインにインポートされるフェデレーション ドメイン ユーザー アカウントは、マネージド ドメインの ID を使用する必要があります。
名前に関する考慮事項
T-SQL の ステートメントと ステートメントのユーザー名に含まれるコロン やアンパサンド などの特殊文字は、サポートされていません。
Microsoft Entra IDとAzure SQLは、1 つの重要な方法でユーザー管理設計に分岐します。Microsoft Entra IDでは、テナント内で表示名を複製できますが、Azure SQLでは、サーバーまたはインスタンス上のすべてのサーバー プリンシパルと、データベース上のすべてのデータベース プリンシパルに一意の名前が必要です。 Azure SQLはプリンシパルを作成する際、IDのMicrosoft Entra表示名を直接使用するため、ユーザーを作成するときにエラーが発生する可能性があります。 この問題を解決するために、Azure SQLは現在プレビュー段階にある WITH OBJECT_ID 拡張機能をリリースしました。これにより、ユーザーは、サーバーまたはインスタンスに追加される ID のMicrosoft Entra オブジェクト ID を指定できます。
Microsoft Graphアクセス許可
CREATE USER ... FROM EXTERNAL PROVIDER コマンドでは、ログインユーザーの代わりにMicrosoft Entra ID ("外部プロバイダー") にAzure SQLアクセスする必要があります。 場合によっては、Microsoft Entra IDが例外をAzure SQLに返す状況が発生することがあります。
- Microsoft Entra ID固有のエラー メッセージが含まれる SQL エラー 33134 が発生する可能性があります。 このエラーは一般に、アクセスが拒否されたこと、ユーザーがリソースにアクセスするには MFA に登録する必要があること、またはファーストパーティのアプリケーション間のアクセスを事前承認によって処理する必要があることを示します。 最初の 2 つのケースでは、通常、ユーザーの Microsoft Entra テナントに設定されている条件付きアクセス ポリシーによって問題が発生します。これにより、ユーザーが外部プロバイダーにアクセスできなくなります。 アプリケーション '00000003-0000-0000-c000-0000000000000' (Microsoft Graph API のアプリケーション ID) へのアクセスを許可するように条件付きアクセス ポリシーを更新すると、問題が解決されます。 「ファーストパーティのアプリケーション間のアクセスを事前承認で処理する必要がある」というエラーが発生した場合、この問題は、ユーザーがサービス プリンシパルとしてサインインしていることが原因です。 代わりにユーザーによってコマンドを実行した場合、コマンドは成功するはずです。
-
Connection Timeout Expired を受け取った場合は、接続文字列の
TransparentNetworkIPResolutionパラメーターを false に設定する必要があります。 詳細については、「.NET Framework 4.6.1 - TransparentNetworkIPResolution での接続タイムアウトの問題を参照してください。
Microsoft Entra ID に基づく包含データベース ユーザーの作成の詳細については、「CREATE USERを参照してください。
多要素認証を構成する
Azure SQL リソースのセキュリティを強化するには、多要素認証 (MFA) を構成することを検討してください。これにより、ユーザーは、電話や認証アプリなどの 2 つ目の代替方法を使用してデータベースに対して認証するように求められます。
Azure SQL リソースで多要素認証を使用するには、まず有効な多要素認証してから、Conditional アクセス ポリシーを使用してAzure SQL リソースに MFA を適用します。
Microsoft Entraで接続する
Microsoft Entra認証を構成した後、SQL Server Management StudioやSQL Server Data ToolsなどのMicrosoftツールを使用してSQLリソースに接続したり、クライアントアプリケーションをMicrosoft Entra IDを使用して接続するように構成したりできます。
Microsoft Entra認証のトラブルシューティング
問題のトラブルシューティングのガイダンスについては、「
関連するコンテンツ
SQL Database、SQL Managed Instance、および Azure Synapse Analytics Azure SQL - Microsoft Entra サービス プリンシパルと Azure SQL
- プリンシパル
- データベース ロール
- Azure SQL DatabaseとAzure Synapse IP ファイアウォール規則
- ゲスト ユーザー Microsoft Entra作成し、Microsoft Entra管理者として設定します
- Tutorial: Microsoft Entra アプリケーションを使用してMicrosoft Entraユーザーを作成します