ユーザーがアクセス可能なスペースの一覧を取得する方法

2017-09-20 (Wed)  •  By 伊藤  •  ドキュメント  •  Confluence ナレッジベース 翻訳

今回の記事は、Confluence ナレッジ ベース「How to list which spaces a user can access 」の弊社翻訳版です。原文と差異がある場合は、原文の内容が優先されます。

目的

監査や管理のために、管理者は指定したユーザーがどのスペースにアクセスできるのかを知りたい場合があります (つまり、少なくとも閲覧権限を持っているスペース)。多少の SQL クエリを使用することで、これを実現できます。

解決策

以下の SQL クエリを Confluence データベースに対して実行します。なお、<user_name> はそのユーザーの実際のユーザー名で置き換えてください (すべて小文字を使用します)。

  • 以下のクエリは、そのユーザーが所属する グループに 権限が付与されているすべてのスペースを一覧表示します。
  • SELECT s.SPACEKEY
    FROM SPACEPERMISSIONS sp
    JOIN SPACES s ON s.SPACEID = sp.SPACEID
    JOIN cwd_group g ON sp.PERMGROUPNAME = g.group_name
    JOIN cwd_membership m ON g.id = m.parent_id
    JOIN cwd_user u ON m.child_user_id = u.id
    WHERE u.lower_user_name = '<user_name>'
    GROUP BY s.SPACEKEY
    ORDER BY s.SPACEKEY;
    
  • 以下のクエリは、そのユーザーに対して 個別に 権限が付与されているすべてのスペースを一覧表示します。
  • SELECT s.SPACEKEY
    FROM SPACEPERMISSIONS sp 
    JOIN SPACES s ON s.SPACEID = sp.SPACEID
    JOIN user_mapping um ON um.user_key = sp.PERMUSERNAME
    WHERE um.lower_username = '<user_name>'
    GROUP BY s.SPACEKEY
    ORDER BY s.SPACEKEY;
    
  • 以下のクエリを実行することで、そのユーザーに割り当てられたページ制限を確認できます (このクエリは、このユーザーに対して閲覧/編集制限が付与されてるページを表示します)。
  • SELECT p.cp_type,u.username,c.title
    FROM content_perm p
    JOIN user_mapping u
    ON p.username = u.user_key
    JOIN content_perm_set s
    ON p.cps_id = s.id
    JOIN content c
    ON s.content_id = c.contentid
    WHERE c.contenttype = 'PAGE'
    AND u.username = '<user_name>'
    

注意 : これらの結果は、confluence-administrators グループに所属するユーザーを正確に反映しません。このグループはスーパーユーザー グループとしてハードコードされており、スペース レベルの権限に関わらず各スペースにアクセスできます。また、これら結果はネスト化されたグループに所属するユーザーを正確に反映しません。


Related Articles

お気軽にお問い合わせください

お問い合わせ