Azure Active Directory のサーバー プリンシパル

適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (専用 SQL プールのみ)

Note

Azure Active Directory (Azure AD) サーバー プリンシパル (ログイン) は、現在、Azure SQL Database のパブリック プレビュー段階です。 Azure SQL Managed Instance は、すでにMicrosoft Azure AD のログインを利用できます。

SQL Database の仮想マスターデータベースにおけるログインである Azure AD サーバープリシパルを作成し、利用することができるようになりました。 SQL Database に Azure AD サーバープリシパルを使用すると、複数のベネフィットがあります。

  • アクセス許可の管理のための Azure SQL Database サーバー ロールをサポートします。
  • loginmanagerおよびdbmanagerロールといった SQL Database のための特別なロールを持つ複数の Azure AD ユーザーをサポートします。
  • SQL ログインと Azure AD ログインの間の機能パリティ。
  • Azure AD のみの認証を活用するなど、機能改善サポートを強化します。 Azure AD のみの認証を使用すると SQL認証を無効にすることができます。これには、SQL サーバー管理者、SQLログイン、ユーザーが含まれます。
  • Azure AD geo プリンシパルにより geo レプリカのサポートが可能になります。 Azure AD プリンシパルは、プライマリ サーバーに対する読み取り専用アクセス許可拒否アクセス許可 を使用して、ユーザー データベースの geo レプリカに接続できるようになります。
  • 特別なロールを持つ Azure AD サービスプリンシパル ログインを使用して、ユーザーとデータベース作成の完全な自動化と、Azure AD アプリケーションで提供されるメインテナンスを実行できます。
  • Managed Instance はすでにマスター データベースで Azure AD のログインをサポートしているため、Managed Instance と SQL Database の機能をより緊密にすることができます。

Azure SQL における Azure AD 認証の詳細については、「Azure Active Directory 認証を使用する」を参照してください

アクセス許可

仮想マスター データベースで Azure AD のログインを使用または作成するには、次のアクセス許可が必要です。

  • Azure AD の管理者アクセス許可またはloginmanagerサーバロールのメンバーシップ。 最初の Azure AD ログインは、Azure AD の管理者のみが作成できます。
  • Azure SQL Database で使用されるのと同じディレクトリ内の Azure AD のメンバーである必要があります

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

Azure AD ログイン構文

この機能リリースでは、Azure SQL Database が Azure AD サーバー プリンシパルを使用するための新しい構文が導入されました。

ログイン構文を作成する

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

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

login_name は、Azure AD のユーザー、グループ、またはアプリケーションである Azure AD プリンシパルを指定します。

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

ユーザー構文を作成する

次の T-SQL 構文は SQL Database で既に使用できます。仮想マスター データベースの Azure AD ログインにマップされたデータベース レベルの Azure AD プリンシパルを作成するために使用できます。

Azure AD ログインから Azure AD ユーザーを作成するには、次の構文を使用します。 仮想 マスター データベースでこのコマンドを実行できるのは、Azure AD 管理者のみです。

CREATE USER user_name FROM LOGIN login_name

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

ALTER LOGIN 構文を使用してログインを無効または有効にする

ALTER LOGIN (Transact-SQL) DDL 構文を使用して、Azure SQL Database でMicrosoft Azure Active Directory ログインを有効または無効にすることができます。

ALTER LOGIN login_name DISABLE 

Azure AD プリンシパルlogin_nameは、user_nameログインにマップされたlogin_name Azure AD ユーザー プリンシパルが作成された SQL Database 論理サーバー内の任意のユーザー データベースにログインできません。

Note

  • ALTER LOGIN login_name DISABLE は、含まれているユーザーに対してサポートされていません。

  • ALTER LOGIN login_name DISABLEは、Azure AD グループではサポートされていません。

  • 個々の無効なログインは、マスター データベースに作成されたログイン グループ (たとえば、Azure AD の管理者グループ) の一部であるユーザーに属することはできません。

  • DISABLE または ENABLEの変更をすぐに有効にするには、T-SQL コマンドを使用して、認証キャッシュと TokenAndPermUserStore キャッシュをクリアする必要があります。

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Azure AD プリンシパルの ロール

SQL Database の特別なロール は、 dbmanagerloginmanager を含む Azure AD プリンシパルの仮想マスター データベース内のユーザーに割り当てることができます。

Azure SQL Database サーバー ロールは、仮想マスター データベース内のログインに割り当てることができます。

これらのロールを許可する方法のチュートリアルについては、「チュートリアル: Azure Active Directory サーバー ログインの作成と使用」を参照してください。

制限事項と注釈

  • SQL サーバー管理者は、 Azure AD ログインまたはユーザーをどのデータベースにも作成できません。
  • データベースの所有権を Azure AD グループデータベース所有者として変更することはサポートされていません。
    • 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.
      
    • データベースの所有権を個々のユーザーに変更することはサポートされています。
  • SQL 管理者または SQL ユーザーは、以下の Azure AD 操作を実行できません。
    • 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 AD サーバーレベル プリンシパル (ログイン) の借用はサポートされていません。
  • Azure AD 管理者と重複する Azure AD ログインはサポートされていません。 Azure AD 管理者は、どのログインよりも優先されます。 Azure AD アカウントが、Azure AD 管理者として、直接または管理者グループのメンバーとしてサーバーに既にアクセスしている場合、このユーザー用に作成されたログインには何も影響しません。 ログインの作成は、T-SQL によってブロックされません。 アカウントがサーバーに対して認証されると、新しく作成されたログインではなく、そのログインに、Azure AD 管理者の有効なアクセス許可が付与されます。
  • 特定のMicrosoft Azure Active Directory ログイン オブジェクトのアクセス許可を変更することはサポートされていません。
    • GRANT <PERMISSION> ON LOGIN :: <Azure AD account> TO <Any other login>
  • Azure SQL Database への既存の開いている接続を持つ Azure AD ログインに対してアクセス許可が変更された場合、アクセス許可はユーザーが再接続するまで有効にされません。 また、 認証キャッシュと TokenAndPermUserStore キャッシュもフラッシュします。 これは、 ALTER SERVER ROLE ステートメントを使用したサーバー ロールメンバーシップ の変更に適用 されます。
  • Azure AD グループにマップされている Azure AD ログインをデータベース所有者として設定することはサポートされていません。
  • Azure SQL Database サーバーロールは、Azure AD グループではサポートされません。

次のステップ