web-dev-qa-db-ja.com

SQL Serverのセキュリティグループ内のユーザーを確認する

データベースのSecurity/Usersフォルダーには、「MyApplication Users」を含む多数のセキュリティグループがあります。自分がこのグループにいる(または別のユーザーがいる)かどうかを確認する必要がありますが、クエリを実行する方法や、この情報を表示できる場所はわかりません。プロパティを調べてみましたが、何も見つかりませんでした。何か案は?

12
Anna

自分または現在のユーザーの確認:

SELECT IS_MEMBER('[group or role]')

1 = yes、0 = no、およびnull =照会されたグループまたはロールの結果は無効です。

ユーザーのリストを取得するには、拡張procが有効で、問題のグループがWindowsグループである場合、xp_logininfoを試してください:

EXEC master..xp_logininfo 
@acctname = '[group]',
@option = 'members'
16
DeanG

現在のユーザーがどのグループ/ロールのメンバーであるかをすばやく表示するには、

select
      [principal_id]
    , [name]
    , [type_desc]
    , is_member(name) as [is_member]
from [sys].[database_principals]
where [type] in ('R','G')
order by [is_member] desc,[type],[name]
6
Edward Comeau

DeanG から受け入れられた回答は、SQL Server内でこの情報を取得するための推奨ソリューションです


これにはActive Directoryツールを使用できます。 Remote Server Administration Tools の一部であるActive Directoryユーザーとコンピューターが好きです。リンクに従って、Windows 7にツールをダウンロードしてインストールします。

インストールしたら、特定のグループ名を検索できます。

Search

次に、Membersタブを使用してグループメンバーシップを確認できます。

Members

RSAツールにパッケージ化されたADブラウザを使用したくない場合は、他にもいくつかの方法があります。

3
Bryan

あなたはしません。

代わりに、ユーザーとグループを使用して特権を付与/拒否し、エンジンがそれらを適切に実施できるようにします。あなた自身のセキュリティをロールバックしようとすると、どこにも速く行かないでしょう。当たり前の例は、「1つの拒否がすべての助成金に勝つ」ルールを順守しない場合です。そして、EXECUTE ASの複雑な操作は失敗します。モジュール署名に基づくセキュリティは言うまでもありません。

レコードの場合:ユーザー、ロール、およびグループは sys.database_principals カタログビュー。 sys.fn_my_permissions は、特定のセキュリティ保護可能なオブジェクトの現在のコンテキスト許可を返します。

2
Remus Rusanu

インスタンス内のADグループメンバーを見つけるには、以下のクエリを使用できます。

xp_logininfo 'DomainName\AD_GroupName', 'members'

このクエリを使用すると、次の状態を見つけることができます。

account name, type, privilege, mapped login name, permission path
1
Saranya Kumaran