AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[role](dba)

Martin Hope
nam
Asked: 2022-10-22 08:59:36 +0800 CST

Azure SQL 漏洞评估错误

  • 5

在我们的 SQL 托管实例数据库中,我们创建了一个用户定义的数据库角色并向其中添加了 20 个用户。现在,在Microsoft Defender for Cloud扫描期间,我们收到以下错误/警告:

规则 ID 规则标题 严重性 规则说明
VA1281 用户定义角色的所有成员资格都应该是预期的 中等的 用户定义角色是用户定义的安全主体,用于对主体进行分组以轻松管理权限。监控这些角色对于避免拥有过多权限很重要。创建一个基线,为每个用户定义的角色定义预期的成员资格。此规则检查用户定义角色的所有成员资格是否与基线中定义的一样。

有人可以解释错误以及需要做什么来补救(解决)问题吗?

参考:漏洞评估规则

role
  • 1 个回答
  • 47 Views
Martin Hope
TheNumber23
Asked: 2021-07-10 14:42:16 +0800 CST

在 SQL Server 中使用角色的行级安全性

  • 1

我想在我的所有表上实现行级安全性。每个表都有一个名为的列data_classification,其中包含一个值列表。理想情况下,我想创建允许查看某些行的数据库角色。当我添加新用户时,这将允许可扩展性。我能找到的所有 RLS 示例都是针对用户的。

我的尝试如下。我创建了一个表,其中每个角色都有一个列,每个权限类型都有一个行。如果角色有权访问该权限,则填写权限名称,否则为 Null。给定一个用户名,我使用

DECLARE @role_name nvarchar(50);
set @role_name = SELECT dp.name as role_name  
FROM sys.sysusers us right 
JOIN  sys.database_role_members rm ON us.uid = rm.member_principal_id
JOIN sys.database_principals dp ON rm.role_principal_id =  dp.principal_id
WHERE us.name = USER_NAME();
EXEC('SELECT ' + @role_name + ' FROM [admin].[data_permissions] WHERE ' + @role_name + ' IS NOT NULL')

选择角色拥有的所有权限。但是我似乎无法将其放入要过滤的谓词中,我期待这样的事情

CREATE FUNCTION DataFilter.fn_data_classification(@data_classification AS varchar(20))  
    RETURNS TABLE  
WITH SCHEMABINDING  
AS  
    RETURN SELECT 1 AS result   
WHERE 
    @data_classification in (Query above)

这不起作用,我不断收到语法错误。任何帮助将非常感激。如果这使事情变得更容易,更改权限表也是可能的。谢谢

======

编辑:我有 data_classificationsa,b,c,d,e和 roles role_x, role_y, role_z,role_x有权限a,b,c,d,e,role_y有权限查看a,c,d和role_z有权限查看b,c,e。如果需要一个新角色或一个新的数据分类,我也想让它可扩展。

我还想在所有表上添加此过滤器,希望使用尽可能少的命令。

sql-server role
  • 1 个回答
  • 447 Views
Martin Hope
Юлиан Волянский
Asked: 2020-10-19 03:33:55 +0800 CST

无法使用角色创建视图

  • 0

我正在学习Oracle并且必须扮演角色。我从一个系统创建了c##admin一个,授予他所有赠款。然后我创建了一个c##manager_roleand c##manager。我将此角色授予c##manager. 之后,我开始授予c##manager_role. 此外,我授予以下内容:

CREATE VIEW                              YES YES NO

CREATE ANY VIEW                          NO  NO  NO

DROP ANY VIEW                            YES YES NO 

以上输出来自:

select * from role_sys_privs where ROLE = 'C##MANAGER_ROLE' order by 1;

现在,我不明白,为什么CREATE ANY VIEW有 3 个“否”以及为什么我不能从c##manager.

来自 c##admin:

grant CREATE ANY VIEW TO c##manager_role with admin option CONTAINER=all;

来自 c##manager:

create view friends_v4 as select t1.nickname as "USER", t2.nickname as "FRIEND" from c##admin.clients t1, c##admin.clients t2, c##admin.friends where (t1.id = c##admin.friends.user_id and t2.id = c##admin.friends.friend_id);

错误:

错误报告 - ORA-01031: привилегий недостаточно 01031. 00000 - “权限不足”

