Microsoft Entra 認証を使用した SQL Server 用のリンク サーバー

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

リンク サーバーは、Microsoft Entra ID (旧称 Azure Active Directory) 認証で authentication を使用して構成できるようになりました。また、資格情報を提供するための 2 つのメカニズムがサポートされます。

  • Password
  • アクセス トークン

この記事は、2 つの SQL Server インスタンス (S1S2) があることを前提としています。 どちらも Microsoft Entra 認証をサポートするように構成されており、それぞれ他方の SSL/TLS 証明書を信頼している必要があります。 この記事の例はサーバー S1 上で実行され、サーバー S2 へのリンク サーバーを作成します。

前提条件

Note

S2 で使用される SSL/TLS 証明書のサブジェクト名は、provstr 属性で指定されたサーバー名と一致する必要があります。 これは、完全修飾ドメイン名 (FQDN) または S2ホスト名のいずれかとする必要があります。

Microsoft Entra 認証用のリンク サーバーの構成

パスワード認証を使用した場合、および Azure アプリケーション シークレットまたはアクセス トークンを使用した場合のリンク サーバーの構成について説明します。

パスワード認証を使用したリンク サーバーの構成

Note

Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI フィールド、接続プロバイダー、エラー コード、コマンドレットなど、ハードコーディングされた一部の要素でAzure AD が残ります。 この記事では、この 2 つの名称は置き換え可能です。

パスワード認証の場合、プロバイダー文字列Authentication=ActiveDirectoryPassword を使用すると、Microsoft Entra パスワード認証を使用するようにリンク サーバーに通知されます。 S1 上の各ログインを S2 上の Microsoft Entra ログインにマップするには、リンク サーバー ログインを作成する必要があります。

  1. SSMS で、S1 に接続し、[ObjectExplorer] ウィンドウで [ServerObjects] を展開します。

  2. [リンク サーバー] を右クリックし、[新しいリンク サーバー] を選択します。

  3. リンク サーバーの詳細を入力します。

    • リンク サーバー: S2 またはリンク サーバーの名前を使用します。
    • サーバーの種類: Other data source
    • プロバイダー: Microsoft OLE DB Driver for SQL Server
    • 製品名: 空のままにします。
    • データ ソース: 空のままにします。
    • プロバイダー文字列: Server=<fqdn of S2>;Authentication=ActiveDirectoryPassword
    • カタログ: 空のままにします。

    Screenshot of creating linked server with password authentication

  4. [セキュリティ] タブをクリックします。

  5. [追加] を選択します。

    • ローカル ログイン: S1 への接続に使用するログイン名を指定します。
    • 権限借用: オフのままにします。
    • リモート ユーザー: S2 への接続に使用される Microsoft Entra ユーザーのユーザー名 (user@contoso.com の形式)。
    • リモート パスワード: Microsoft Entra ユーザーのパスワード。
    • 上記の一覧で定義されていないログインの場合、接続は次のようになります: Not be made
  6. [OK] を選択します。

    Screenshot of setting security for linked server

アクセス トークン認証を使用したリンク サーバーの構成

アクセス トークン認証の場合、リンク サーバーはプロバイダー文字列内の AccessToken=%s で作成されます。 リンク サーバー ログインは、S1 内の各ログインを S2 へのログイン アクセス許可が付与された Microsoft Entra アプリケーションにマップするために作成されます。 アプリケーションには、アクセス トークンを生成する場合に S1 によって使用されるシークレットが割り当てられている必要があります。 シークレットを作成するには、[Azure portal]>[Microsoft Entra ID]>[アプリの登録]>YourApplication>[証明書とシークレット]>[新しいクライアント シークレット] の順に移動します。

Screenshot of creating a new client secret for an application in the Azure portal

  1. SSMS で、S1 に接続し、[ObjectExplorer] ウィンドウで [ServerObjects] を展開します。

  2. [リンク サーバー] を右クリックし、[新しいリンク サーバー] を選択します。

  3. リンク サーバーの詳細を入力します。

    • リンク サーバー: S2 またはリンク サーバーの名前を使用します。
    • サーバーの種類: Other data source
    • プロバイダー: Microsoft OLE DB Driver for SQL Server
    • 製品名: 空のままにします。
    • データ ソース: 空のままにします。
    • プロバイダー文字列: Server=<fqdn of S2>;AccessToken=%s
    • カタログ: 空のままにします。

    Screenshot of creating linked server with access token authentication

  4. [セキュリティ] タブをクリックします。

  5. [追加] を選択します。

    • ローカル ログイン: S1 への接続に使用するログイン名を指定します。
    • 権限借用: オフのままにします。
    • リモート ユーザー: S2 への接続に使用される Microsoft Entra アプリケーションのクライアント IDアプリケーション (クライアント) ID は、Microsoft Entra アプリケーションの [概要] メニューで確認できます。
    • リモート パスワード: アプリケーションの新しいクライアント シークレットを作成して取得したシークレット ID
    • 上記の一覧で定義されていないログインの場合、接続は次のようになります: Not be made
  6. [OK] を選択します。

関連項目