SQL Server 向け Microsoft Entra 認証

適用対象: SQL Server 2022 (16.x)

SQL Server 2022 (16.x)は、Windows および Linux の両方をオンプレミス、ならびに Azure Windows VM 上の SQL Server に Microsoft Entra ID(旧称 Azure Active Directory)による認証のサポートを導入しています。

概要

次の Microsoft Entra の認証方法を使用して、SQL Server に接続できるようになりました。

  • 既定の認証
  • ユーザー名とパスワード
  • 統合
  • 多要素認証を使用した Universal
  • サービス プリンシパル
  • マネージド ID
  • アクセス トークン

既存の認証モード (SQL 認証や Windows 認証) は、変更されません。

Microsoft Entra ID は、Azure のクラウドベースの ID およびアクセス管理サービスです。 Microsoft Entra ID は概念的には Active Directory に似ており、組織のリソースへのアクセスを管理するための一元化されたリポジトリを提供します。 ID は、ユーザー、グループ、またはアプリケーションを表す Microsoft Entra ID のオブジェクトです。 ロールベースのアクセス制御を使用してアクセス許可を割り当て、Azure リソースへの認証に使用できます。 Microsoft Entra 認証は次の事項にサポートされています。

  • Azure SQL データベース
  • Azure SQL Managed Instance
  • Windows Azure VM 上の SQL Server
  • Azure Synapse Analytics
  • SQL Server

詳細については、「Azure SQL で Microsoft Entra 認証を使用する」および「Azure SQL での Azure AD 認証を構成して管理する」を参照してください。

Windows Server Active Directory が Microsoft Entra ID とフェデレーションされている場合、ユーザーは Windows の資格情報を Windows ログインまたは Microsoft Entra ログインとして使用して、SQL Server についての認証を行うことができます。 ただし、Microsoft Entra ID は、サービス アカウントや複合ネットワーク フォレスト アーキテクチャなど、Windows Server Active Directory でサポートされている AD 機能をすべてサポートしていません。 Microsoft Entra ID には、Active Directory で利用できない多要素認証など、その他の機能があります。 詳細については、「Microsoft Entra ID と Active Directory の比較」を参照してください。

Microsoft Entra ID を使用して SQL Server をAzure に接続する

SQL Server が Azure と通信するには、SQL Server と SQL Server が実行される Windows または Linux ホストの両方が Azure Arc に登録されている必要があります。SQL Server と Azure との通信を有効にするには、Azure Arc エージェントおよび SQL Server の Azure 拡張機能をインストールする必要があります。

詳細については、「SQL Server を Azure Arc に接続する」を参照してください。

Note

Azure VM で SQL Server を実行している場合は、VM を Azure Arc に登録する必要はありません。代わりに、VM を SQL IaaS Agent 拡張機能に登録する必要があります。 VM が登録されたら、「Azure VM 上の SQL Server に対する Azure AD 認証を有効にする」で詳細を確認してください。

既定の認証

マネージド ID、Visual Studio、Visual Studio Code、Azure CLI などのパスワードレスの非対話型メカニズムを通じて認証を実現するMicrosoft Entra ID のデフォルト認証オプション。

ユーザー名とパスワード

クライアントおよびドライバーにユーザー名およびパスワードを指定できるようにします。 ユーザー名およびパスワードの方法は、セキュリティ上の理由により、多くのテナントでは一般的に無効になっています。 接続は暗号化されますが、ネットワーク経由でパスワードを送信する必要があるため、可能な限りユーザー名およびパスワードを使用しないことがベスト プラクティス/お勧めします。

統合

統合 Windows 認証 (IWA) を使用すると、Microsoft Entra ID により、オンプレミスとクラウドの両方のインフラストラクチャを持つ組織にソリューションが提供されます。 オンプレミスの Active Directory はフェデレーションを通して Microsoft Entra ID と同期できるため、ユーザー認証はオンプレミスのまま、管理とアクセス制御を Microsoft Entra ID 内で処理できます。 IWA を使用すると、ユーザーの Windows 資格情報が Active Directory に対して認証され、成功すると、Microsoft Entra ID からのユーザーの認証トークンが SQL に返されます。

多要素認証を使用した Universal

これは、Microsoft Entra アカウントの多要素認証オプションを使用した標準的な対話型の方法です。 ほとんどのシナリオで機能します。

サービス プリンシパル

サービス プリンシパルは、自動化されたツール、ジョブ、アプリケーションで使用するために作成できる ID です。 サービス プリンシパル認証方法を使用すると、サービス プリンシパル ID のクライアント ID とシークレットを使用して SQL Server インスタンスに接続できます。

マネージド ID

マネージド ID は特別な形式のサービス プリンシパルです。 マネージド ID には、システム割り当てとユーザー割り当ての 2 種類があります。 システム割り当てマネージド ID は Azure リソースで直接有効になりますが、ユーザー割り当てマネージド ID は、1 つ以上の Azure リソースに割り当てることができるスタンドアロン リソースです。

Note

マネージド ID を使用して、SSMS や ADS などの GUI クライアントを介して SQL リソースに接続するには、クライアント アプリケーションを実行するマシンに、ID の証明書が格納された状態で実行されている Microsoft Entra クライアントが必要です。 これは、VM のポータル ペインを使用して ID をマシンに簡単に割り当てることができるので、Azure VM を介して最も一般的に実現されます。

SQL Server Management Studio(SSMS)などの Azure ID ライブラリを使用するツールには、マネージド ID で接続する場合、ログインに GUID を使用する(abcd1234-abcd-1234-abcd-abcd1234abcd1234 など)必要があります。 詳細については、(ManagedIdentityCredential)を参照してください。 ユーザー名を誤って渡すと、次のようなエラーが発生します。

ManagedIdentityCredential authentication unavailable. The requested identity has not been assigned to this resource.
Status: 400 (Bad Request)
Content:
{"error":"invalid_request","error_description":"Identity not found"}

アクセス トークン

Invoke-sqlcmd など、一部の GUI 以外のクライアントでアクセス トークンを指定できます。 アクセス トークンのスコープまたは対象ユーザーは https://database.windows.net/ である必要があります。

解説

  • Microsoft Entra 認証では、サポートされている Windows または Linux オペレーティング システムを搭載したオンプレミスの SQL Server 2022 (16.x)、または Windows Azure VM 上の SQL Server 2022 のみがサポートされます。
  • SQL Server を Azure Arc に接続するには、Microsoft Entra アカウントに次のアクセス許可が必要です。
    • リソース グループの "Azure Connected Machine のオンボード" または "共同作成者" ロールのメンバー。
    • リソース グループの "Azure Connected Machine のリソース管理者" ロールのメンバー。
    • リソース グループの "閲覧者" ロールのメンバー。