DBAtlas · データベース運用アトラス

ユーザーの権限を表示

Oracle

SELECT privilege FROM dba_sys_privs WHERE grantee = 'APP'
UNION ALL SELECT granted_role FROM dba_role_privs WHERE grantee = 'APP'
UNION ALL SELECT privilege||' ON '||owner||'.'||table_name
          FROM dba_tab_privs WHERE grantee = 'APP';

grantee は大文字で格納される。ロール経由で付与された間接的な権限は role_role_privs も辿る。

PostgreSQL

SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.role_table_grants
WHERE grantee = 'app';
-- Role memberships (direct): \drg app (PG16+; earlier \du app)

ロールのメンバーシップ(継承)は pg_auth_members に格納される。\du/\drg は直接のメンバーシップのみを表示するため、間接的なメンバーシップには pg_has_role('app', '<role>', 'MEMBER') を使用する。

MySQL

SHOW GRANTS FOR 'app'@'%';

ロール(MySQL 8)の場合は、先に SET ROLE ALL を実行するか、SHOW GRANTS FOR 'app'@'%' USING 'role_name'; を使用する。

SQL Server

SELECT dp.name AS principal, p.permission_name,
       p.state_desc, o.name AS object
FROM sys.database_permissions p
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
LEFT JOIN sys.objects o ON p.major_id = o.object_id
WHERE dp.name = 'app';

ロール経由で付与された権限は、sys.database_role_members のメンバーシップも確認する。

MongoDB

db.getUser("app", { showPrivileges: true, showCredentials: false })

showPrivileges はロールの展開された(実効)権限も一覧表示する。

Redis

ACL GETUSER app

許可されたコマンド、キーパターン(~)、pub/sub チャネル(&)、パスワードハッシュを返す。

DBAtlas で開く →