Microsoft Entra 認証を使用した SQL Server 用のリンク サーバー
適用対象: SQL Server 2022 (16.x)
リンク サーバーは、Microsoft Entra ID (旧称 Azure Active Directory) 認証で authentication を使用して構成できるようになりました。また、資格情報を提供するための 2 つのメカニズムがサポートされます。
- Password
- アクセス トークン
この記事は、2 つの SQL Server インスタンス (S1
と S2
) があることを前提としています。 どちらも Microsoft Entra 認証をサポートするように構成されており、それぞれ他方の SSL/TLS 証明書を信頼している必要があります。 この記事の例はサーバー S1
上で実行され、サーバー S2
へのリンク サーバーを作成します。
前提条件
- SQL Server 用の Microsoft Entra 認証が完全に機能していること。 詳細については、「SQL Server 用の Microsoft Entra 認証」と「チュートリアル: SQL Server 用の Microsoft Entra 認証を設定する」を参照してください。
- SQL Server Management Studio (SSMS) バージョン 18.0 以降。 または、最新の Azure Data Studio をダウンロードします。
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 ログインにマップするには、リンク サーバー ログインを作成する必要があります。
SSMS で、
S1
に接続し、[ObjectExplorer] ウィンドウで [ServerObjects] を展開します。[リンク サーバー] を右クリックし、[新しいリンク サーバー] を選択します。
リンク サーバーの詳細を入力します。
- リンク サーバー:
S2
またはリンク サーバーの名前を使用します。 - サーバーの種類:
Other data source
。 - プロバイダー:
Microsoft OLE DB Driver for SQL Server
。 - 製品名: 空のままにします。
- データ ソース: 空のままにします。
- プロバイダー文字列:
Server=<fqdn of S2>;Authentication=ActiveDirectoryPassword
。 - カタログ: 空のままにします。
- リンク サーバー:
[セキュリティ] タブをクリックします。
[追加] を選択します。
- ローカル ログイン:
S1
への接続に使用するログイン名を指定します。 - 権限借用: オフのままにします。
- リモート ユーザー: S2 への接続に使用される Microsoft Entra ユーザーのユーザー名 (
user@contoso.com
の形式)。 - リモート パスワード: Microsoft Entra ユーザーのパスワード。
- 上記の一覧で定義されていないログインの場合、接続は次のようになります:
Not be made
- ローカル ログイン:
[OK] を選択します。
アクセス トークン認証を使用したリンク サーバーの構成
アクセス トークン認証の場合、リンク サーバーはプロバイダー文字列内の AccessToken=%s
で作成されます。 リンク サーバー ログインは、S1
内の各ログインを S2
へのログイン アクセス許可が付与された Microsoft Entra アプリケーションにマップするために作成されます。 アプリケーションには、アクセス トークンを生成する場合に S1
によって使用されるシークレットが割り当てられている必要があります。 シークレットを作成するには、[Azure portal]>[Microsoft Entra ID]>[アプリの登録]>YourApplication
>[証明書とシークレット]>[新しいクライアント シークレット] の順に移動します。
SSMS で、
S1
に接続し、[ObjectExplorer] ウィンドウで [ServerObjects] を展開します。[リンク サーバー] を右クリックし、[新しいリンク サーバー] を選択します。
リンク サーバーの詳細を入力します。
- リンク サーバー:
S2
またはリンク サーバーの名前を使用します。 - サーバーの種類:
Other data source
。 - プロバイダー:
Microsoft OLE DB Driver for SQL Server
。 - 製品名: 空のままにします。
- データ ソース: 空のままにします。
- プロバイダー文字列:
Server=<fqdn of S2>;AccessToken=%s
。 - カタログ: 空のままにします。
- リンク サーバー:
[セキュリティ] タブをクリックします。
[追加] を選択します。
- ローカル ログイン:
S1
への接続に使用するログイン名を指定します。 - 権限借用: オフのままにします。
- リモート ユーザー: S2 への接続に使用される Microsoft Entra アプリケーションのクライアント ID。 アプリケーション (クライアント) ID は、Microsoft Entra アプリケーションの [概要] メニューで確認できます。
- リモート パスワード: アプリケーションの新しいクライアント シークレットを作成して取得したシークレット ID。
- 上記の一覧で定義されていないログインの場合、接続は次のようになります:
Not be made
- ローカル ログイン:
[OK] を選択します。