标签: role

为登录提供服务器角色会中断存储过程

我有一个名为user1. user1可以执行存储过程[Test].[SP1]

EXEC [Test].[TestSortation]
EXEC [TestSortation]
Run Code Online (Sandbox Code Playgroud)

以上两个命令都有效。

现在,如果我给user1的服务器角色sysadmin除了public。上面 2 个语句中的后者失败,并引发此错误:

找不到存储过程“TestSortation”。

我不想手动更改数据库中的每个存储过程以将模式名称包含在 EXECute 命令中。有人可以向我解释为什么会发生这种情况。另外,有没有办法解决这个问题,自动修复我的存储过程,将架构默认为[Test]

sql-server stored-procedures permissions role sql-server-2008-r2

8
推荐指数
1
解决办法
174
查看次数

连接到 PostgreSQL 时自动调用“SET ROLE”

首先是简短版本:

是否可以SET ROLE通过特定角色自动调用新的 PostgreSQL 数据库连接,无论是通过连接角色上的配置(使用ALTER ROLE),还是通过连接 URI 末尾的选项?


更长,结合上下文:

我正在设置一个 Web 应用程序以使用轮换数据库凭据(因此,有多种角色在发挥作用)。但是,这些凭据还用于对数据库进行修改(通过 Rails 迁移),这意味着表将由不打算长期存在的角色拥有。

我可以修改轮换凭据,以便它们继承父角色(本身无法登录),然后通过SET ROLE所有数据库修改都归父角色所有,而不是短期子角色。这解决了所有权问题,但它需要调用每个连接SET ROLE parent- 不太可行。

因此,我需要某种方法来确保每个子连接始终在父角色的上下文中运行。这可能吗?

postgresql role

8
推荐指数
2
解决办法
3097
查看次数

创建视图时,如果用户已经通过角色拥有相同的权限,为什么还需要直接对象权限?

我在 Oracle 10g 中遇到权限问题。我希望有人可以帮助我理解这一点。

我有一个带有表格的架构。我已将该表上的 select 授予一个角色。

grant select on user1.example_table to example_role;
Run Code Online (Sandbox Code Playgroud)

然后我将该角色授予用户:

grant example_role to user2;
Run Code Online (Sandbox Code Playgroud)

然后 user2 想在该表的顶部创建一个视图:

create or replace view user2.example_view as
select *
from user1.example_table;
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

ORA-01031: insufficient privileges
Run Code Online (Sandbox Code Playgroud)

为什么?如果他们通过角色拥有选择权限,为什么他们不能在该对象上创建视图?

我发现我必须将对象直接授予用户才能工作。

grant select on user1.example_table to user2;
Run Code Online (Sandbox Code Playgroud)

无论如何不必这样做吗?我想使用角色,因为我有很多表和很多用户,并且不想为单个用户维护一百万个不同的授权。

oracle permissions role view

7
推荐指数
3
解决办法
3万
查看次数

用户权限问题

嗨,我正在尝试创建一个登录角色(用户),其修改数据库的能力相当小。他们应该能够选择、删除、创建触发器、插入和更新。然后,我希望拥有多个作为用户成员的帐户,因此它们具有相同的权限,但我可以为单个用户记录编辑。

我在数据库设计中使用 pgadmin,我的程序使用 QtSQL 访问它。

尝试选择一些数据作为测试时,Qt 捕获了我收到的错误消息。当我运行与数据库所有者和超级用户相同的代码时,我没有问题。

bool run_query(const QString & q){
    QSqlDatabase db = QSqlDatabase::database("default");
    QSqlQuery query(db);

    query.exec(q);

    if (!query.isActive()){
        QMessageBox::warning(0, QObject::tr("Database Error"),
                             query.lastError().text());
        return false;
    }

    while (query.next()){
        QString title = query.value(0).toString();
        std::cerr << qPrintable(title) << std::endl;
    }
    return true;
}

run_query("Select forename from contacts;");
Run Code Online (Sandbox Code Playgroud)

错误:关系联系人的权限被拒绝 QPSQL:无法创建查询

到目前为止,我已经创建了角色(用户)。

-- Role: user

-- DROP ROLE "user";

CREATE ROLE "user" LOGIN
  ENCRYPTED PASSWORD 'md54d45974e13472b5a0be3533de4666414'
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
COMMENT ON ROLE "user" IS 'Low level user';
Run Code Online (Sandbox Code Playgroud)

因为这给了以前的问题。我尝试为数据库添加公共权限,但这也不起作用。

现在我不知道去哪里寻找解决方案。任何帮助深表感谢。谢谢。

postgresql role

7
推荐指数
2
解决办法
1万
查看次数

Microsoft SQL Server 2008 中是否有备份操作员角色?

我有一台装有 Microsoft SQL Server 2008 和 VERITAS NetBackup 的 Windows Server 2008。基本上,此 NetBackup 需要一个有效的登录 ID,该 ID 登录到 SQL Server 的功能足够强大以进行备份和还原。

我在 OS 上创建了一个名为 backup01 的本地 ID,并将其分配给 Backup Operator 组。接下来,我在 SQL Server 2008 中使用 Windows 身份验证为 backup01 创建了一个登录名。至于服务器角色,我将其分配为“public”和“sysadmin”。这样,通过 NetBackup 进行的备份和还原将始终有效。

