SQL Serverのアクセス許可でADセキュリティグループを更新する方法


12

Small Business Server 2003でSql Server 2008を使用しています。クライアントはWinXPを使用しています。

Active Directoryセキュリティグループにユーザーを追加しました。このユーザーがすぐにデータベースにアクセスできないのはなぜですか?ユーザーがSql Serverで認識されるまでに遅延があるようです。

権限にADセキュリティグループを明示的に使用しているため、SQL Serverに個々のユーザーを追加する必要はありません。事実上、アクセスを許可するためにユーザーをADセキュリティグループに追加する以外に何もする必要はありません。

しかし、何らかの理由で、SQL Serverは追加をすぐには認識しません。私はこれを何度も見ました。ユーザーをグループに追加しましたが、そのユーザーは翌日までデータにアクセスできません。Active Directoryをリアルタイムで照会しないようです。そうだと確認できますか?

Sql ServerがActive Directoryからユーザーのリストを「更新」するために何をする必要がありますか?


SQL Server 2008 Management Studioで、セキュリティグループを使用してサーバーログインを追加し、データベースにそのログインにマップされたユーザーを作成しました。それはうまくいきます!
-D_Bester

ただし、新しいユーザーをセキュリティグループに追加した後、指定されたデータベースにアクセスできませんでした。そのユーザーは別のグループを使用してサーバーにアクセスできるため、SQL Serverへの接続をテストするだけで十分に機能しました。ユーザーの(彼女のコンピューター上の)Sql Serverへの接続を追加していました。データベースを指定したときに、データベースが利用できないと言っていました。
D_Bester

さまざまなドメインコントローラーのスポットチェックレプリケーションは実際に15分後に終了しますが、SQLはADグループへの新しいユーザーを無視します。SQLサーバーを再起動すると問題が解決し、24時間待機します。より良い方法でなければなりません。
アーロンAuseth

回答:


12

ユーザーは、ワークステーションからログオフして再度ログオンする必要があります。そのため、変更は翌日から有効になるようです。この理由は、ユーザーが翌日にログオンするときに、ドメインコントローラーから新しいトークンを取得し、このトークンには、メンバーであるドメイングループのリストが含まれているためです。ドメイングループのリストを含むこのトークンは、ユーザーがコンピューターにログインするときにのみ更新されるため、ユーザーが一度もログアウトしない場合、トークンは更新されません。

また、ドメインコントローラーが異なる物理的な場所にある場合に考慮する必要があるマルチサイトドメインレプリケーションの遅延もあります。


1
ユーザーが新しいドメイングループのメンバーであることを「認識」して遅延を回避できるように、ワークステーションで実行できるADトークンを「更新」するコマンドまたはスクリプトはありますか?--update:一人がお勧めと思われるklist purgedba.stackexchange.com/a/44922/29371が、それは、ユーザが再構築/に再接続-しなければならない他のキャッシュされたリソースのアクセサを壊す可能性があることを警告しています。
NateJ

@mrdennyサービスアカウントでこれを処理する方法に関する推奨事項はありますか?すべてのSQLインスタンスをサービスアカウントで実行し、これらのサービスアカウントをSQL Server間の接続やSSRSなどに使用します。いつでも、マシン間に多くの接続があります。すべての接続を実際に切断して、どこかで新しいログインを行って新しいADグループ情報を取得することはできません。
SomeGuy

サービスアカウントの場合、できることはすべて、新しい権限を必要とするマシンでサービスを再起動することです。
mrdenny

5

ユーザーがログオンすると、グループメンバーシップに関するすべての情報を含むセキュリティトークンが割り当てられます。

このトークンは、その間にADのグループメンバーシップに変更を加えた場合でも、ユーザーがログオフするまで(その時点で破棄されます)存続します。変更は、ユーザーが次回ログオンして新しいセキュリティトークンを受け取ったときにのみ有効になります。

たとえば、ファイルシステムにアクセス許可を割り当てるときに同じシナリオを再現できます。SQL Serverの動作ではなく、ADの動作です。


1

したがって、すぐに結果が得られるのは、次のようなcmd / scriptを実行して、毎回新しい資格情報を取得することです。

runas /netonly /user:domain\username "sqlcmd -S serverName -d dbname -q \"insert into testpermissions values (65)\""

cmd.exeを使用して(Powershellではなく、引用符を正しく取得できませんでした)。

そうすれば、毎回新しいトークンを取得できます(ただし、pwdを入力する必要があります)。面倒すぎる場合は、保存されたパスワードテキストでも何かを行うことができます。

とにかく、私のために働くと私はそれが他の誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.