Microsoft Entra サーバー プリンシパル

Microsoft Entra ID(旧Azure Active Directory)からサーバー プリンシパルを作成して、Azure Synapse Analytics専用SQLプールの仮想masterデータベースでログインとして使用できます。

Note

Microsoft Entra サーバー プリンシパルは現在 Azure Synapse Analytics でプレビュー提供されています。

専用SQLプールでMicrosoft Entraサーバープリンシパルを使用することにはいくつかの利点があります:

  • 権限管理のためのサーバーロールをサポートする。
  • loginmanager (たとえば、dbmanager や の役割) を持つ複数の Microsoft Entra ユーザーをサポートします。
  • SQL ログインと Microsoft Entra ログインの間の機能パリティ。
  • Microsoft Entraのみの認証を活用するなど、機能改善のサポートを拡充しましょう。 Microsoft Entraのみの認証では、SQLサーバー管理者、SQLログイン、ユーザーを含むSQL認証を無効にできます。
  • 特別なロールを持つ Microsoft Entra サービスプリンシパル ログインを使用して、Microsoft Entra アプリケーションによるユーザーとデータベースの作成およびメンテナンスを完全に自動化できます。

詳細については、Azure Synapse AnalyticsのMicrosoft Entra認証をご覧ください。

Permissions

仮想masterデータベースでMicrosoft Entraログインを作成または使用するには、以下の権限が必要です:

  • Microsoft Entra の管理者権限、または loginmanager サーバー ロールのメンバーであること。 最初のMicrosoft Entraログインを作成できるのはMicrosoft Entra管理者だけです。
  • Azure Synapse Analyticsで使用されている同じディレクトリ内で、Microsoft Entra IDのメンバーでなければなりません。

既定で、master データベースで新しく作成された Microsoft Entra ログインに付与される標準のアクセス許可は、VIEW ANY DATABASE です。

Microsoft Entra プリンシパルの構文

Microsoft Entra サーバーおよびデータベース プリンシパルを作成および管理するには、次の構文を使用します。

ログインを作成する

この構文では、Microsoft Entra ID に基づいてサーバー レベルのログインが作成されます。 このコマンドはバーチャルmasterデータベースで実行できるのはMicrosoft Entra管理者だけです。

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

login_name では、Microsoft Entra プリンシパル (Microsoft Entra のユーザー、グループ、またはアプリケーション) を指定します。

詳細については、「CREATE LOGIN (Transact-SQL)」を参照してください。

ログインからユーザーを作成する

次の T-SQL 構文では、仮想 master データベースの Microsoft Entra ログインにマップされたデータベース レベルの Microsoft Entra プリンシパルが作成されます。 Microsoft Entra ユーザーを含むデータベースを作成する構文と似ていますが、唯一の違いは、FROM LOGIN [login_name] ではなく FROM EXTERNAL PROVIDER を指定することです。

Microsoft Entra ログインから Microsoft Entra ユーザーを作成するには、次の構文を使用します。

CREATE USER [user_name] FROM LOGIN [login_name]

SID の 列を使用すると、Microsoft Entra の包含データベース ユーザーと、ログインから作成された Microsoft Entra ユーザーを区別できます。 包含データベース ユーザーの場合、SID は長さ 16 の binary 文字列です。 ログイン ベースのユーザーの場合、SID は長さ 18 で AADE サフィックス付きの binary 文字列です。

Note

SIDにAADEの接尾辞を付けることで、Microsoft Entraユーザーをログインから作成したと識別できます。 しかし、これはそのログインとそのユーザーのSIDが sys.server_principals と sys.database_principals で一致しないことを意味します。 ユーザーを元のログインに照合するには、まず AADE の接尾辞を削除する必要があります。

ログイン ベースのユーザーと包含データベース ユーザーの概念上の違いを理解するには、「包含データベース ユーザー」を参照してください。

すべてのユーザー作成構文の詳細については、「CREATE USER (Transact-SQL)」を参照してください。

ログインを無効化または有効化するには、ALTER LOGINを使って行います

ALTER LOGIN (Transact-SQL) DDL構文を使って、Azure Synapse Analytics専用SQLプールでMicrosoft Entraログインを有効または無効にします。

ALTER LOGIN [login_name] DISABLE

ログインを無効にすると、サーバープリンシパルは接続できなくなります。 ログインを無効にすると、そのログインから作成したすべてのデータベースプリンシパル(ユーザー)がそれぞれのデータベースに接続できなくなります。

