Azure Active Directory 認証を使用する

適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Azure Active Directory (Azure AD) 認証は、Azure AD の ID を使用して Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics の Synapse SQL に接続するメカニズムです。

注意

この記事は、Azure SQL Database、SQL Managed Instance、Azure Synapse Analytics に当てはまります。

Azure AD 認証を使用すると、データベース ユーザーの ID や他の Microsoft サービスを一元管理できます。 ID の一元管理では、1 か所でデータベース ユーザーを管理できるようになるため、アクセス許可の管理が容易になります。 次のような利点があります。

  • SQL Server 認証の代替方法が用意されています。

  • サーバー全体でユーザー ID が急増するのを防ぐために役立ちます。

  • 1 か所でのパスワードのローテーションを許可します。

  • 顧客は外部の (Azure AD) グループを使用してデータベースのアクセス許可を管理できます。

  • 統合 Windows 認証や、Azure Active Directory でサポートされる他の認証形式を有効にすることで、パスワードが保存されないようにすることができます。

  • Azure AD 認証では、包含データベース ユーザーを使用して、データベース レベルで ID を認証します。

  • Azure AD は、SQL Database と SQL Managed Instance に接続するアプリケーション向けにトークンベース認証をサポートしています。

  • Azure AD 認証のサポート対象:

    • Azure AD クラウド専用 ID。
    • 以下をサポートする Azure AD ハイブリッド ID:
      • シームレス シングル サインオン (SSO) と 2 つのオプション (パススルー 認証と パスワード ハッシュ 認証) を組み合わせたクラウド認証。
      • フェデレーション認証。
    • Azure AD の認証方法と、どれを選択すべきかに関する詳細については、次の記事を参照してください。
  • Azure AD 認証は、Multi-Factor Authentication を含む Active Directory ユニバーサル認証を使用する SQL Server Management Studio からの接続をサポートします。 Multi-Factor Authentication には、電話、テキスト メッセージ、スマート カードと PIN、モバイル アプリ通知など、簡単な確認オプションによる強力な認証が含まれています。 詳細については、Azure SQL Database、SQL Managed Instance、Azure Synapse での Azure Multi-Factor Authentication 対応の SSMS サポートに関するページを参照してください

  • Azure AD は、Active Directory 対話型認証を使用する SQL Server Data Tools (SSDT) からの同様の接続をサポートしています。 詳細については、「SQL Server Data Tools (SSDT) での Azure Active Directory のサポート」を参照してください。

注意

Azure Active Directory アカウントを使用した Azure 仮想マシン (VM) 上で実行されている SQL Server インスタンスへの接続はサポートされていません。 代わりにドメインの Active Directory アカウントを使用してください。

構成の手順には、Azure Active Directory 認証を構成して使用する次の手順が含まれます。

  1. Azure AD を作成して設定します。
  2. 省略可能:Active Directory を関連付けるか、現在 Azure サブスクリプションに関連付けられている Active Directory を変更します。
  3. Azure Active Directory 管理者を作成します。
  4. クライアント コンピューターを構成します。
  5. Azure AD の ID にマップされている包含データベース ユーザーをデータベースに作成します。
  6. Azure AD の ID を使用してデータベースに接続します。

注意

Azure AD を作成して設定した後、Azure SQL Database、SQL Managed Instance、Azure Synapse Analytics の Synapse SQL で Azure AD を構成する方法については、Azure SQL Database での Azure AD の構成に関するページを参照してください。

信頼のアーキテクチャ

  • Azure AD のネイティブ ユーザー パスワードをサポートする場合は、Azure AD、SQL Database、SQL Managed Instance、Azure Synapse のクラウドの部分のみを考慮します。
  • Windows シングル サインオン資格情報 (または Windows 資格情報のユーザーとパスワード) をサポートするには、パススルー認証とパスワード ハッシュ認証のためのシームレスなシングル サインオン用に構成されたフェデレーション ドメインまたはマネージド ドメインから得られる Azure Active Directory 資格情報を使用します。 詳しくは、「Azure Active Directory シームレス シングル サインオン」をご覧ください。
  • フェデレーション認証 (または Windows 資格情報のユーザー/パスワード) をサポートするには、ADFS ブロックとの通信が必要です。

Azure AD ハイブリッド ID、セットアップ、および同期に関する詳細については、次の記事を参照してください。

ADFS インフラストラクチャ (または Windows 資格情報のユーザーとパスワード) を使用したサンプルのフェデレーション認証については、以下の図を参照してください。 矢印は通信経路を示します。

aad auth diagram

