イタリアに拠点を置くリンクサーバーserver_italia
があり、米国のオレゴンに拠点を置くサーバーに接続していますORDB1
私たちは別ですが 信頼できるドメイン です。
server_italia
からORDB1
への接続は、ORDB1
へのログインと必要な権限を持つSQLサーバーアカウントを使用して、リンクサーバーを介して行われます。
私は私のドメインのsysadmin
でさえdomain admin
であり、私のserver_italia
ですが、ORDB1
のsqlサーバー内ではsysadmin
しかありません。
同様の質問があります:
Windows認証を使用してリンクサーバーを機能させるにはどうすればよいですか?
ただし、the
の回答は提供されません。
これが私のリンクサーバーです:
server_italia
で次のクエリを実行すると、次の結果が得られます。
SELECT [the_server]=@@servername,
auth_scheme
FROM sys.dm_exec_connections WHERE session_id = @@spid ;
SELECT net_transport, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
オレゴンで私はこれを手に入れます:
私のアメリカ人の同僚が得る場合:
Kerberos認証をセットアップする サーバー上
資格情報を渡すことができるように 制約付き委任 を構成します。そうしないと、 double-hop の問題が発生する可能性があります。 – John Eisbrener によってコメントに追加されました
linked server
なしでsql server account login impersonation
を使用できますか?
これが解決されたかどうかはわかりませんが、最近、委任を実行するための要件を独自に(再)発見した後、他の人があなたの投稿に遭遇した場合に、少なくとも回答を提供できると考えました同様の質問。
私の投稿を明確にするために(特に、投稿を読んでいて質問を読んでいない人に)、委任とは、仲介サービスがクライアントの資格情報をクライアントに代わってセカンダリサービスに引き渡す機能です。次のように視覚的に表現します。
この場合、サーバーAはクライアント資格情報をセカンダリサービスに渡す中間サービスサーバーBです。あなたの場合、server_italia
は中間サーバーと見なされ、ORDB1
はセカンダリサービスになります。
Active Directory(AD)機能レベル
何よりもまず、 ドメインの機能レベル は、利用可能なオプションを大きく決定します。機能レベルがWindows 2012より前のいずれかのバージョンである場合、ドメイン間の委任は制約のない委任のみに制限されます。 2012年より前は、 制約付き委任は単一ドメイン内のみに限定されており、 クロスドメイン機能はありませんでした。
2012機能レベル以降を実行している場合は、追加のオプションがあるため、管理やアクセス制御などの設定によって異なります。2012機能レベルでは、制約のない委任を介してドメイン間で資格情報を委任する機能が開きます。 、 Traditional Constrained Delegation 、または Resource-Based Constrained Delegation 。私の残りの回答では、あなたが2012+機能レベルを使用していることを前提としていますが、そうでない場合、機能レベルに関係なく、制約なしの委任の構成手順は同じです。
一般的な要件
選択する委任のタイプに関係なく(すべてのオプションは以下にリストされます)、すべての構成では、「中間」サービスを実行するために使用する account の次の基本設定が必要です(例- 上の図ではサーバーAですが、これはデータベース、IISでホストされているWebサイト、SSIS、.NETアプリなどの中間サービスに適用できます。ドメインで、資格情報を他のサービスに委任するサービスを実行するアカウントには、次のADプロパティを設定する必要があります。
EURO
フォレストのCONTOSO
ドメインにいると想定):MSSQLSvc/server_italia.euro.contoso.com、MSSQLSvc/server_italia.euro .contoso.com:1433注:前述のプロパティは、さまざまな方法で表示および設定できます。 Active Direcotory Users and Computers MMC Snapinは、これらのプロパティを調整するために使用できる最も一般的なグラフィカルユーザーインターフェイスですが、このインターフェイスは、これらのプロパティの多くを難読化しますグループ管理サービスアカウントの管理に関しては total garbage です。その結果、 ActiveDirectory PowerShell モジュールを使用して、 Set-ADUser
または Set-ADServiceAccount
コマンドを使用してこれらのプロパティを明示的に指定します。さらに、ユーザー/サービスアカウントのプロパティを Get-ADUser
または Get-ADServiceAccount
コマンド。
さらに、すべてのSQL ServerにはSPNが登録されている必要があります。 手動でこれらを作成できます 。ただし、SQL Serverを実行しているサービスアカウントを適切なOUにネストすると、自己登録されたSPNが自動的に発生します。そのプロセスに関する説明は、 ここにあります です。
委任の種類
繰り返しになりますが、2012以降のAD機能レベルを使用している場合、クロスドメインの委任を実行するための3つのオプションがあります。私はそれらを最も簡単に設定/最も安全ではない方法から最も苛立たしい設定/最も安全な方法にリストします。これらはどれでも機能し、どの程度の管理/セキュリティの露出を処理したいかは完全にあなた次第です。
ここでのもう1つのヒントは、以下にリストされている複数またはすべてのタイプの委任を使用するようにアカウントを構成することを妨げるものがないことです。これらの構成は相互に排他的ではありません。ただし、最初に最も安全性の低い構成を使用する可能性があるため、複数の委任スキームの下でアカウントをセットアップしないように最善を尽くす必要があります(アカウントのセットアップ方法の決定に関するセクションは以下にあります)。
制約のない委任
制約のない委任は、セットアップが最も簡単な構成ですが、最も制限の少ないアプローチです。この構成により、サーバーAを実行しているサービスアカウントが任意の資格情報を任意のセカンダリサービスに委任できるようになります。これは、上の画像で視覚的に表されており、資格情報を委任できる受信クライアント接続またはセカンダリサービスに制限がないことを青い矢印で示しています。 中間アカウントでこのタイプの委任を構成するには、(上記に加えて)次のADプロパティを設定するだけです。
True
に設定しますこれまではこれですべてでしたが、 2019年7月のWindowsセキュリティパッチ では、そのリンクで説明されているように、信頼全体で委任を再度有効にする必要があります。このセキュリティパッチは、このセットアップの深刻な欠点に対処するために実際に設計されました。これは、この投稿 Hunting in Active Directory:Unconstrained Delegation&Forests Trusts で詳しく説明されています。繰り返しになりますが、2012年より前のAD機能レベルを使用していない限り、このタイプの委任を使用することはお勧めしません。
従来の制約付き委任
従来の制約付き委任サーバーAがアクセス許可を委任できるサービスを制限する。これにより、サーバーAを実行するサービスアカウントは、明示的にリストされているサービスに資格情報を委任することのみが許可されます。たとえば、それでも誰の資格情報も委任できますが、明示的にリストされているサービスにのみ、その資格情報を渡すことができます。視覚的に言えば、黄色の矢印で示されているように、委任できる「宛先」を制限しています。
中間アカウントで構成する必要があるADプロパティ(上記の一般的な要件セクションに記載されているものに加えて)は次のとおりです。
ORDB1
サーバーがUSA
にあると仮定してCONTOSO
フォレストのドメイン)。この構成では、委任をAD KERBEROS
トークンのみに制限します。 非委任したい場合KERBEROS
credentialsNTLM
を介して渡されるものなど、委任するようにこのアカウントを設定できますANY
プロトコルでは、次のプロパティも設定します。
True
に設定しますただし、ANY
プロトコル構成の使用は本質的に危険です。 このブログ記事 では、これらのプロパティとその影響について詳しく説明しています。これをtrueに設定する必要がない限り、使用しないことをお勧めします。
個人的な見地からは、セットアップが簡単で比較的安全であるため、従来の制約付き委任を使用することがよくあります(ANY
プロトコルに委任を使用することを決定しない限り、問題に備えて設定していると思います)。
リソースベースの制約付き委任
リソースベースの制約付き委任セカンダリサービスが委任された資格情報を許可する中間サービスを制限します。これは、以前の構成のようにサーバーAを構成する代わりに、委任された資格情報を信頼するサービスを一覧表示してサーバーBを構成するという点で、他の構成と少し異なります。これは、サーバーAを実行する中間アカウントに追加の変更を加える必要なく実行されます。したがって、このシナリオでは、サーバーAがボブの資格情報を渡そうとすると、サーバーBはサーバーAがアクセス許可を委任できる「信頼できる」サービスであることを識別します認証は問題なく行われます。視覚的に表現すると、次のようになります。
ここで完全に明確にするために、中間アカウント(サーバーAなど)では、上記のCommon Requirementsセクションのプロパティを構成する必要があります。さらに、宛先サービス(つまりServer A)では、追加のADプロパティを設定する必要があります。
それだけです...概念的に。これを確かめるためにテストしてください、しかし私がこのアプローチを概説しているのを見つけた記事から、これは本当に必要なすべてです。実際、この MS記事 はプロセスを実行し、これを設定するために必要な該当するPowerShellコマンドをリストアップします。これにより、サンプルのPowerShellプログラムを実行して、ダブルホップとそのリソースベースの制約付き委任が役立ちます。さらに、この委任構成は問題なく(または私が読んだことから信頼の要件として)ドメインを越えて機能するはずです。ここでの欠点は、すべての「エンドポイント」を構成する必要があることです。これは、セットアップの方法に応じて、長期的にはより多くの管理作業になる可能性があります。
どのように構成された委任設定を知っていますか?
私の意見では、アカウントが実行されている委任構成を特定することは、約 clear as mud です。ありがたいことに、 Willem Kasdorpが記事 と PowerShellスクリプト を投稿して、アカウントの現在の構成を示しています。 ActiveDirectory PowerShell モジュールがインストールされているコンピューターからこれを実行する場合は、問題ありません。うまくいけば、上記で説明した委任構成のタイプとこのスクリプトが生成するマトリックスの組み合わせにより、現在構成されている内容が明確にわかるようになります。
最後に、AD PowerShellコマンドのヘルプが必要な場合、 this article は、SPNのリストなどで説明したプロパティのいくつかを設定するときに、適切な構文を表示するのに十分な仕事をします。 。
ご不明な点がございましたら、コメントをお寄せください。迅速に回答できるよう最善を尽くします。