Microsoft Entra 認証を使用して Azure Synapse Analytics に接続する

この記事では、Microsoft Entra認証を使ってAzure Synapse Analyticsに接続する方法を紹介します。

Note

Microsoft Entra server principals は現在 Azure Synapse Analytics のプレビュー中です。

Prerequisites

接続するには、Azure Synapseリソースの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でSynapse SQLに接続する方法を示しています。

Microsoft Entra の統合済み

Microsoft Entra ID にフェデレーションされた Windows 認証情報を使ってサインインしたい場合、この方法を使ってください。 詳細については、「Microsoft Entra シームレス シングル サインオン」を参照してください。

  1. SSMS または SSDT を起動し、[サーバーへの接続] (または [データベース エンジンへの接続]) ダイアログ ボックスの [ログイン] タブで次の手順を実行します。

    1. SQLエンドポイントの完全限定 サーバー名 を入力してください。 エンドポイントのフォーマットについては、「 Synapse SQLに接続」を参照してください。
    2. 認証では、[統合済み Microsoft Entra] を選択します。 既存の認証情報が接続に提示されているので、パスワード入力は不要です。
    3. 暗号化については「厳格」を選択してください。
  2. [接続プロパティ] タブの [データベースへの接続] フィールドに、接続先のユーザー データベースの名前を入力します。

Microsoft Entra パスワード

Microsoft Entra のマネージド ドメインを使用して Microsoft Entra プリンシパル名と接続する場合は、この方法を使用してください。 また、リモートワーク時など、ドメインにアクセスできない場合のフェデレート アカウントにも利用できます。

この方法を使用して、Microsoft Entra のクラウド専用 ID を持つユーザー、または Microsoft Entra のハイブリッド ID を持つユーザーで Synapse SQL への認証を行います。 この方法は、ローカルマシンがドメインに加入していない場合でも、リモートアクセス時などでWindows認証情報を使いたいユーザーをサポートします。

  1. SSMS または SSDT を起動し、[サーバーへの接続] (または [データベース エンジンへの接続]) ダイアログ ボックスの [ログイン] タブで次の手順を実行します。

    1. SQLエンドポイントの完全限定 サーバー名 を入力してください。 エンドポイントのフォーマットについては、「 Synapse SQLに接続」を参照してください。
    2. 認証では、[Microsoft Entra パスワード] を選択します。
    3. [ユーザー名] ボックスに、Microsoft Entra ユーザー名を username@domain.com 形式で入力します。 ユーザー名は、Microsoft Entra ID のアカウント、または Microsoft Entra ID を持つマネージドまたはフェデレーション ドメイン のアカウントである必要があります。
    4. [パスワード] ボックスに、Microsoft Entra アカウントまたはマネージド/フェデレーション ドメイン アカウントのユーザー パスワードを入力します。
    5. 暗号化については「厳格」を選択してください。
  2. [接続プロパティ] タブの [データベースへの接続] フィールドに、接続先のユーザー データベースの名前を入力します。

Microsoft Entra MFA(多要素認証)

この方法は、多要素認証(MFA)を用いたインタラクティブな認証に使用し、パスワードは対話形式で求められます。 この方法は、Microsoft EntraクラウドのみのIDユーザーやMicrosoft EntraハイブリッドIDを持つユーザーに対してSynapse SQLへの認証に使用できます。

以下の手順は、最新バージョンのSSMSで多要素認証を使って接続する方法を示しています。

  1. MFAを使って接続するには、SSMSの「Connect to Server」ダイアログボックスでMicrosoft Entra MFAを選択してください。

  2. [サーバー名] ボックスにサーバーの名前を入力します。 [ユーザー名] ボックスに、user_name@domain.com という形式で Microsoft Entra 資格情報を入力します。

  3. 接続を選択します。

  4. 「 アカウントにサインイン 」ダイアログが表示されると、ステップ2で入力した ユーザー名 が事前に入力されています。 ユーザーが Microsoft Entra ID とフェデレーションされているドメインに属している場合、パスワードは不要です。

  5. MFA 管理者設定に基づいて構成されたいずれかの方法を使用して認証するように求められます。

  6. 検証が完了すると、有効な資格情報とファイアウォール アクセスが推定され、SSMS の接続が通常どおり行われます。