次の図は、クライアントがトークンの送信によってデータベースへの接続を許可される、フェデレーション、信頼、およびホスティングの関係を示しています。 トークンは、Azure AD によって認証され、データベースによって信頼されます。 顧客 1 は、Azure Active Directory とネイティブ ユーザーまたは Azure AD とフェデレーション ユーザーを表します。 顧客 2 は、インポートされたユーザーなどの可能性のあるソリューションを表します。この例では、Azure Active Directory および Azure Active Directory と同期された ADFS です。 重要なのは、Azure AD 認証を使用してデータベースにアクセスするには、ホストしているサブスクリプションを Azure AD に関連付ける必要があることを理解することです。 同じサブスクリプションを使用して、Azure SQL Database、SQL Managed Instance、または Azure Synapse リソースを作成する必要があります。

サブスクリプションの関係性

管理者の構造

Azure AD 認証を使用する場合、元の Azure SQL Server 管理者と Azure AD 管理者の 2 つのサーバー管理者アカウントがあります。 同じ概念が Azure Synapse に適用されます。 ユーザー データベースに最初の Azure AD 包含データベース ユーザーを作成できるのは、Azure AD アカウントに基づく管理者のみです。 Azure AD の管理者ログインには、Azure AD ユーザーまたは Azure AD グループを使用できます。 管理者がグループ アカウントの場合は、サーバー用に複数の Azure AD 管理者を有効にすることで、すべてのグループ メンバーがそのアカウントを使用できます。 グループ アカウントを管理者として使用すると、SQL Database または Azure Synapse でユーザーまたはアクセス許可を変更することなく Azure AD でグループ メンバーを一元的に追加および削除できるため、より管理しやすくなります。 いつでも構成できる Azure AD 管理者 (ユーザーまたはグループ) は 1 つだけです。

admin structure

アクセス許可

新しいユーザーを作成するには、データベースにおける ALTER ANY USER アクセス許可が必要です。 ALTER ANY USER アクセス許可は、任意のデータベース ユーザーに付与できます。 ALTER ANY USER アクセス許可は、サーバーの管理者アカウント、そのデータベースの CONTROL ON DATABASEまたは ALTER ON DATABASE アクセス許可を持つデータベース ユーザー、db_owner データベース ロールのメンバーも保持しています。

Azure SQL Database、SQL Managed Instance、または Azure Synapse に包含データベース ユーザーを作成するには、Azure AD ID を使用してデータベースまたはインスタンスに接続する必要があります。 最初の包含データベース ユーザーを作成するには、(データベースの所有者である) Azure AD 管理者を使用してデータベースに接続する必要があります。 これは、SQL Database または Azure Synapse で Azure Active Directory 認証を構成して管理する方法に関するページで説明されています。 Azure SQL Database、SQL Managed Instance、または Azure Synapse に対して Azure AD 管理者が作成された場合にのみ、任意の Azure AD 認証が可能です。 Azure Active Directory 管理者がサーバーから削除された場合、SQL Server 内に以前に作成された既存の Azure Active Directory ユーザーは、Azure Active Directory 資格情報を使用してもデータベースにアクセスできなくなります。

Azure AD の機能と制限事項

  • Azure AD の次のメンバーを Azure SQL Database にプロビジョニングできます。

  • db_owner サーバー ロールを持つグループに含まれている Azure AD ユーザーは、Azure SQL Database と Azure Synapse に対して CREATE DATABASE SCOPED CREDENTIAL 構文を使用できません。 次のエラーが表示されます。

    SQL Error [2760] [S0001]: The specified schema name 'user@mydomain.com' either does not exist or you do not have permission to use it.

    CREATE DATABASE SCOPED CREDENTIAL の問題を軽減するには、db_owner ロールを個々の Azure AD ユーザーに直接付与します。

  • Azure AD プリンシパル下で実行された場合、以下のシステム関数は NULL 値を返します。

    • SUSER_ID()
    • SUSER_NAME(<admin ID>)
    • SUSER_SNAME(<admin SID>)
    • SUSER_ID(<admin name>)
    • SUSER_SID(<admin name>)

