我想在我的内部应用程序中使用集成安全性,这些应用程序都在一个域中。不幸的是,我一直无法让它正常工作。我想在 SQL Server 中为整个 Exchange (Active Directory) 组分配一个角色,以便对某些表进行读/写访问。这样我就不必在有人被雇用时创建操作员或在有人被解雇时删除操作员。这可能吗?我将采取哪些步骤来做到这一点?
角色存储在集群中的什么位置,如何转储它们?
我做了一个 db 的 pg_dump 然后将它加载到不同的集群中,但我收到了很多这些错误:
psql:mydump.sql:3621: ERROR: role "myrole" does not exist
Run Code Online (Sandbox Code Playgroud)
所以显然我的数据库的转储不包括角色。我尝试转储“postgres”数据库,但我也没有看到那里的角色。
我需要使用pg_dumpall --roles-only
吗?
Postgresql 版本 8.4.8 和 9.1.4 操作系统:Ubuntu 11.04 Natty
当谈到 SQL Sever 中的数据库权限管理领域时,我是非常绿色的。
让我们举一个简单的例子。
假设帐户“admin”是架构 A、B 和 C 的所有者。
还有另一个帐户“minion”,您希望对在模式 A、B 和 C 下创建的任何对象(表/视图)拥有完全权限(更新/删除/插入/选择/更改)。
这可能吗?还是每次在这些模式下添加表/视图时都必须执行授权语句?(对我来说似乎有点傻)。
我确定以前有人问过这个问题,但我似乎无法找到以下内容的相关详细信息。
是否有某种预建表可以执行以下操作(我使用了 dba_tab_privs 但它是有限的并且不能满足我的所有需求),如果没有,是否有人对回答以下问题有疑问?
假设我有两个 Postgresql 数据库组,“authors”和“editors”,以及两个用户,“maxwell”和“ernest”。
create role authors;
create role editors;
create user maxwell;
create user ernest;
grant authors to editors; --editors can do what authors can do
grant editors to maxwell; --maxwell is an editor
grant authors to ernest; --ernest is an author
Run Code Online (Sandbox Code Playgroud)
我想编写一个高性能函数,它返回 maxwell 所属的角色列表(最好是他们的 oid),如下所示:
create or replace function get_all_roles() returns oid[] ...
Run Code Online (Sandbox Code Playgroud)
它应该返回 maxwell、authors 和 editors(但不是 ernest)的 oid。
但是当有继承时,我不知道该怎么做。
第一张海报,长期潜伏在这里。在报告中激活应用程序角色的最佳方法是什么?
我尝试了不同的方法,到目前为止唯一有效的方法是像这样嵌入对应用程序角色的调用:-
EXEC sp_setapprole 'REPORTZ', 's3cr3t';
select *
from mytable
where ID < 10000
Run Code Online (Sandbox Code Playgroud)
在数据集中。它确实有效......但不是我喜欢的(当然不是我想要进入生产环境的形状)。
我更希望我可以在运行时通过自定义程序集或报告服务中的某种“服务器挂钩”以某种方式“劫持”或“注入”应用程序角色激活行(在这两种情况下,我都不知道如何)
非常感谢您的时间+亲切的关注。
是的。
Owned Schemas
和之间有区别Role Members
吗?
根据我的理解,这Role Members
是强制性的 - 用户需要至少Role Members
选中一个复选框。
然而,这Owned Schemas
不是强制性的。这真的让我想知道为什么需要Owned Schemas
在那里。
我有一个 Postgresql 9.2 数据库。在此数据库上创建了两个用户。当我以超级用户身份执行以下查询时,我可以看到所有内容。
select * from pg_stat_activity
Run Code Online (Sandbox Code Playgroud)
但是,是否可以在不以超级用户身份连接的情况下获得相同的结果?
我应该授予/创建哪个权限/角色以获得超级用户可以看到的结果?
我有一个服务器,其中包含多个数据库,这些数据库包含在同一个服务器/项目中。我正在使用 MS SQL Server 2012。
我设置了一个特殊角色,其中包含 3 个属于该角色的用户。我想授予 Select 对 1 个特定数据库中所有表的角色的访问权限。
有问题的数据库是一个存档数据库,其中包含过去 12 年中每个月的存档表。最初创建角色时,我通过运行以下命令授予访问权限:
GRANT SELECT ON [dbo].[myarchivetable] TO myspecialrole
Run Code Online (Sandbox Code Playgroud)
走
这很有效,因为我只需要更改年份和月份并将其全部作为 1 个脚本运行。
我现在发现他们需要选择访问存档数据库中的每个表。我可以执行上述方法,但是必须将所有这些都写出 132 次,很容易出错。
如何轻松地将 myspecialrole 添加到该数据库中的每个表?
我对在 PostgreSQL 中设置权限有点困惑。
我有这些角色:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication | {}
meltemi | Create role, Create DB | {rails}
rails | Create DB, Cannot login | {}
myapp | | {rails}
Run Code Online (Sandbox Code Playgroud)
和数据库:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
Run Code Online (Sandbox Code Playgroud)
用户myapp
在查询myapp_production
数据库添加和删除记录时没有问题。我希望meltemi
也能够查询相同的数据库。所以,我创建了一个角色 …
role ×10
permissions ×5
sql-server ×5
postgresql ×4
dump ×1
oracle ×1
restore ×1
schema ×1
security ×1
select ×1
ssrs ×1
users ×1