Microsoft Entra データベース認証を有効にする
このユニットでは、Azure SQL Database、Azure SQLManaged Instance、Azure Synapse Analytics での認証に Microsoft Entra ID を使用する方法について説明します。
注
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) という名前でした。
または、Azure Virtual Machines 上の SQL Server に対して Microsoft Entra 認証を構成することもできます。
[前提条件]
Azure SQL リソースで Microsoft Entra 認証を使用するには、次の前提条件が必要です。
- ユーザーとグループが登録された Microsoft Entra テナント。
- 既存の Azure SQL リソース (Azure SQL Database、Azure SQL Managed Instance など)。
Microsoft Entra テナントを作成して設定する
Azure SQL リソースに対して Microsoft Entra 認証を構成する前に、Microsoft Entra テナントを作成し、ユーザーとグループを追加する必要があります。 Microsoft Entra テナントは、Azure 内で完全に管理するか、オンプレミスの Active Directory Domain Services のフェデレーションに使用することができます。
詳細については、以下を参照してください。
- Microsoft Entra ID とは
- オンプレミス ID と Microsoft Entra 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 とポータル エクスペリエンスについて詳しく説明します。
Azure SQL リソースの作成時に、Microsoft Entra 管理者を構成することもできます。 Microsoft Entra 管理者が既に構成されている場合は、このセクションをスキップしてください。
Azure SQL Database と Azure Synapse Analytics
Microsoft Entra 管理者を設定すると、Azure SQL Database と Azure Synapse Analytics の論理サーバーに対して Microsoft Entra 認証が有効になります。 Azure portal、PowerShell、Azure CLI、または REST API を使用して、サーバーの Microsoft Entra 管理者を設定できます。
Azure portal で、論理サーバー名を見つけることができます。
- Azure SQL Database の [概要] ページの [サーバー名] フィールドに表示されます。
- Azure Synapse Analytics のスタンドアロン専用 SQL プールの [概要] ページの [サーバー名] フィールド。
- Azure Synapse Analytics ワークスペースの [概要] ページの関連する SQL エンドポイント。
- Azure Portal
- PowerShell
- Azure CLI
- REST API
Azure portal で論理サーバーの Microsoft Entra 管理者を設定するには、次の手順を実行します。
- Azure portal の [ディレクトリとサブスクリプション] ウィンドウで、Azure SQL リソースを含むディレクトリを現在のディレクトリとして選択します。
- SQL サーバーを検索し、データベース リソースの論理サーバーを選択して SQL Server ペインを開きます。
- 論理サーバーの SQL サーバー ペインで、[設定] の下にある Microsoft Entra ID を選択して、Microsoft Entra ID ペインを開きます。
- Microsoft Entra ID ペインで、[管理者の設定] を選択して Microsoft Entra ID ペインを開きます。
- Microsoft Entra ID ペインには、現在のディレクトリ内のすべてのユーザー、グループ、アプリケーションが表示され、名前、エイリアス、または ID で検索できます。 Microsoft Entra 管理者の目的の ID を見つけて選択し、[選択] をクリックしてウィンドウを閉じます。
- 論理サーバーの Microsoft Entra ID ページの上部にある [保存] を選択します。
オブジェクト ID は、Microsoft Entra ユーザーとグループの管理者名の横に表示されます。 アプリケーション (サービス プリンシパル) の場合、アプリケーション ID が表示されます。
管理者を変更する処理には数分かかる場合があります。 その後、新しい管理者が Microsoft Entra 管理者フィールドに表示されます。
管理者を削除するには、Microsoft Entra ID ページの上部にある [管理者の削除] を選択し、[保存] を選択します。 Microsoft Entra 管理者を削除すると、論理サーバーの Microsoft Entra 認証が無効になります。
注
Microsoft Entra 管理者は、サーバーのマスター データベースにユーザー (データベース プリンシパル) として格納されます。 データベース プリンシパル名は一意である必要があるため、管理者の表示名をサーバーのマスター データベース内のユーザーの名前と同じにすることはできません。 その名前のユーザーが既に存在する場合、Microsoft Entra 管理者のセットアップは失敗し、ロールバックされ、その名前が既に使用されていることが示されます。
Azure SQL Managed Instance
Microsoft Entra 管理者を設定すると、Azure SQL Managed Instance の Microsoft Entra 認証が有効になります。 Azure portal、PowerShell、Azure CLI、または REST API を使用して、SQL マネージド インスタンスの Microsoft Entra 管理者を設定できます。
Azure portal を使用して SQL マネージド インスタンスに Microsoft Entra ID への読み取りアクセス許可を付与するには、特権ロール管理者としてサインインし、次の手順に従います。
- Azure portal の右上隅にあるアカウントを選択し、[ディレクトリの切り替え] を選択して、現在のディレクトリを確認します。 必要に応じてディレクトリを切り替えます。
- Azure portal の [ディレクトリとサブスクリプション] ウィンドウで、マネージド インスタンスを含むディレクトリを現在のディレクトリとして選択します。''
- SQL マネージド インスタンスを検索し、マネージド インスタンスを選択して SQL マネージド インスタンス ペインを開きます。 次に、[設定] で Microsoft Entra ID を選択して、インスタンスの Microsoft Entra ID ペインを開きます。
- Microsoft Entra 管理者ウィンドウで、ナビゲーション バーから [管理者の設定] を選択して、Microsoft Entra ID ペインを開きます。
- [Microsoft Entra ID] ウィンドウで、ユーザーを検索し、ユーザーまたはグループの横にあるチェック ボックスをオンにして管理者になり、Select キーを押してウィンドウを閉じ、マネージド インスタンスの Microsoft Entra 管理ページに戻ります。 Microsoft Entra ID ペインには、現在のディレクトリ内のすべてのメンバーとグループが表示されます。 淡色表示されているユーザーまたはグループは、Microsoft Entra 管理者としてサポートされていないため、選択できません。 管理者として割り当てる ID を選択します。
- マネージド インスタンスの Microsoft Entra 管理ページのナビゲーション バーで、[保存] を選択して Microsoft Entra 管理者を確認します。 管理者の変更操作が完了すると、新しい管理者が Microsoft Entra 管理者フィールドに表示されます。 オブジェクト ID は、Microsoft Entra ユーザーとグループの管理者名の横に表示されます。 アプリケーション (サービス プリンシパル) の場合、アプリケーション ID が表示されます。
ヒント
管理者を削除するには、Microsoft Entra ID ページの上部にある [管理者の削除] を選択し、[保存] を選択します。
Microsoft Graph のアクセス許可を割り当てる
セキュリティ グループのメンバーシップを通じて接続するユーザーの認可や新しいユーザーの作成などのシナリオでは、Microsoft Entra ID を読み取るためのアクセス許可が SQL Managed Instance に必要です。 Microsoft Entra 認証を機能させるには、マネージド インスタンス ID をディレクトリ閲覧者ロールに割り当てる必要があります。 この操作は、Azure portal または PowerShell から実行できます。
一部の操作では、Azure SQL Database と Azure Synapse Analytics に Microsoft Graph のクエリを実行するためのアクセス許可も必要です。詳細については、「Microsoft Graph に対するアクセス許可」を参照してください。 Azure SQL Database と Azure Synapse Analytics では、これらのシナリオに対してきめ細かな Graph アクセス許可がサポートされますが、SQL Managed Instance にはディレクトリ閲覧者ロールが必要です。 きめ細かなアクセス許可とその割り当てについては、サービス プリンシパルが Microsoft Entra ユーザーを作成できるようにする方法に関する記事を参照してください。
ディレクトリ閲覧者ロール
Azure portal の SQL Managed Instance の Microsoft Entra ID ページには、インスタンスにディレクトリ閲覧者アクセス許可が割り当てられていないときに便利なバナーが表示されます。
- Microsoft Entra ID ページの上部にあるバナーを選択し、インスタンスを表すシステム割り当てマネージド ID またはユーザー割り当てマネージド ID にアクセス許可を付与します。 この操作を実行できるのは、テナント内の特権ロール管理者以上のロールのみです。
- 操作が成功すると、右上隅に成功通知が表示されます。
Microsoft Entra 管理者を使用して、Microsoft Entra サーバー プリンシパル (ログイン) とデータベース プリンシパル (ユーザー) を作成できるようになりました。 詳細については、Microsoft Entra と Azure SQL Managed Instance の統合に関する記事を参照してください。
SQL で Microsoft Entra プリンシパルを作成する
Microsoft Entra 認証を使用して SQL Database または Azure Synapse Analytics のデータベースに接続するには、少なくとも CONNECT アクセス許可を持つその ID のデータベースにプリンシパルを構成する必要があります。
データベース ユーザーのアクセス許可
データベース ユーザーは、作成されると、既定でデータベースへの CONNECT アクセス許可を受け取ります。 データベース ユーザーは、次の 2 つの状況でもアクセス許可を継承します。
- ユーザーが、サーバー上でもアクセス許可が割り当てられている Microsoft Entra グループのメンバーである場合。
- ユーザーがログインから作成された場合、そのユーザーは、データベースに適用されるログインのサーバー割り当てアクセス許可を継承します。
サーバーおよびデータベース プリンシパルのアクセス許可の管理は、プリンシパルの種類 (Microsoft Entra ID、SQL 認証など) に関係なく同じように機能します。 ユーザーにアクセス許可を直接付与するのではなく、データベース ロールにアクセス許可を付与することをお勧めします。 その後に、適切なアクセス許可を持つロールにユーザーを追加できます。 こうすることで、長期的なアクセス許可の管理が簡単になり、適切な時期を過ぎても ID がアクセスを保持する可能性が低くなります。
詳細については、以下を参照してください。
包含データベース ユーザー
包含データベース ユーザーは、マスター データベースのログインに接続されていない SQL ユーザーの一種です。 Microsoft Entra 包含データベース ユーザーを作成するには、少なくとも ALTER ANY USER 権限を持つ Microsoft Entra ID を使用してデータベースに接続します。 次の T-SQL の例では、Microsoft Entra ID からデータベース プリンシパル Microsoft_Entra_principal_nameを作成します。
SQL
CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;
SQL
CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;
SQL
CREATE USER [appName] FROM EXTERNAL PROVIDER;
SQL
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 ユーザーはログインのサーバー レベルの割り当てられたアクセス許可を継承できます。
SQL
CREATE USER [appName] FROM LOGIN [appName];
詳細については、SQL Managed Instance の概要に関する記事を参照してください。 Microsoft Entra サーバー プリンシパル (ログイン) の作成の構文については、「CREATE LOGIN」を参照してください。
外部ユーザー
Azure サブスクリプションに関連付けられているものとは異なる Microsoft Entra テナントで管理されている ID のデータベース ユーザーを直接作成することはできません。 ただし、他のディレクトリのユーザーを外部ユーザーとして関連付けられたディレクトリにインポートすることはできます。 その後、それらを使用して、データベースにアクセスできる包含データベース ユーザーを作成できます。 外部ユーザーは、Microsoft Entra グループのメンバーシップを通じてアクセスすることもできます。
例: Microsoft Entra フェデレーション またはマネージド ドメイン ユーザーを表す包含データベース ユーザーを作成するには:
SQL
CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
外部ユーザーとしてマネージド ドメインにインポートされるフェデレーション ドメイン ユーザー アカウントは、マネージド ドメインの ID を使用する必要があります。
名前付けに関する考慮事項
T-SQL CREATE LOGIN ステートメントおよび CREATE USER ステートメントにユーザー名として含まれている場合は、コロン( またはアンパサンド & など) の特殊文字はサポートされていません。
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-000000000000' (Microsoft Graph API のアプリケーション ID) へのアクセスを許可するように条件付きアクセス ポリシーを更新すると、問題が解決されます。 "ファーストパーティのアプリケーション間のアクセスを事前承認で処理する必要がある" というエラーが発生した場合、この問題は、ユーザーがサービス プリンシパルとしてサインインしていることが原因です。 そうではなく、ユーザーがコマンドを実行した場合は成功するはずです。
- 接続タイムアウトの有効期限が切れた場合は、接続文字列の TransparentNetworkIPResolution パラメーターを false に設定することが必要になる場合があります。 詳細については、「.NET Framework 4.6.1 での接続タイムアウトの問題 - TransparentNetworkIPResolution」を参照してください。
Microsoft Entra ID に基づいて包含データベース ユーザーを作成する方法の詳細については、「CREATE USER」を参照してください。
多要素認証を構成する
Azure SQL リソースのセキュリティを強化するには、電話や認証アプリなど、データベースへの認証に 2 つ目の代替方法を使用するようにユーザーに求める多要素認証 (MFA) を構成することを検討してください。
Azure SQL リソースで多要素認証を使用するには、まず多要素認証を有効にし、次に条件付きアクセス ポリシーを使用して Azure SQL リソースに MFA を適用します。
Microsoft Entra と接続する
Microsoft Entra 認証を構成した後は、SQL Server Management Studio や SQL Server Data Tools などの Microsoft ツールを使用して SQL リソースに接続できます。また、Microsoft Entra ID を使用して接続するようにクライアント アプリケーションを構成できます。
Microsoft Entra 認証のトラブルシューティング
問題のトラブルシューティングのガイダンスについては、「ブログ: Azure SQL Database と Azure Synapse を使用した Microsoft Entra 認証に関連する問題のトラブルシューティング」を参照してください。