Microsoft Entra サービス プリンシパル

この方法でMicrosoft EntraサービスプリンシパルでSynapse SQLに認証できます。

Microsoft Entra マネージド ID

この方法でMicrosoft Entraマネージド IDでSynapse SQLに認証できます。 詳細については、Azure Synapse Analytics の Microsoft Entra のマネージド IDをご覧ください。

Microsoft Entra デフォルト

Microsoft Entra IDのデフォルト認証オプションは、パスワード不要かつ非対話的なメカニズム(管理型アイデンティティを含む)による認証を可能にします。

クライアント アプリケーションからの接続

以下の手順は、クライアントアプリケーションからMicrosoft EntraのIDでSynapse SQLに接続する方法を示しています。 このリストにはすべての認証方法が含まれているわけではありません。 詳細については、Microsoft Entra認証およびSqlClientをご覧ください。

クライアント アプリケーションの構成

Note

System.Data.SqlClient では、非推奨となる Azure Active Directory 認証ライブラリ (ADAL) を使用します。 Microsoft Entra 認証に System.Data.SqlClient 名前空間を使用している場合は、Microsoft.Data.SqlClient および Microsoft Authentication Library (MSAL) にアプリケーションを移行してください。 .NETで利用可能な接続方法を理解するには、Microsoft Entra認証およびSqlClientを参照してください。

もしアプリケーションで ADAL.DLL を使い続ける必要がある場合は、このセクションのリンクを使って最新のODBCまたはOLE DBドライバーをインストールしてください。これらは最新の ADAL.DLL ライブラリを含んでいます。

Microsoft EntraのIDを使ってアプリケーションやユーザーがAzure Synapse Analyticsに接続するすべてのクライアントマシンには、以下のソフトウェアをインストールしてください。

これらの要件は、次の操作を行うことで満たすことができます。

  • 最新バージョンの 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 認証 を使用するには、ドメインの Active Directory が Microsoft Entra ID とフェデレーションされているか、またはパススルー認証またはパスワード ハッシュ認証のためのシームレス シングル サインオン用に構成された管理ドメインである必要があります。 詳細については、「Microsoft Entra シームレス シングル サインオン」を参照してください。

データベースに接続するには、アプリケーション(またはサービス)がユーザーのドメイン認証情報のもとでドメイン参加されたマシン上で動作しなければなりません。

統合認証とMicrosoft Entraアイデンティティを使ってデータベースに接続するには、データベース接続文字列の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はSynapse SQLへの接続にはサポートされていません。 ODBC接続を行う際は、スペースを削除し、認証を ActiveDirectoryIntegratedに設定してください。

Microsoft Entra パスワード認証

クラウドのみのアイデンティティ ユーザー アカウント、または 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();

Microsoft Entra authentication GitHub Demo で提供されているデモ コード サンプルを使用して、Microsoft Entra の認証方法について詳しく学びましょう。

Microsoft Entra ID アクセス トークン

この認証方法により、中間層サービスはMicrosoft Entra IDからJSONウェブトークン(JWT)を取得し、Microsoft Entra IDからトークンを取得してSynapse SQLに接続できます。 この方法では、証明書ベースの認証を使用したサービス ID、サービス プリンシパル、およびアプリケーションなど、さまざまなアプリケーション シナリオを実現できます。 Microsoft Entra トークンの認証を使用するには、4 つの基本的な手順を完了する必要があります。

  1. Microsoft Entra ID にアプリケーションを登録し、コードのクライアント ID を取得します。
  2. アプリケーションを表すデータベース ユーザーを作成します (「 Microsoft Entra ID にマップされる包含ユーザーを作成する」セクションで説明されています)。
  3. アプリケーションを実行するクライアントコンピュータ上で証明書を作成します。
  4. アプリケーションのキーとして、証明書を追加します。

サンプルの接続文字列。 <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();

証明書の追加の詳細については、「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

sqlcmd -G コマンドを使用すると、システム 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