但是,我们的安全策略不鼓励将 sysadmin 或管理员等效权限分配给非管理员用户。

在这种情况下,我在哪里可以找到 Microsoft SQL Server 中的此备份操作员角色?或者是否有任何指南或教程可以指导您创建新角色?谢谢!

sql-server backup role

7
推荐指数
1
解决办法
3万
查看次数

将 sysadmin 角色与 EXECUTE AS 结合使用

我的理解是,我可以将该EXECUTE AS OWNER子句用作我创建的过程的一部分,以使该过程的主体以不同的用户身份运行。我的目标是执行需要sysadmin角色 ( DBCC TRACEON(1224))的命令。此过程应该由非特权用户调用。

我在sa用户下运行了以下脚本:

SELECT USER_NAME(), USER_ID(), IsSysAdmin = IS_SRVROLEMEMBER('sysadmin')
-- dbo  1   1

IF EXISTS(SELECT * FROM sys.procedures WHERE name = 'MyProc')
    DROP PROCEDURE MyProc

GO
CREATE PROCEDURE MyProc
WITH EXECUTE AS OWNER
AS 
    SELECT USER_NAME(), USER_ID(), IsSysAdmin = IS_SRVROLEMEMBER('sysadmin');
-- dbo  1   0

    DBCC TRACEON(1224)
--Msg 2571, Level 14, State 3, Procedure MyProc, Line 7
--User 'dbo' does not have permission to run DBCC TRACEON.

RETURN
GO

EXEC …
Run Code Online (Sandbox Code Playgroud)

security sql-server dbcc role

7
推荐指数
2
解决办法
1万
查看次数

如何检测授予角色的执行权限(未使用 ON 子句时)

我只是花了几个小时试图弄清楚应用程序如何有权限执行存储过程。

来自 StackExchange 的TIL:事实证明该ON子句对于 是可选的GRANT,允许授予角色对所有内容执行。在我尽力验证语法之后,我不得不嘲笑这个 MSDN 页面的最底部。

授予对象权限 (Transact-SQL)

CREATE ROLE Test
GRANT EXECUTE TO Test
Run Code Online (Sandbox Code Playgroud)

好的,这很酷(不是最小特权原则)。

但是:我如何发现或检测该授权?

我尝试查看所有 SQL Server Management Studio 登录名、角色、用户和架构权限 GUI,但在任何地方都没有发现这种类型的授权。

在调试时,我发现了有关在查询中枚举权限的问题,虽然这些问题是相关的,但这里的答案既没有提到也没有涵盖这种情况:

我正在寻找识别这种授予(或拒绝)特权方法的最可靠方法。

sql-server permissions role sql-server-2012

7
推荐指数
2
解决办法
1万
查看次数

Is there a way to give GRANT OPTION recursively for subsets of permissions?

In SQL Server, I would like to create a role that has the ability to manipulate database objects as well as create other roles and grant those roles subsets of its permissions.

CREATE ROLE deploymentRole;
CREATE ROLE subRole;
GRANT SELECT TO deploymentRole WITH GRANT OPTION;

CREATE TABLE dbo.testTable (id INT NULL);
CREATE USER deployUser WITHOUT LOGIN;
ALTER ROLE deploymentRole ADD MEMBER deployUser;

EXECUTE AS USER = 'deployUser';

--This works
SELECT * FROM dbo.testTable

--This also works
GRANT SELECT TO subRole …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions role deployment

7
推荐指数
1
解决办法
900
查看次数

如何授予执行存储过程的权限?

我有一个 AD 组,它在我的 SQL Server 上设置为 Windows Authenticated SQL 登录名。在DatabaseA它具有db_datareaderpublic角色。所以这个 AD 组的用户对数据库中的实体只有读访问权限。

DatabaseA我内部有一个存储过程dbo.Proc1,我授予execute了同一个 AD 组的权限。

当该 AD 组的用户连接到此服务器时,他们看不到实体dbo.Proc1

我是否需要向缺少的 Windows 身份验证 SQL 登录(AD 组)提供任何其他权限?

我确实看到,如果我查看 的属性DatabaseA,就会发现execute该级别的权限尚未授予。

(注意:我只希望该 AD 组的用户能够执行dbo.Proc1。我不希望他们能够执行任何不被视为“只读”类型的操作。)

sql-server-2008 security sql-server permissions role

7
推荐指数
1
解决办法
1692
查看次数

Postgres 获取函数所有者

我希望能够获得一个函数名称和函数所有者名称的表格。

目前,此查询返回给定模式的函数列表:

  SELECT  proname
  FROM    pg_catalog.pg_namespace n
  JOIN    pg_catalog.pg_proc p
  ON      pronamespace = n.oid
  WHERE   nspname = '<%= schema_name %>';
Run Code Online (Sandbox Code Playgroud)

我可以看到有一proowner列返回角色的 ID。
https://www.postgresql.org/docs/10/catalog-pg-proc.html

我想要的是返回所有者名称的东西,我只是不知道足够的 SQL 来弄清楚如何加入表等。

|function_name|function_owner|
______________________________
|func1        |func1_owner   |
|func2        |func2_owner   |
Run Code Online (Sandbox Code Playgroud)

如果有人可以解释如何做到这一点,我将不胜感激!

谢谢

postgresql stored-procedures role access-control functions

7
推荐指数
1
解决办法
5528
查看次数