- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有一种简单的方法来枚举特定角色具有某些访问权限的所有对象?我知道 pg_catalog 中的一组 has_*_privilege
函数,但它们没有完成这项工作,我想以相反的方式工作。实际上,我希望有一个 View 为特定角色提供 oid 和存储在 pg_class 中的任何内容的访问权限。
这样的 View 对于检查数据库的安全设置是否正确非常方便。通常,角色比关系少得多,因此恕我直言,检查角色要轻松得多。标准 PostgreSQL 发行版中不应该提供这样的实用程序吗?
根据源代码(acl.h),aclitem 是一个结构:
typedef struct AclItem
{ Oid ai_grantee; /* ID that this item grants privs to */
Oid ai_grantor; /* grantor of privs */
AclMode ai_privs; /* privilege bits */
} AclItem;
易于使用。但是,pg_type 将其列为用户定义的非复合类型。这是为什么?我现在看到的唯一方法是使用字符串函数解析 aclitem[] 数组。有没有更好的方法来分析 aclitem 数组?
添加信息浏览各种 PG 列表,很明显这个问题至少自 1997 年以来一直以各种形式出现(那时我们有电脑吗?有电视吗?),最相关的讨论主题是“Binary in/out for aclitem”在 2011 年初的 pgsql-hackers 上。作为 PG 的(技术熟练的)用户 - 而不是黑客 - 我很欣赏开发人员对维护稳定界面的关注,但线程中表达的一些关注有点远我的口味。系统目录中没有定义等于源代码中 AclItem 结构的 pg_acl 表的真正原因是什么?该结构最后一次更改是什么时候?我也知道 SE 的发展可能会改变安全处理的方式 - 当用户选择时,大概 - 所以我会满足于以这种方式呈现 acl 信息的东西,以便很容易枚举授予的特权特定用户,例如:
SELECT * FROM pg_privileges WHERE grantee = 16384;
像这样,它仍然可以是底层结构的抽象,因此引擎盖下的任何更改(大概)仍然可以转换为公开的接口(interface)。我会说,与 information_schema 方法没有太大区别。
干杯,帕特里克
最佳答案
没有开箱即用的 View ,但创建它所需的数据在系统目录中:
http://www.postgresql.org/docs/current/static/catalogs.html
比如pg_class
中有一个relacl
字段:
select oid::regclass, relacl from pg_class;
其他目录中也有类似的字段,即pg_type
中的typacl
和pg_proc
中的proacl
。
您可能想要使用另外两个目录,即 pg_authid
来了解哪些角色具有 super 用户权限,以及 pg_auth_members
来了解谁拥有什么角色。
(pg_default_acl
仅在对象创建期间使用,因此没有用。)
有几个与 aclitem 相关的内部函数可以在创建 View 时派上用场。您可以像这样在 psql
中列出它们:
\df+ *acl*
特别是 acleexplode()
。希望以下示例足以帮助您入门:
select oid::regclass,
(aclexplode(relacl)).grantor,
(aclexplode(relacl)).grantee,
(aclexplode(relacl)).privilege_type,
(aclexplode(relacl)).is_grantable
from pg_class
where relacl is not null;
可以通过先扩展acl行来优化,例如:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
它将直接引导您获得所需的结果。
据我所知,这与使用内置工具一样好。 (当然,如果您想进一步优化它,您可以在 C 中编写自己的一组运算符。)
关于您的额外问题,恐怕世界上只有少数人能够回答这些问题,也就是核心开发者自己。他们出现在 pg 黑客名单上的次数比在这里多。
关于postgresql - 检索特定角色的所有对象权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315030/
抱歉,问题标题含糊不清!我有一个 ASP.NET 应用程序,可与其他第三方软件配合使用(Burning Glass - 通过 tcp/ip 连接到 Web 应用程序,需要 - 正确配置的 dns 条目
我正在开展一个项目,将一个大型网站分解为更小、更具体的网站。我需要能够将对这些网站的访问限制为仅具有必要权限的用户,并且希望尽可能利用现有的成员资格/角色数据模型。 因此,理想情况下,我想将潜在的多个
抱歉,问题标题含糊不清!我有一个 ASP.NET 应用程序,可与其他第三方软件配合使用(Burning Glass - 通过 tcp/ip 连接到 Web 应用程序,需要 - 正确配置的 dns 条目
我对 FOSUserBundle 中的角色有点困惑。用户实体也有角色列,我们可以通过它为用户分配多个角色。根据发布在 Managing users/roles/groups in FOSUserBun
原谅我的新手问题,但我想按顺序执行三个任务并在剧本中使用两个角色: 任务 角色 任务 角色 任务 这是我到目前为止(任务,角色,任务): --- - name: Task Role Task ho
在触发器中,我想检查哪些角色对 USER() 有效,而不是 CURRENT_USER()。(认识到 CURRENT_USER() 返回触发器的 DEFINER)。 是否有任何类型的 USER_ROLE
我有一套Ansible playbooks 和主要的 yml 文件是这样的 - hosts: all roles: - common - install_nginx 我想在触发剧本
因此,我有以下代码输出安装的所有功能和角色: Import-Module ServerManager $Arr = Get-WindowsFeature | Where-Object {$_.Inst
我已经寻找了一段时间,并且已经手动完成了角色和权限的许多部署,但是有什么方法可以在Sitecore中为角色/权限创建一个程序包(或等效程序包)? 当您没有选择从一个环境到另一个环境进行完全部署时,使用
我想找到或创建一个与所有者或至少贡献者具有相同功能的 azure 角色。但此角色不应该有权创建 azure 资源。 我一直在浏览现有的预定义角色。 最佳答案 这在 Azure RBAC 上下文中没有任
我在文档中找不到答案,也找不到示例:是否可以在 role/defaults/ 中命名除 main.yml 之外的文件?我的意思是,main.yml 是具有默认值的文件的唯一有效名称吗? 最佳答案 根据
我尝试了kubectl get sa default命令,但只看到一些非常基本的值。在k8s中查看与特定服务帐户关联的权限/角色的命令是什么? 最佳答案 以下命令可能会有所帮助。它基本上获得RoleB
有没有办法告诉 Spring 在我制作的自定义用户 bean 中找到用户的角色? http://static.springsource.org/sprin...ns-config.html 因此,如果
在我的 playbook 中运行几次 Play 后,我想验证我的应用程序的部署。 在我的角色之一中,我有以下任务,将创建的 ec2 实例添加到“已启动”的主机: - name: Add new ins
我按如下方式将用户添加到角色(请注意,我在我的机器上运行下面显示的代码): Roles.AddUserToRole(oMU.UserName, "Role1"); 使用以下代码我检查用户是否在
我目前在为 postgresql 创建角色时遇到问题,这是我已经做过的,但自昨晚以来取得了任何进展 simplybel@simplybel:~$ sudo -u postgres createuser
一个项目现在有超过 200 个类,每个文件一个类,将它们划分到目录中似乎是恰当的。现在我正在考虑两种不同的策略; a) 按角色或层分组 repositories/ UserRepository
您如何为用户、角色和应用特定实体提供种子?似乎 IdentityModel 以它自己的上下文为目标? internal sealed class Configuration : DbMigration
摩尔庄园手游在六一儿童节上线之后,网上的争议声还是很多的,有夸赞的,称其找回了童年的回忆,也有吐槽的,觉得3d的设计很晕,没有以前的感觉,想要删除账号,那么大家知道怎么去注销吗,步骤流程是什么样的?
在 XP SP2 虚拟机中运行 Oracle 11gR1。完全披露:这是一项任务。 我试图在用户被授予 DBA 角色时进行审计,并在事件发生时发送电子邮件。 我相信命令 AUDIT DBA;将审核对
我是一名优秀的程序员,十分优秀!