ユーザーがドメイン グループ経由でアクセスを許可された場合、SQL Server データベース アクセスが失敗する

ユーザーがドメイン グループ経由でアクセスを許可された場合、SQL Server データベース アクセスが失敗する

SQL Server 2008 R2 (Win2003 で実行) では、ドメイン グループ経由のログインに問題が発生します。サーバー インスタンスへのログイン アクセスは許可されますが、サーバー上の特定のデータベースにアクセスできません。

SQL サーバー マシンは AD ドメインのメンバーですが、ドメイン コントローラーではありません。SQL サーバーでは Windows 認証を使用しています。

ドメイン グループ用の SQL Server ログインを作成します。そのサーバー上のデータベース XXX へのユーザー マッピングを設定し、datareader、datawriter、および ddladmin ロールを有効にします。すると、これらのグループのメンバーであるドメイン ユーザーは SQL Server に接続できますが、このデータベース XXX には接続できません。ユーザー「user1」が接続しようとすると、「ログインによって要求されたデータベース「XXX」を開けません。ログインに失敗しました。ユーザー「domain\user1」のログインに失敗しました。」というエラーが表示されます。

'domain\user1' をデータベース XXX に手動で追加し、データリーダー、データライターのロールを有効にすると、user1 は問題なく接続できるようになります。

不思議なことに、user1 は同じサーバー上の他の 2 つのデータベースに接続できます。この場合も AD ドメイン グループ経由で接続しますが、以前に作成された別のグループであり、ユーザーはそれらのデータベースのユーザーとして個別に設定されていません。これらのデータベースは両方とも、古い SQL Server 2005 インストールからデタッチ/アタッチ経由でコピーされ、SQL-2005 で正常に動作していましたが、現在では SQL-2008 R2 サーバーでも正常に動作しています。(問題のあるデータベース XXX と同じユーザー アカウントが DB プロパティの所有者として表示されます。)

データベース XXX は、その R2 サーバー上に作成された新しいデータベースであり、AD ドメイン グループも新しいものです。

今のところ、回避策としてユーザーを手動で追加できますが、これは永久に機能するわけではなく、ここで何が問題なのかについてのヒントが必要です。追加データ - SQL Server サービスはドメイン管理者アカウントで実行されます。

SQL Server 2005 でこれとまったく同じ問題を説明する記事を見つけました。https://connect.microsoft.com/SQLServer/feedback/details/248615/login-fails-when-user-is-granted-access-via-a-domain-group しかし、これは 2006 年のものであり、解決策の手がかりは含まれておらず、修正されたと想定する必要があります。

答え1

完全な余談: SQL Server をドメイン管理者として実行することはベスト プラクティスではありません。権限のないドメイン ユーザーとして SQL を実行することを検討してください。

デタッチ/アタッチによって移動されたデータベースにアクセスできるユーザーの場合、SID はデータベースとともに移動します。

動作に基づいて推測すると、SQL がグループ メンバーシップを判別できないか、データベース自体の権限が欠落していると考えられます。

SELECT * FROM sys.database_principals特定のデータベースに関する詳細情報を取得し、ドメイン グループが存在することを確認する 必要があります。

答え2

推測するに、ユーザーは、SQL ログインとして使用しているグループに追加された後、ログオフして再度ログインしていません。ユーザーがワークステーションからログオフして再度ログインするまで、ユーザーのアクセス トークンは新しいグループ メンバーシップで更新されません。これにより、古いグループは機能するのに、テストしている新しいグループは機能しない理由が説明されます。

関連情報