Note

  • ALTER LOGIN login_name DISABLE はログインに関連付けられていないため、包含データベース ユーザーには影響しません。

  • ALTER LOGIN login_name DISABLEこれは Microsoft Entra グループではサポートされていません。

  • 個別に無効化されたログインは、masterデータベースで作成したログイングループ(例: Microsoft Entra 管理者グループ)に属するユーザーに属することはできません。

  • DISABLEまたはENABLEの変更を即座に有効にするには、以下のT-SQLコマンドを使用して認証キャッシュとTokenAndPermUserStoreキャッシュをクリアしてください。

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
    

制限事項と注釈

  • SQL サーバー管理者は、Microsoft Entra ログインまたはユーザーをどのデータベースにも作成できません。
  • Azure Synapse Analyticsのワークスペースにある専用SQLプールは論理SQL Serverを使用しません。
  • SQL 管理者または SQL ユーザーは、以下の Microsoft Entra 操作を実行できません:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Azure Synapse Analytics では Microsoft Entra server principals (logins) の偽装がサポートされません:
  • Microsoft Entra ログインは Microsoft Entra 管理者と重複できません。 Microsoft Entra 管理者は、他のあらゆるログインよりも優先されます。 Microsoft Entra アカウントが、Microsoft Entra 管理者として、個別または管理者グループのメンバーとしてサーバーに既にアクセスしている場合、このアカウント用に作成されたログインには何も影響しません。 ただし、ログインの作成は、T-SQL によってブロックされません。 アカウントがサーバーに認証された後、そのログインは新たに作成されたログインではなく、Microsoft Entra管理者の実質的な権限を持ちます。
  • 特定のMicrosoft Entraログインオブジェクトの権限変更はサポートされていません:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Microsoft Entraのログイン権限を変更すると、デフォルトでその変更は次に専用SQLプールに接続したときにのみ有効になります。 ログインで開いている既存の接続は影響を受けません。 アクセス許可の変更を直ちに有効にするために、「ALTER LOGIN を使用してログインを無効にするか有効にする」で前述したように、認証と TokenAndPermUserStore を手動でクリアすることができます。 この動作は、ALTER Standard Edition RVER ROLE を使用してサーバー ロール メンバーシップを変更する場合にも適用されます。
  • SQL Server Management Studio では、ユーザーを作成するスクリプト コマンドでは、同じ名前の master に Microsoft Entra ログインが既に存在するかどうかは確認されません。 包含データベース Microsoft Entra ユーザーの T-SQL が常に生成されます。
  • 一意ではない表示名を使用してサービス プリンシパルからログインまたはユーザーを作成しようとすると、エラーが発生する可能性があります。 このエラーの軽減策については、「名前に関する考慮事項」を参照してください。
  • Microsoft Entraログインで作成されたデータベースユーザーは、ロールや権限の付与に遅延が発生することがあります。 この問題が発生した場合は、以下のコマンドを使用してください。
    • ユーザー データベースからユーザーを削除 します。
    • DBCC FREESYSTEMCACHE('TokenAndPermUserStore')を実行して、データベースのセキュリティ キャッシュをクリアします。
    • DBCC FLUSHAUTHCACHEを実行して、フェデレーション認証コンテキスト キャッシュをクリアします。
    • ログインに基づいてユーザーを作成します。

Microsoft Entra グループ サーバー プリンシパルの制限事項

Azure Synapse AnalyticsにおけるMicrosoft Entraグループログインには以下の制限が適用されます:

  • Microsoft Entraグループではサーバーロールはサポートされていません。
  • SQL管理者がMicrosoft Entraグループであれば、そのグループのユーザーは接続時にいくつかの制限に直面します。 各Microsoft Entraユーザーがsys.server_principalsテーブルに個別にリストされているわけではありません。 この制限には、NULLの呼び出しでSUSER_SIDが返されることを含め、さまざまな影響が生じます。
  • Microsoft Entraのユーザーログインは、Microsoft Entraグループログインの一部として暗黙的に作成されるわけではありません。 これらのユーザーはデフォルトのスキーマを持っておらず、Microsoft Entraユーザーのログインを作成するか、グループにデフォルトスキーマを割り当てるまでは、CREATE SCHEMA的な操作を行うことはできません。
  • データベースの所有者としてMicrosoft Entraグループに所有権を変更することはできません。
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] はエラーメッセージで失敗します。

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

次のステップ