Microsoft Entra 多要素認証を使用して Azure SQL Database に接続する

適用対象:Azure SQL Database

この記事では、Azure SQL Database に接続する C# プログラムについて説明します。 このプログラムでは、Microsoft Entra ID (旧称 Azure Active Directory) の多要素認証をサポートする対話モードの認証を使用します。

SQL ツールでの多要素認証のサポートの詳細については、「Microsoft Entra の多要素認証の使用」を参照してください。

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

Azure SQL Database の多要素認証

Active Directory Interactive 認証では、Azure SQL データ ソースに接続するための、Microsoft.Data.SqlClient を使用した多要素認証がサポートされています。 C# クライアント プログラムでこの列挙値を使用すると、Azure SQL Database への接続に、多要素認証をサポートする Microsoft Entra 対話モードを使用するようシステムに指示します。 プログラムを実行するユーザーには、次のダイアログ ボックスが表示されます。

  • Microsoft Entra ユーザー名を表示し、そのユーザーのパスワードの入力を求めるダイアログ ボックス。

    ユーザーのドメインが Microsoft Entra ID とフェデレーションされている場合、パスワードが不要なため、このダイアログ ボックスは表示されません。

    Microsoft Entra ポリシーで多要素認証をユーザーに要求している場合、アカウントにサインインするためのダイアログ ボックスが表示されます。

  • ユーザーが初めて多要素認証を実行するときに、テキスト メッセージの送信先の携帯電話番号を確認するダイアログ ボックスが表示されます。 各メッセージでは、ユーザーが次のダイアログ ボックスに入力する必要がある確認コードが提供されます。

  • システムから携帯電話に送信された多要素認証確認コードの入力を求めるダイアログ ボックス。

多要素認証を要求するように Microsoft Entra ID を構成する方法については、「クラウドにおける Microsoft Entra 多要素認証の開始方法」をご覧ください。

これらのダイアログ ボックスのスクリーンショットについては、「Microsoft Entra の多要素認証の使用」をご覧ください。

ヒント

.NET Framework API は .NET API ブラウザー ツール ページで検索できます。

また、省略可能な ?term=<検索値> パラメーターで直接検索することもできます。

前提条件

始める前に、論理 SQL サーバーを作成し、使用できる状態にしておく必要があります。

サーバーの Microsoft Entra 管理者を設定する

C# の例を実行するには、論理サーバー管理者が Microsoft Entra ID からサーバーの Microsoft Entra 管理者を割り当てる必要があります。

Azure portal の [SQL サーバー] ページで、リソース メニューから Microsoft Entra ID を選択し、[管理者に設定] を選択します。

Azure SQL Database の Microsoft Entra 管理者とユーザーの詳細については、SQL Database での Microsoft Entra 認証の構成と管理のスクリーンショットをご覧ください。

Microsoft.Data.SqlClient

C# の例は、Microsoft.Data.SqlClient 名前空間に依存します。 詳細については、「Microsoft Entra 認証を SqlClient で使用する」を参照してください。

Note

System.Data.SqlClient では、非推奨となる Azure Active Directory 認証ライブラリ (ADAL) を使用します。 Microsoft Entra 認証に System.Data.SqlClient 名前空間を使用している場合は、Microsoft.Data.SqlClient および Microsoft Authentication Library (MSAL) にアプリケーションを移行してください。 SqlClient での Microsoft Entra 認証の使用に関する詳細は、「SqlClient での Microsoft Entra 認証の使用」を参照してください。

SQL Server Management Studio で確認する

C# の例を実行する前に、SQL Server Management Studio (SSMS) で設定と構成が正しいことを確認することをお勧めします。 こうすることで、C# プログラムのエラーをソース コードに絞り込むことができます。

サーバー レベルのファイアウォールの IP アドレスを確認する

C# の例を実行する予定の場合、同じ構成で、同じコンピューターから SSMS を実行します。 このテストの場合は、任意の認証モードを使用できます。 サーバーが指定した IP アドレスを受け入れていないことを示している場合は、サーバーレベルとデータベースレベルのファイアウォール規則に関するページを参照してください。

Microsoft Entra 多要素認証の検証

[認証][Azure Active Directory - MFA で汎用] に設定して、SSMS をもう一度実行します。 このオプションを使用するには、SSMS バージョン 18.6 以降が必要です。

詳細については、「Microsoft Entra 多要素認証の使用」を参照してください。

Note

18.x より前の SSMS バージョンの場合、ゲスト ユーザーは、データベースの Microsoft Entra ドメイン 名前またはテナント ID を指定する必要があります。[オプション]>AD ドメイン名またはテナント ID を選択します。 SSMS 18.x 以降では、テナントが自動的に認識されます。

Azure portal で ドメイン 名を見つけるには、[Microsoft Entra ID]>[カスタム ドメイン名] を選択します。 この C# サンプル プログラムでは、ドメイン名を指定する必要はありません。

C# コード例

Note

.NET Core を使用している場合は、Microsoft.Data.SqlClient 名前空間を使用することをお勧めします。 詳細については、ブログ記事をご覧ください。

これは C# のソース コードの例です。


using System;
using Microsoft.Data.SqlClient;

public class Program
{
    public static void Main(string[] args)
    {
        // Use your own server, database, and user ID.
        // Connetion string - user ID is not provided and is asked interactively.
        string ConnectionString = @"Server=<your server>.database.windows.net; Authentication=Active Directory Interactive; Database=<your database>";


        using (SqlConnection conn = new SqlConnection(ConnectionString))

        {
            conn.Open();
            Console.WriteLine("ConnectionString2 succeeded.");
            using (var cmd = new SqlCommand("SELECT @@Version", conn))
            {
                Console.WriteLine("select @@version");
                var result = cmd.ExecuteScalar();
                Console.WriteLine(result.ToString());
            }

        }
        Console.ReadKey();

    }
}

 

これは C# のテスト出力の例です。

ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
   ...

次のステップ