*原因:试图在没有必要权限的情况下执行数据库操作。

*行动:请您的数据库管理员或指定的安全管理员授予您必要的权限

所有注明的表格都存在。

oracle-12c role
  • 1 个回答
  • 148 Views
Martin Hope
ACC
Asked: 2020-08-27 06:13:10 +0800 CST

Postgres 默认权限似乎不起作用

  • 0

我正在尝试在我有数据库和模式的 Postgres 中设置 RBAC。我有几个角色provisioner, service,mydb_ro和mydb_rw。我运行以下命令来更改默认权限

ALTER DEFAULT PRIVILEGES FOR ROLE provisioner IN SCHEMA mydb_schema
    GRANT SELECT                           ON TABLES TO mydb_ro;  -- only read

ALTER DEFAULT PRIVILEGES FOR ROLE provisioner IN SCHEMA mydb_schema
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO mydb_rw;  -- + write, TRUNCATE optional

ALTER DEFAULT PRIVILEGES FOR ROLE provisioner IN SCHEMA mydb_schema
    GRANT REFERENCES, TRIGGER              ON TABLES TO mydb_rw;  -- + TRIGGER

ALTER DEFAULT PRIVILEGES FOR ROLE provisioner IN SCHEMA mydb_schema
    GRANT USAGE, SELECT, UPDATE            ON SEQUENCES TO mydb_rw;  -- SELECT, UPDATE are optional

ALTER DEFAULT PRIVILEGES FOR ROLE provisioner IN SCHEMA mydb_schema
    GRANT EXECUTE                          ON FUNCTIONS TO mydb_rw;

这是我在默认权限中看到的

postgres@mydb=> \ddp
                           Default access privileges
┌─────────────┬──────────────────┬──────────┬─────────────────────────────────┐
│    Owner    │      Schema      │   Type   │        Access privileges        │
├─────────────┼──────────────────┼──────────┼─────────────────────────────────┤
│ provisioner │ mydb_schema      │ function │ mydb_rw=X/provisioner           │
│ provisioner │ mydb_schema      │ sequence │ mydb_rw=rwU/provisioner         │
│ provisioner │ mydb_schema      │ table    │ mydb_ro=r/provisioner          ↵│
│             │                  │          │ mydb_rw=awdDxt/provisioner      │
└─────────────┴──────────────────┴──────────┴─────────────────────────────────┘

但是当我以具有角色的用户身份登录provisioner并创建表时,具有service角色的用户看不到它。我究竟做错了什么?

我现在跑了

GRANT mydb_ro TO mydb_rw;
GRANT mydb_rw TO service;

但这对许可问题没有帮助。

postgresql role
  • 1 个回答
  • 334 Views
Martin Hope
horsinaround
Asked: 2019-11-09 08:12:43 +0800 CST

删除默认的“postgres”角色是否安全?

  • 2

我试图了解我是否可以放弃“postgres”角色,或者至少将其作为超级用户删除。谢谢!

postgresql role
  • 1 个回答
  • 1181 Views
Martin Hope
notexisting
Asked: 2018-09-27 00:21:06 +0800 CST

您如何创建一个不允许执行任何操作的 ROLE?

  • 1

我想创建一个默认情况下不允许执行任何操作的角色。它基本上具有零权限。从这样的角色开始,我想授予最小的权限集。

你怎么能在没有任何权限的情况下创建角色?

postgresql role
  • 1 个回答
  • 44 Views
Martin Hope
Mattis Asp
Asked: 2018-09-07 04:05:51 +0800 CST

Mongodb 对更新的限制只允许“$push”运算符

  • -1

MongoDB V 4.0

我想通过只允许向集合中插入新内容来限制用户的角色。作为新文档,或作为文档的附件。我不希望用户能够更新(覆盖)文档中的字段,但是更新/(追加/添加)没问题。有什么好的策略吗?我现在的两个选择是:

创建两个集合。限制一个并允许另一个完全更新,一旦所有更新完成,将文档从一个集合复制/移动到另一个集合。

备选方案 2) 将角色限制为仅限 update.$push 运算符,这是一种附加到数组运算符的类型。到目前为止,我还没有找到一种方法来做到这一点。

mongodb role
  • 1 个回答
  • 60 Views
