この記事では、Azure Synapse AnalyticsにおけるSynapse SQLを用いたMicrosoft Entra認証の詳細な概要を提供します。
Note
Microsoft Entra server principals は現在 Azure Synapse Analytics のプレビュー中です。
Microsoft Entra認証の設定については、「Azure Synapse AnalyticsでMicrosoft Entra認証を設定および管理する」をご覧ください。
Overview
Microsoft Entra ID は、データ資産の人間とサービスの ID を一元的に管理できるようにします。 Microsoft EntraをAzure Synapse Analyticsと統合して認証を行うことで、アイデンティティや権限管理を簡素化しつつ、データへの接続に関する詳細な条件付きアクセスやガバナンスも実現できます。
Microsoft Entra 認証の使用には、次の利点があります。
- ユーザー名とパスワードのような安全性の低い認証方法に取って代わります。
- サーバー全体でユーザー ID の急増を防止するか、阻止できるようにします。
- Microsoft Entra グループは、データベースのアクセス許可管理を個々のアカウントから離れて操作グループに統合できるようにします。
- 1 か所でのパスワードのローテーションを許可します。
- Microsoft Entra 専用の認証は SQL 認証認証の完全な代替手段になります。
- Azure リソース用マネージド ID は、データベースに接続するサービスのパスワードを格納する必要性、ならびにデータベースから他の Azure リソースへ接続する必要性を解消します。
- 通話、携帯ショートメール (SMS)、PIN を使用したスマート カード、モバイル アプリ通知など、各種の簡単な確認オプションによる強力な多要素認証を含む最新のセキュリティ管理を実現します。
- Microsoft Entra ID は、OpenID Connect、OAuth2.0、Kerberos の制約付き委任など、多くの先進認証プロトコルとの統合を実現します。
- データ ソースへの接続を一元的に監視できるようにします。
- 接続を成功させるために準拠しているデバイスや認証方法を要求するなど、条件付きアクセス管理を有効にします。
Note
Microsoft Entra 認証は Microsoft Entra ID から由来するアクセス トークンのみに対応しており、サードパーティのアクセス トークンには対応していません。 また、Microsoft Entra ID では、Microsoft Entra ID クエリをサード パーティのエンドポイントにリダイレクトすることもサポートされていません。 この制限は、Microsoft Entra認証をサポートするすべてのSQLプラットフォームおよびオペレーティングシステムに適用されます。
コンフィギュレーションの手順
Microsoft Entra 認証を構成する一般的な手順は次のとおりです。
- Microsoft Entra テナント を作成してデータを入力します
- Azure Synapse ワークスペースやスタンドアロン専用SQLプールを作成してください。
- ワークスペースや論理サーバーにMicrosoft Entra管理者を割り当ててください。
- Microsoft Entra の ID にマップされているデータベースに SQL プリンシパルを作成します。
- クライアント アプリケーションが Azure Identity のライブラリや認証方法を使って接続できるように構成してください。
- Microsoft Entra ID を使用してデータベースに接続します。
サポートされている ID および認証方法
Azure Synapse Analyticsは、Synapse SQLで以下のMicrosoft Entraアイデンティティをログインおよびユーザー(プリンシパル)として使用することをサポートしています。
- Microsoft Entra ユーザー: 内部ユーザー、外部ユーザー、ゲスト、メンバーを含め、Microsoft Entra テナント内にあるすべての種類のユーザー。 Microsoft Entra ID と フェデレーションされている Active Directory ドメインのメンバーもサポートされており、シームレスなシングル サインオン用に構成できます。
- アプリケーション:Azure上に存在するアプリケーションは、サービス プリンシパルやマネージド ID を使ってAzure Synapse Analytics に対して直接認証できます。 マネージド ID の使用は、認証がパスワード不要で開発者管理の認証情報が不要になるため望ましいです。
- Microsoft Entra グループは、グループ メンバーシップに基づいてユーザーとアプリケーションのアクセスを管理することにより、組織全体のアクセス管理を簡略化できます。
ユーザー ID には、次の認証方法がサポートされています。
- Microsoft Entra Integrated (Windows 認証) は、Active Directory [フェデレーション] を使用した Microsoft Entra ハイブリッド ID によってサポートされています。
- Microsoft Entra MFA は多要素認証とも呼ばれており、ユーザーの知識を超えた追加のセキュリティ チェックが必要です。
- Microsoft Entra パスワード認証は、Microsoft Entra ID に格納と管理されているユーザー認証情報を使用します。
- Microsoft Entra デフォルト認証は、アプリケーションのコンピューターのさまざまな認証情報キャッシュをスキャンし、ユーザー トークンを使用して SQL に認証を行うことができます。
サービス ID またはワークロード ID については、次の認証方法がサポートされています。
- Azure リソース用マネージド ID は、ユーザー割り当てとシステム割り当ての両方。 マネージド ID 認証はトークンベースであり、ID の使用を認証するリソースに ID が割り当てられます。 Azure ID プラットフォームはその関係を検証し、パスワードレス認証を有効にします。
- Microsoft Entra サービス プリンシパル名とアプリケーション (クライアント) シークレット。 推測して漏洩する可能性のあるパスワードに関連したリスクがあるため、この認証方法は推奨されません。
- Microsoft Entra デフォルト 認証は、アプリケーションのコンピューター上のさまざまな認証情報キャッシュをスキャンし、アプリケーション トークンを使用して SQL に認証を行うことができます。
Microsoft Entra 管理者
Microsoft Entra認証を有効にするには、Azure Synapseワークスペースまたは論理サーバーでMicrosoft Entra管理者を設定する必要があります。 この管理者はSQL管理者と併存します。 Microsoft Entra の管理者には、Azure テナント内のユーザー、グループ、サービス プリンシパル、またはマネージド ID を指定できます。 一度に設定できるアイデンティティは1つだけです。 Microsoft Entra管理者を削除すると、データベースの権限を持つ既存Microsoft Entraユーザーであっても、Microsoft Entra認証ベースの接続が無効になります。
Tip
Microsoft Entra グループは、複数の ID がサーバーで Microsoft Entra 管理者として機能できるようにします。 管理者がグループに設定されていると、すべてのグループ メンバーは Microsoft Entra の管理者ロールを継承します。 Microsoft Entra グループ管理者は、管理者管理をサーバー データ プレーン アクションから Microsoft Entra ID とグループ所有者の管轄に移行することにより、管理性を強化します。 グループは、SQL に接続するすべての Microsoft Entra ID に使用できます。これにより、サーバーとデータベースで 1 回限りのユーザーとアクセス許可を構成でき、すべてのユーザー管理をグループに任せることができます。
Microsoft Entra管理者は特別な役割を果たします。これは、他のMicrosoft Entraログインとユーザーを作成できる最初のアカウントであり、総称してプリンシパルと呼ばれます。 管理者は、サーバーの master データベースの包含データベース ユーザーです。 管理者アカウントは、すべてのユーザー データベースの db_owner ロールのメンバーであり、dbo ユーザーとして各ユーザー データベースに入ります。 管理者アカウントの詳細については、「データベースとログインの管理」を参照してください。
Microsoft Entra プリンシパル
Note
Microsoft Entra server principals (logins) は、Azure Synapse Analytics で現在プレビュー中です。
Azure Synapse AnalyticsでMicrosoft Entraのアイデンティティをプリンシパルとして作成するには、以下の3つの方法があります。
- サーバー プリンシパルまたはログインとして
- ログインベースのユーザー(データベースプリンシパルの一種)として
- 含まれているデータベースユーザーとして
Important
Azure SQL の Microsoft Entra 認証は、Azure RBAC と統合しません。 Microsoft Entraのアイデンティティを使ってAzure SQLに接続しクエリを実行するには、アクセスが必要なデータベース内でMicrosoft Entraのインデンティティをプリンシパルとして作成する必要があります。
SQL Server ContributorおよびSQL DB Contributorの役割は、データベース接続へのアクセスではなく、管理関連の展開操作を保護します。
専用SQLプールでのログイン(サーバープリンシパル)
Microsoft Entra ID の ID 用のサーバー プリンシパル (ログイン) は、Azure Synapse Analytics の専用 SQL プールでプレビュー段階です。
次の T-SQL は、Microsoft Entra ログインを作成する方法について示しています。
CREATE LOGIN [MSEntraUser] FROM EXTERNAL PROVIDER
Microsoft Entra ログインには、sys.server_principals に次のプロパティ値があります。
| Property | 値 |
|---|---|
SID (セキュリティ識別子) |
Microsoft Entra ID のオブジェクト ID のバイナリ表現 |
| 型 | E = Microsoft Entra ID からの外部ログインまたはアプリケーション X = Microsoft Entra ID からの外部グループ |
| type_desc | Microsoft Entra のログインまたはアプリ用 EXTERNAL_LOGIN Microsoft Entra グループの EXTERNAL_GROUP |
ログイン ベースのユーザー
ログイン ベースのユーザーは、Microsoft Entra ログインに割り当てられたサーバー レベルのロールとアクセス許可を継承します。
次の T-SQL は、Microsoft Entra ID のログイン ベースのユーザーを作成する方法について示しています。
CREATE USER [MSEntraUser] FROM LOGIN [MSEntraUser]
次のテーブルでは、sys.database_principals の Microsoft Entra ログイン ベースのユーザー プロパティ値について詳しく説明します。
| Property | 値 |
|---|---|
SID (セキュリティ識別子) |
Microsoft Entra ID のオブジェクト ID のバイナリ表現に「AADE」を加えたもの |
| 型 | E = Microsoft Entra ID からの外部ログインまたはアプリケーション X = Microsoft Entra ID からの外部グループ |
| type_desc | Microsoft Entra のログインまたはアプリ用 EXTERNAL_LOGIN Microsoft Entra グループの EXTERNAL_GROUP |
含まれるデータベースユーザー
含まれたデータベース ユーザーは、データベースとともに移行可能です。 サーバーまたはインスタンスで定義されたアイデンティティに関連付けられておらず、データベースと共に、あるサーバーまたはインスタンスから別のサーバーまたはインスタンスへ支障なく簡単に移動できます。
次の T-SQL は、Microsoft Entra ID の包含データベース ユーザーを作成する方法を示しています。
CREATE USER [MSEntraUser] FROM EXTERNAL PROVIDER
Microsoft Entra データベース ベースのユーザーは、の作成方法を除き、SIDのログイン ベースのユーザーと同じプロパティ値を持ちます。
| Property | 値 |
|---|---|
SID (セキュリティ識別子) |
Microsoft Entra ID のオブジェクト ID のバイナリ表現 |
| 型 | E = Microsoft Entra ID からの外部ログインまたはアプリケーション X = Microsoft Entra ID からの外部グループ |
| type_desc | Microsoft Entra のログインまたはアプリ用 EXTERNAL_LOGIN Microsoft Entra グループの EXTERNAL_GROUP |
SIDが基づいている元の Microsoft Entra GUID を取得するには、次の T-SQL 変換を使用します。
SELECT CAST(sid AS UNIQUEIDENTIFIER) AS EntraID FROM sys.database_principals
Caution
サーバーレベルやインスタンスレベルで、Microsoft Entraのログインと同じ名前の包含されたMicrosoft Entraデータベースユーザーを作成してしまう可能性があります。 プリンシパル同士が接続されていないため、データベースユーザーはサーバーログインから権限を継承しません。 接続要求ではID情報が混同され、定義されていない動作を引き起こすことがあります。
次の T-SQL クエリを使用し、データベース ユーザーがログイン ベースのユーザーか包含データベース ユーザーかを特定します。
SELECT CASE
WHEN CONVERT(VARCHAR(100), sid, 2) LIKE '%AADE' AND len(sid) = 18 THEN 'login-based user'
ELSE 'contained database user'
END AS user_type,
*
FROM sys.database_principals WHERE TYPE = 'E' OR TYPE = 'X'
次の T-SQL クエリを使用し、データベース内のすべての Microsoft Entra プリンシパルを表示します。
SELECT
name,
CAST(sid AS UNIQUEIDENTIFIER) AS EntraID,
CASE WHEN TYPE = 'E' THEN 'App/User' ELSE 'Group' AS user_type,
sid
FROM sys.database_principals WHERE TYPE = 'E' OR TYPE = 'X'
Microsoft Entra 専用認証
Microsoft Entraのみの認証を有効にすると、SQL認証は無効になります。 SQL認証を使ってワークスペース、SQLプール、データベースに接続することはできません。
始めるには、「Microsoft Entra only認証の設定」をご覧ください。
多要素認証 (MFA)
Microsoft Entra の多要素認証は、Microsoft のクラウドベースの ID およびアクセス管理サービスによって提供されるセキュリティ機能です。 多要素認証を使用すると、1 つのパスワードからさらに進んだ追加の検証手順を提供するようにユーザーに要求することで、ユーザー サインインのセキュリティが強化されます。
Microsoft Entra 多要素認証は、シンプルなサインイン プロセスを好むユーザーの要求に応えながら、データとアプリケーションへのアクセスを保護するのに役立ちます。 MFA では、2 つ以上の認証要素を提供するようにユーザーに要求することで、ユーザーのサインインに追加のセキュリティ レイヤーが追加されます。 これらの要素には、通常、ユーザーが知っているもの (パスワード)、ユーザーが所有しているもの (スマートフォンやハードウェア トークン)、ユーザー自身のもの (生体認証データ) などがあります。 MFA は、複数の要素を組み合わせることで、認可されていないアクセスの可能性を大幅に減らします。
多要素認証は、Azure Synapse Analyticsでサポートされている認証方法です。
始めるには、「Microsoft Entra マルチファクター認証の設定」をご覧ください。
Microsoft Entra の B2B サポート
すべての SQL 製品の Microsoft Entra 多要素認証は、Microsoft Entra B2B コラボレーションもサポートしています。これにより、企業はゲスト ユーザーを招待して組織との共同作業を行うことができます。 ゲスト ユーザーは、個々のユーザーまたは Microsoft Entra グループのメンバーとしてデータベースに接続できます。
Active Directory への Microsoft Entra フェデレーションの信頼アーキテクチャ
Microsoft Entra ID は、Active Directory のような使い慣れた ID とアクセス管理ソリューションとも統合します。 オンプレミスの Active Directory をハイブリッド参加にすることで、Microsoft Entra ID を介してフェデレーションされた Windows ID が、シングルサインオン認証情報を使用して Azure Synapse Analytics に接続できるようになります。
フェデレーションの場合、Microsoft Entra ID ではパススルー認証とパスワード ハッシュ認証という 2 つの安全な認証方法が用意されています。 オンプレミスの Active Directory を Microsoft Entra ID にフェデレーションすることを検討している場合、「Microsoft Entra ハイブリッド ID ソリューションに適した認証方法の選択」を確認してください。
Microsoft Entra ハイブリッド ID のセットアップと同期の詳細については、次の記事を参照してください。
- Microsoft Entra の接続同期を使用してパスワード ハッシュ同期を実装
- Microsoft Entra パススルー認証
- Azure で Active Directory フェデレーション サービス (AD FS) の展開と Microsoft Entra の接続とフェデレーション
Microsoft Entra ID はトークンを認証し、データベースはそれを信頼して発行者とその他の詳細を確認します。 顧客 1 は、ネイティブ ユーザーの Microsoft Entra ID またはフェデレーション ユーザーの Microsoft Entra ID を表します。 顧客 2 は、インポートされたユーザーを含む、潜在的なソリューションを表しています。この例では、フェデレーションされた Microsoft Entra ID から来たユーザーを含んでおり、ADFS は Microsoft Entra ID と同期されています。 Microsoft Entra認証によるデータベースへのアクセスには、ホスティングサブスクリプションがMicrosoft Entra IDに紐づいている必要があることを理解することが重要です。 Azure SQLまたはAzure Synapseリソースを作成するには、同じサブスクリプションを使う必要があります。
Permissions
Microsoft Entra管理者に割り当てられた権限は、Azure Synapse Analyticsで他のプリンシパルに割り当てられた権限とは異なります。 一部のシナリオでは、Azure Synapse AnalyticsでMicrosoft Entra認証を使用するには、Microsoft Graph の権限も必要です。
管理者のアクセス許可
作成時に Microsoft Entra 管理者に割り当てられる権限と役割は以下のとおりです:
- 各データベースのdb_owner
Azure Synapse Analytics のアクセス許可
プリンシパルには、ユーザーを作成するためにデータベースの ALTER ANY USER 権限が必要です。
デフォルトでは、サーバー管理者アカウント、CONTROL ON DATABASEを持つデータベース ユーザー、および db_owner データベース ロールのメンバーは、ALTER ANY USER 権限を持ちます。
Azure SQLでMicrosoft Entraプリンシパルを作成するには、リクエスト側のアイデンティティがMicrosoft Graphにプリンシパルの詳細を問い合わせる必要があります。 初期展開時には、Microsoft Graphをクエリできる唯一のアイデンティティはMicrosoft Entra管理者のみです。したがって、管理者は最初に他のMicrosoft Entraプリンシパルを作成しなければなりません。 その後、管理者は他のプリンシパルにALTER ANY USERを割り当て、それらのプリンシパルが他のMicrosoft Entraプリンシパルを作成できるようにできます。
Microsoft Entra 認証を使用したゼロタッチ展開
Microsoft Entra 管理者はデータベースに最初に接続し、他の Microsoft Entra ユーザーを作成する必要があるため、導入インフラストラクチャの ID を管理者として追加すると便利です。 他の Microsoft Entra プリンシパルを作成してアクセス許可を割り当てるなど、展開は初期セットアップを行うことができます。 デプロイメントでは、PowerShell や ARM テンプレートのようなツールを使って自動プリンシパル作成をスクリプト化しましょう。 Azure SQLは現在、ユーザーの作成と権限管理を構成するためのネイティブAPIをサポートしていません。 これらの操作はSQLインスタンスへの直接接続を使うことでのみ実行できます。
Microsoft Graph に対するアクセス許可
Microsoft Entra プリンシパルとその他のシナリオをいくつか作成するには、Azure SQL は Microsoft Graph の呼び出しを行って、Microsoft Entra ID の ID に関する情報を取得し、存在を検証する必要があります。 これを行うには、SQLプロセスが顧客テナント内でMicrosoft Graphの読み取り権限へのアクセス権を持つか、取得する必要があります。 このアクセス権は、いくつかの方法で取得できます。
- コマンドを実行するSQLプリンシパルがユーザーIDであれば、Microsoft GraphをクエリするためにSQLインスタンスに追加の権限を与える必要はありません。
- コマンドを実行するSQLプリンシパルがサービスプリンシパルやマネージドアイデンティティなどのサービスアイデンティティである場合、Azure SQLインスタンスはMicrosoft Graphをクエリするために独自の権限を必要とします。
- 論理サーバーまたは管理インスタンスのプライマリサーバーアイデンティティ(マネージドアイデンティティ)にアプリケーションの権限を割り当てます。 SQLプロセスはプライマリ サーバー ID を使って、Microsoft Graph など、テナント内の他の Azure サービスに対して認証を行うことができます。 以下の表は、コマンドが成功裏に実行されるために必要な様々なシナリオとMicrosoft Graphの権限について説明します。
| Scenario | 最小限のアクセス許可 |
|---|---|
CREATE USERまたはCREATE LOGIN(Microsoft Entra サービス プリンシパルまたはマネージド ID の場合) |
Application.Read.All |
CREATE USER または CREATE LOGIN Microsoft Entraユーザーの場合 |
User.Read.All |
CREATE USER または CREATE LOGIN(Microsoft Entra グループ用) |
グループメンバー.読み取り.すべて |
Tip
ディレクトリリーダーの役割は、アイデンティティに割り当てられる最小限のスコープの役割であり、必要なすべての権限をカバーします。 ロールを使うことで、それらをMicrosoft Entraのセキュリティグループに割り当てることができ、管理を個々のエンティティから概念的なグループへと抽象化できます。
ツールのサポート
多要素認証を含め、SQL Server Management Studio (SSMS) は多数の Microsoft Entra 認証接続オプションをサポートしています。
SQL Server Data Tools (SSDT) for Visual Studio は 2015 年以降、Microsoft Entra ID を使用したパスワード、統合、対話型認証をサポートしています。 詳細については、「SQL Server Data Tools (SSDT) での Microsoft Entra ID のサポート」を参照してください。
- 現在、SSDT オブジェクト エクスプローラーはMicrosoft Entraユーザーを表示していません。 回避策として、ユーザーを sys.database_principals で表示してください。
最小バージョン
Azure Synapse AnalyticsでMicrosoft Entra認証を使用するには、これらのツールを使用する際に以下の最低バージョンが必要です:
- SQL Server Management Studio (SSMS) 18.6 以降。
- Visual Studio 2015 用 SQL Server Data Tools、バージョン 14.0.60311.1 (2016 年 4 月) 以降
- SqlServer 用 .NET Framework データ プロバイダーの最小バージョンは .NET Framework 4.6
- バージョン 15.0.1 以降では、sqlcmd ユーティリティと bcp ユーティリティは Multi-Factor Authentication を使用した Active Directory 対話型認証をサポートしています。
- Microsoft JDBC Driver 6.0 for SQL Server は、Microsoft Entra 認証をサポートしています。 「 接続プロパティの設定」もご覧ください。
Microsoft Entra を使用して Azure Synapse Analytics に接続する
Azure SQLリソースのMicrosoft Entra認証を設定した後、SQL Server Management Studio、SQL Server Data Tools、クライアントアプリケーションを使って接続できます。
Limitations
Azure Synapse AnalyticsでMicrosoft Entra認証を使用する際には、以下の制限を考慮してください:
2048 以上の Microsoft Entra セキュリティ グループのメンバーである Microsoft Entra ユーザーとサービス プリンシパル (Microsoft Entra アプリケーション) は、サポートされなくてデータベースにログインできません。
次のシステム関数はサポートされておらず、Microsoft Entra プリンシパルによって実行されたときに
NULL値が返されます。SUSER_ID()SUSER_NAME(<ID>)SUSER_SNAME(<SID>)SUSER_ID(<name>)SUSER_SID(<name>)
接続のタイムアウトを 30 秒に設定することをお勧めします。
db_ownerデータベース役割のメンバーであるグループの一員であるMicrosoft Entraユーザーは、Azure Synapse AnalyticsでCREATE DATABASE SCOPED CREDENTIALを使用しようとすると、以下のエラーが現れることがあります。SQL Error [2760] [S0001]: The specified schema name 'user@mydomain.com' either doesn't exist or you do not have permission to use it.CREATE DATABASE SCOPED CREDENTIALの問題を軽減するには、Microsoft Entra ユーザーの ID をdb_ownerロールに直接追加します。Azure Synapse Analyticsは、Microsoft Entra グループのメンバーシップを通じてサインインしたユーザーの暗黙のユーザーを作成しません。 そのため、所有権の割り当てが必要な操作は、たとえMicrosoft Entraグループがその権限を持つロールのメンバーであっても失敗する可能性があります。
たとえば、 db_ddladmin ロールを持つ Microsoft Entra グループを介してデータベースにサインインしたユーザーは、スキーマ (テーブル、ビュー、型など) を明示的に定義しないと、
CREATE SCHEMA、ALTER SCHEMA、およびその他のオブジェクト作成ステートメントを実行できません。 これを解決するには、そのユーザーに対して Microsoft Entra ユーザーを作成するか、DEFAULT_SCHEMAなどのを割り当てるために Microsoft Entra グループを変更する必要があります。Microsoft Entra管理者を削除すると、Microsoft Entra認証接続を使用できなくなります。