SQL Managed Instance

  • Azure AD のサーバー プリンシパル (ログイン) とユーザーは、SQL Managed Instance でサポートされています。
  • Azure AD グループにマップされた Azure AD サーバー プリンシパル (ログイン) をデータベース所有者として設定することは、SQL Managed Instance ではサポートされていません。
    • この拡張機能により、グループが dbcreator サーバー ロールの一部として追加されたときに、このグループのユーザーが SQL Managed Instance に接続して新しいデータベースを作成できますが、データベースにアクセスすることはできません。 これは、新しいデータベース所有者が SA であり、Azure AD ユーザーではないためです。 この問題は、dbcreator サーバー ロールに個々のユーザーが追加された場合は発生しません。
  • SQL Agent の管理とジョブの実行が、Azure AD サーバー プリンシパル (ログイン) に対してサポートされています。
  • データベースのバックアップと復元操作は、Azure AD サーバー プリンシパル (ログイン) が実行できます。
  • Azure AD サーバー プリンシパル (ログイン) と認証イベントに関連するすべてのステートメントの監査がサポートされています。
  • sysadmin サーバー ロールのメンバーである Azure AD サーバー プリンシパル (ログイン) の専用管理者接続がサポートされています。
    • sqlcmd ユーティリティおよび SQL Server Management Studio 経由でサポートされています。
  • Azure AD サーバー プリンシパル (ログイン) によるログオン イベントでは、ログオン トリガーがサポートされています。
  • Service Broker とデータベース メールは、Azure AD サーバー プリンシパル (ログイン) を使用して設定できます。

Azure AD の ID を使用して接続する

Azure Active Directory 認証では、Azure AD の ID を使用してデータベースに接続する次の方法がサポートされています。

  • Azure Active Directory パスワード
  • Azure Active Directory 統合
  • Multi-Factor Authentication で汎用の Azure Active Directory
  • アプリケーション トークン認証を使用する

Azure AD サーバー プリンシパル (ログイン) では、次の認証方法がサポートされています。

  • Azure Active Directory パスワード
  • Azure Active Directory 統合
  • Multi-Factor Authentication で汎用の Azure Active Directory

その他の注意点

  • さらに管理しやすくするには、管理者として専用の Azure AD グループをプロビジョニングすることをお勧めします。
  • SQL Database または Azure Synapse のサーバー用にいつでも構成できる Azure AD 管理者 (ユーザーまたはグループ) は 1 つだけです。
    • SQL Managed Instance 用の Azure AD サーバー プリンシパル (ログイン) の追加により、sysadmin ロールに追加できる複数の Azure AD サーバー プリンシパル (ログイン) を作成できる可能性があります。
  • Azure Active Directory アカウントを使用して最初に サーバーまたはマネージド インスタンスに接続できるのは、サーバーの Azure AD 管理者だけです。 Active Directory 管理者は、それ以降の Azure AD のデータベース ユーザーを構成できます。
  • 2048 を超える Azure AD のセキュリティ グループに属する Azure AD のユーザーとサービス プリンシパル (Azure AD アプリケーション) は、SQL Database、Managed Instance、または Azure Synapse でデータベースにログインすることはできません。
  • 接続のタイムアウトを 30 秒に設定することをお勧めします。
  • SQL Server 2016 Management Studio と SQL Server Data Tools for Visual Studio 2015 (バージョン 14.0.60311.1April 2016 以降) では、Azure Active Directory 認証がサポートされています (Azure AD 認証は、 .NET Framework Data Provider for SqlServer (.NET Framework 4.6 以降のバージョン) でサポートされています)。 したがって、これらのツールとデータ層アプリケーション (DAC および BACPAC) の最新のバージョンでは、Azure AD 認証を使用できます。
  • バージョン 15.0.1 以降では、sqlcmd ユーティリティbcp ユーティリティは Multi-Factor Authentication を使用した Active Directory 対話型認証をサポートしています。
  • SQL Server Data Tools for Visual Studio 2015 には、April 2016 バージョン以降の Data Tools (バージョン 14.0.60311.1) が必要です。 現在、Azure AD ユーザーは SSDT のオブジェクト エクスプローラーに表示されません。 回避策として、ユーザーを sys.database_principals で表示してください。
  • Microsoft JDBC Driver 6.0 for SQL Server は、Azure AD 認証をサポートしています。 「 接続プロパティの設定」もご覧ください。
  • PolyBase では Azure AD 認証を使用した認証は行えません。
  • Azure SQL Database と Azure Synapse 向けの Azure AD 認証は、Azure Portal の [データベースのインポート] ブレードと [データベースのエクスポート] ブレードによりサポートされています。 Azure AD 認証を使用したインポートとエクスポートは、PowerShell コマンドでもサポートされています。
  • Azure AD 認証は、CLI を使用することによって、SQL Database、SQL Managed Instance、Azure Synapse でサポートされます。 詳細については、SQL Database または Azure Synapse で Azure AD 認証を構成して管理する方法に関するページと「SQL Server - az sql server」を参照してください。

次のステップ