Martin Hope
igelr
Asked: 2018-09-01 06:04:52 +0800 CST

为什么在SQL Server 中public 没有被提及为系统数据库中的固定角色?

  • 5

在跑步的时候

select * from sys.server_principals

对于public角色,在列is_fixed_role中显示为 0

在此处输入图像描述 在此处输入图像描述

但是文档指出它是一个固定的服务器角色。 在此处输入图像描述

文档链接

虽然说public与其他角色有点不同,因为我们可以给它分配权限。无论如何它被称为固定角色。

谁能解释这个困境?

sql-server role
  • 2 个回答
  • 610 Views
Martin Hope
pat
Asked: 2018-08-22 21:55:33 +0800 CST

连接到 PostgreSQL 时自动调用 `SET ROLE`

  • 5

首先是简短版本:

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


更长,有上下文:

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

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

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

postgresql role
  • 2 个回答
  • 1402 Views
Martin Hope
dw8547
Asked: 2018-07-25 05:18:02 +0800 CST

在 PostgreSQL 中将密码到期日期重置为 NULL

  • 2

我们正在清理/标准化系统上的数据库用户/应用程序帐户,这些帐户混合了由不同个人在不同时间使用不同命令创建的帐户。

我们有一种情况,对于某些帐户,密码过期日期属性已明确设置为无穷大,而对于某些帐户,则没有:

postgres=# \du+                                                                                    List of roles
    Role name     |                         Attributes                         | Member of |                                       Description
------------------+------------------------------------------------------------+-----------+-----------------------------------------------------------------------------------------
 user_1           |                                                            | {}        |
 user_2           |                                                            | {}        |
 user_3           | Password valid until infinity                              | {}        |
 user_4           | Password valid until infinity                              | {}        |

以便:

postgres=# SELECT * FROM pg_shadow;
     usename    | usesysid | usecreatedb | usesuper | userepl | usebypassrls |               passwd                | valuntil | useconfig
 ---------------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
  user_1        |    12345 | f           | f        | f       | f            | md5_foo                             |          |
  user_2        |    12346 | f           | f        | f       | f            | md5_foo                             |          |
  user_3        |    12347 | f           | f        | f       | f            | md5_bar                             | infinity |
  user_4        |    12348 | f           | f        | f       | f            | md5_bar                             | infinity |
 (4 rows)

和:

postgres=# SELECT * FROM pg_roles;
     rolname    | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolbypassrls | rolconfig |  oid
 ---------------+----------+------------+---------------+-------------+-------------+----------------+--------------+-------------+---------------+--------------+-----------+-------
  user_1        | f        | f          | f             | f           | t           | f              |           -1 | ********    |               | f            |           | 12345
  user_1        | f        | f          | f             | f           | t           | f              |           -1 | ********    |               | f            |           | 12346
  user_1        | f        | f          | f             | f           | t           | f              |           -1 | ********    | infinity      | f            |           | 12347
  user_1        | f        | f          | f             | f           | t           | f              |           -1 | ********    | infinity      | f            |           | 12348
 (4 rows)

例如:user_1并且user_2创建于:

CREATE USER user_1/2 WITH ENCRYPTED PASSWORD 'foo';

而user_3anduser_4是用以下方式创建的:

CREATE USER user_3/4 WITH ENCRYPTED PASSWORD 'bar' VALID UNTIL 'infinity';

我们要重置VALID UNTIL属性,以便:

postgres=# \du+                                                                                    List of roles
     Role name     |                         Attributes                         | Member of |                                       Description
 ------------------+------------------------------------------------------------+-----------+-----------------------------------------------------------------------------------------
  user_1           |                                                            | {}        |
  user_2           |                                                            | {}        |
  user_3           |                                                            | {}        |
  user_4           |                                                            | {}        |

我们尝试过,但没有成功:

  1. ALTER ROLE user_1/2 WITH VALID UNTIL NULL;
  2. ALTER ROLE user_1/2 WITH VALID UNTIL '';
  3. ALTER ROLE user_1/2 WITH VALID UNTIL DEFAULT;

所以问题是,是否可以将密码过期日期角色属性重置为NULL/ DEFAULT,最好不必重新创建角色?

postgresql-9.5 role
  • 1 个回答
  • 4470 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve