Microsoft Entra 認証を使用して Azure SQL リソースに接続する
適用対象: Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics
この記事では、Microsoft Entra 認証を使用して Azure SQL データベース、Azure SQL Managed Instance および Azure Synapse Analytics に接続する方法について説明します。
前提条件
Azure SQL リソースに接続するには、リソースに Microsoft Entra 認証が構成されている必要があります。
Microsoft Entra 管理者が正しく設定されていることを確認するには、Microsoft Entra の管理者アカウントを使用して master
データベースに接続します。
Microsoft Entra ベースの包含データベース ユーザーを作成するには、データベースへのアクセス権と少なくとも ALTER ANY USER
アクセス許可を持つ Microsoft Entra ID を使用してデータベースに接続します。
SSMS または SSDT を使用して接続する
次の手順では、SQL Server Management Studio (SSMS) または SQL Server Database Tools (SSDT) で Microsoft Entra の ID を使用して SQL Database に接続する方法を示します。
統合済み Microsoft Entra
Microsoft Entra ID にフェデレーションされた Windows 認証情報を使用してログインする場合は、このメソッドを使用します。 詳細については、「Microsoft Entra シームレス シングル サインオン」を参照してください。
SSMS または SSDT を起動し、[サーバーへの接続] (または [データベース エンジンへの接続]) ダイアログ ボックスの [ログイン] タブで次の手順を実行します。
<server-name>.database.windows.net
の形式でサーバー名を指定します。- 認証では、[統合済み Microsoft Entra] を選択します。 接続に既存の資格情報が提示されるため、パスワードを入力する必要はありません。
- 暗号化では、Azure SQL リソースへの接続に使用する必要がある [Strict (SQL Server 2022 および Azure SQL)]を選択します。
[接続プロパティ] タブの [データベースへの接続] フィールドに、接続先のユーザー データベースの名前を入力します。
Microsoft Entra パスワード
Microsoft Entra マネージド ドメインを使用して Microsoft Entra プリンシパル名で接続する場合は、この方法を使用します。 また、リモートで作業する場合など、ドメインにアクセスできないフェデレーション アカウントにも、この方法を使用できます。
Microsoft Entra クラウド専用 ID のユーザーまたは Microsoft Entra ハイブリッド ID を使用するユーザーで、SQL Database または SQL Managed Instance 内のデータベースに対する認証を行うには、この方法を使用します。 この方法では、ユーザーが自分の Windows 資格情報の使用を希望しているものの、そのローカル コンピューターがドメインに参加していない (リモート アクセスを使用しているなど) 場合に対応できます。 このケースでは、Windows ユーザーは、自分のドメイン アカウントとパスワードを示して、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースに対する認証を行うことができます。
SSMS または SSDT を起動し、[サーバーへの接続] (または [データベース エンジンへの接続]) ダイアログ ボックスの [ログイン] タブで次の手順を実行します。
<server-name>.database.windows.net
の形式でサーバー名を指定します。- 認証では、[Microsoft Entra パスワード] を選択します。
- [ユーザー名] ボックスに、Microsoft Entra ユーザー名を
username@domain.com
形式で入力します。 ユーザー名は、Microsoft Entra ID のアカウント、または Microsoft Entra ID を持つマネージドまたはフェデレーション ドメイン のアカウントである必要があります。 - [パスワード] ボックスに、Microsoft Entra アカウントまたはマネージド/フェデレーション ドメイン アカウントのユーザー パスワードを入力します。
- 暗号化では、Azure SQL リソースへの接続に使用する必要がある [Strict (SQL Server 2022 および Azure SQL)]を選択します。
[接続プロパティ] タブの [データベースへの接続] フィールドに、接続先のユーザー データベースの名前を入力します。
Microsoft Entra MFA
この方法を、インタラクティブに要求されるパスワードと共に、多要素認証 (MFA) を使用した対話型認証に使用します。 この方法を使用すると、Microsoft Entra クラウド専用 ID のユーザーまたは Microsoft Entra ハイブリッド ID を使用するユーザーについて、SQL Database、SQL Managed Instance、および Azure Synapse Analytics 内のデータベースに対する認証を行うことができます。
次の手順は、最新バージョンの SSMS で多要素認証を使用して接続する方法を示しています。
MFA を使用して接続するには、SSMS の [サーバーへの接続] ダイアログ ボックスで [Microsoft Entra MFA] を選択します。
[サーバー名] ボックスにサーバーの名前を入力します。 [ユーザー名] ボックスに、
user_name@domain.com
という形式で Microsoft Entra 資格情報を入力します。[接続] を選択します。
[アカウントにサインインする] ダイアログ ボックスが表示されたら、手順 2 で指定したユーザー名 が事前に入力されているはずです。 ユーザーが Microsoft Entra ID とフェデレーションされているドメインに属している場合、パスワードは不要です。
MFA 管理者設定に基づいて構成されたいずれかの方法を使用して認証するように求められます。
検証が完了すると、有効な資格情報とファイアウォール アクセスが推定され、SSMS の接続が通常どおり行われます。
Microsoft Entra サービス プリンシパル
この方法を使用して、Microsoft Entra サービス プリンシパル (Microsoft Entra アプリケーション) で SQL Database または SQL Managed Instance 内のデータベースに対して認証を行います。 詳細については、「Azure SQL での Microsoft Entra のサービス プリンシパル」をご覧ください
Microsoft Entra マネージド ID
この方法を使用して、Microsoft Entra マネージド ID で SQL Database または SQL Managed Instance 内のデータベースに対して認証を行います。 詳細については、「Azure SQL 用 Microsoft Entra のマネージド ID」を参照してください。
Microsoft Entra 既定値
Microsoft Entra ID の既定の認証オプションを使用すると、マネージド ID を含むパスワードレスおよび非対話型認証が有効になります。
クライアント アプリケーションからの接続
次の手順では、クライアント アプリケーションから Microsoft Entra ID を使用して SQL Database に接続する方法を示します。 これは、Microsoft Entra ID を使用する場合の認証方法の包括的な一覧ではありません。 詳細については、「Microsoft Entra 認証と SqlClient を使用して Azure SQL に接続する」を参照してください。
クライアント アプリケーションの構成
Note
System.Data.SqlClient では、非推奨となる Azure Active Directory 認証ライブラリ (ADAL) を使用します。 Microsoft Entra 認証に System.Data.SqlClient 名前空間を使用している場合は、Microsoft.Data.SqlClient および Microsoft Authentication Library (MSAL) にアプリケーションを移行してください。 .NET で使用できる接続方法については、「Microsoft Entra 認証と SqlClient を使用して Azure SQL に接続する」を参照してください。
アプリケーションで ADAL.DLL を引き続き使用する必要がある場合は、このセクションのリンクから最新の ADAL.DLL ライブラリを含む最新の ODBC または OLE DB ドライバーをインストールしてください。
Microsoft Entra の ID を使用して SQL Database または Azure Synapse Analytics に接続するアプリケーションまたはユーザーが存在するすべてのクライアント コンピューターには、次のソフトウェアをインストールする必要があります。
- .NET Framework 4.6 以降
- Microsoft Authentication Library (MSAL) または Microsoft Authentication Library for SQL Server (ADAL.DLL)。 ADAL.DLL ライブラリを含む最新の SSMS、ODBC、OLE DB ドライバーをインストールするためのリンクは、以下で入手できます。
これらの要件は、次の操作を行うことで満たすことができます。
- 最新バージョンの SQL Server Management Studio または SQL Server Data Tools をインストールして、.NET Framework 4.6 の要件を満たす。
- SSMS の場合、x86 バージョンの ADAL.DLLがインストールされます。
- SSDT の場合、amd64 バージョンの ADAL.DLLがインストールされます。
- Visual Studio のダウンロードにある最新の Visual Studio は .NET Framework 4.6 の要件を満たしていますが、必要な amd64 バージョンの ADAL.DLL はインストールされません。
Microsoft Entra 統合認証
統合 Windows 認証を使用するには、ドメインのアクティブ ディレクトリが Microsoft Entra ID にフェデレーションされているか、あるいは、パススルー認証またはパスワード ハッシュ認証のシームレス シングル サインオン用に構成されたマネージド ドメインになっている必要があります。 詳細については、「Microsoft Entra シームレス シングル サインオン」を参照してください。
データベースに接続するクライアント アプリケーション (またはサービス) は、ユーザーのドメイン資格情報を使ってドメインに参加しているコンピューター上で実行されている必要があります。
統合認証と Microsoft Entra の ID を使用してデータベースに接続するには、データベース接続文字列内の Authentication
キーワードを Active Directory Integrated
に設定する必要があります。 <server_name>
は、論理サーバーの名前に置き換えます。 次の C# のコード サンプルでは、ADO .NET を使用します。
string ConnectionString = @"Data Source=<server-name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
接続文字列キーワード Integrated Security=True
は、Azure SQL Database への接続ではサポートされていません。 ODBC 接続を行うには、スペースを削除して Authentication を 'ActiveDirectoryIntegrated
' に設定する必要があります。
Microsoft Entra パスワード認証
Microsoft Entra クラウド専用 ID のユーザー アカウントまたは Microsoft Entra ハイブリッド ID を使用するユーザーを使ってデータベースに接続するには、Authentication キーワードを Active Directory Password
に設定する必要があります。 接続文字列にユーザー ID (UID) とパスワード (PWD) のキーワードと値を含める必要があります。 <server_name>
、<email_address>
、<password>
を適切な値に置き換えます。 次の C# のコード サンプルでは、ADO .NET を使用します。
string ConnectionString =
@"Data Source=<server-name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
GitHub の Microsoft Entra 認証のデモで入手できるデモ コード サンプルを使用して、Microsoft Entra の認証方法の詳細を確認してください。
Microsoft Entra ID アクセス トークン
この認証方法を使用すると、中間層サービスで、Microsoft Entra ID からトークンを取得することにより、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースに接続するための JSON Web トークン (JWT) を取得することができます。 この方法では、証明書ベースの認証を使用したサービス ID、サービス プリンシパル、およびアプリケーションなど、さまざまなアプリケーション シナリオを実現できます。 Microsoft Entra トークンの認証を使用するには、4 つの基本的な手順を完了する必要があります。
- Microsoft Entra ID にアプリケーションを登録し、コードのクライアント ID を取得します。
- アプリケーションを表すデータベース ユーザーを作成します (「 Microsoft Entra ID にマップされる包含ユーザーを作成する」セクションで説明されています)。
- アプリケーションを実行するクライアント コンピューターで証明書を作成します。
- アプリケーションのキーとして、証明書を追加します。
サンプルの接続文字列。 <server-name>
は、論理サーバーの名前に置き換えます。
string ConnectionString = @"Data Source=<server-name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();
詳細については、「 SQL Server Security Blog (SQL Server のセキュリティに関するブログ)」をご覧ください。 証明書の追加の詳細については、「Microsoft Entra ID の証明書ベースの認証の概要」を参照してください。
Microsoft Entra 多要素認証
Microsoft Entra 多要素認証は、すべての SQL ツールでサポートされている認証方法です。 Microsoft Entra ID を使用したプログラムによる認証の詳細については、「Microsoft Authentication Library (MSAL) の概要」を参照してください。
sqlcmd
次のステートメントは、sqlcmd のバージョン 13.1 を使用して接続します。 Microsoft Command Line Utilities 14.0 for SQL Server をダウンロードします。
Note
-G
を使用する sqlcmd
コマンドは、システム ID で動作しないため、ユーザー プリンシパル ログインが必要です。
sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -G
sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -U adrian@contoso.com -P <password> -G -l 30
Azure portal クエリ エディターの接続 (Azure SQL データベース)
Azure SQL データベースの Azure portal クエリ エディターの詳細については、「クイック スタート: Azure portal クエリ エディターを使用して Azure SQL データベースにクエリを実行する」を参照してください。
Azure portal で、SQL Database 移動します。 たとえば、Azure SQL ダッシュボードにアクセスします。
Azure portalの SQL データベースの [概要] ページで、左側のメニューから [クエリ エディター] を選択します。
[SQL Database クエリ エディターへようこそ] の下のサインイン画面で、[<ユーザーまたはグループ ID> として続行する] を選択します。