我想向一些用户组提供查看敏感度分类的访问权限。目前它在报告工具中返回空白结果,或者直接查询 sys.sensitivity_classifications 表。
可用于提供只读视图的最小权限集是多少(默认权限还是自定义权限)?
我想向一些用户组提供查看敏感度分类的访问权限。目前它在报告工具中返回空白结果,或者直接查询 sys.sensitivity_classifications 表。
可用于提供只读视图的最小权限集是多少(默认权限还是自定义权限)?
我在撤销权限时遇到问题,导致我无法删除用户
select usename, acl.*
from pg_default_acl as acl join pg_user on usesysid = defacluser
where usename = 'user1';
给我:
|usename|defacluser|defaclnamespace|defaclobjtype|defaclacl |
|-------|----------|---------------|-------------|----------------------|
|user1 |143 |0 |r |{user1=awdRxt/user1}|
使用亚马逊 ( ) 提供的视图,v_get_obj_priv_by_user
我执行此操作以获取具有该用户权限的架构/数据库:
select 'alter table '+schemaname+'.'+tablename+' owner to y;' from pg_tables where tableowner like 'user1';
select distinct 'revoke all on schema '+schemaname+' from user1;' from admin.v_get_obj_priv_by_user where usename like 'user1';
select distinct 'revoke all on all tables in schema '+schemaname+' from user1;' from admin.v_get_obj_priv_by_user where usename like 'user1'
从之前的查询中得到了这 2 个回复
revoke all on schema xxx from user1;
revoke all on all tables in schema xxx from user1;
我运行它们,没有错误,但权限仍然存在,并且使用的查询v_get_obj_priv_by_user
不断返回相同的结果。
显然,当我稍后尝试删除用户时,会出现以下错误:
SQL 错误 [2BP01]:错误:无法删除用户“user1”,因为某些对象依赖于它详细信息:属于用户 user1 的新关系的默认权限的所有者
知道我做错了什么吗?谢谢!
我有一个网站,我想使用其专有的 ODBC 驱动程序连接到 SAGE ACCDATA 文件夹(该文件夹位于不同的服务器上,但与 Intranet 服务器位于同一网络上)。
出于安全目的,我试图找出允许此连接所需的最小文件夹权限。
如果我向文件夹授予“Everyone”权限,则无论应用程序池身份如何,连接都会正常工作,同样,如果我向文件夹授予“网络”安全主体/SID(包含通过网络连接登录的所有用户的组)。无论应用程序池身份如何,连接都可以正常工作。
我似乎在任何地方都找不到这个文档,事实上,我能找到的关于 ODBC 的唯一文档说给它“每个人”,没有提到“网络”!
PS 我知道我应该保留 admin 作为权限,那很好,我想锁定实际的 ODBC 所需权限以读取数据。
我有一个 MySQL 8 数据库,我向其授予了如下所有权限的用户:
GRANT ALL ON test_db.* TO 'test_user'@'%';
当我以该用户身份登录 mysql 并运行以下命令时,出现错误提示ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD or FLUSH_TABLES privilege(s) for this operation
FLUSH TABLES;
我认为 GRANT ALL 权限已经给了这个用户 RELOAD 或 FLUSH_TABLES 权限?
我该如何解决?
我计划使用 Azure 数据工厂将我的索引维护与我的 Azure SQL 数据库(无服务器)中的其他作业进行协调。该作业将由我的 ADF 服务的托管身份运行,并且 MI 已添加到“db_datareader”、“db_datawriter”和“db_ddladmin”角色,并被授予 EXECUTE 权限。
统计信息更新有效,但之后我收到此错误:
Sql 错误号:50000。错误消息:Msg 297,用户无权执行此操作。
我的 MI 缺少哪些权限?如果可能,我想避免将其设为“db_owner”
在 Azure Synapse 专用 SQL 池中,我有以下设置:
-- a custom DB role to manage privileges
CREATE ROLE [owner];
-- there is a schema owned by this role
CREATE SCHEMA [myschema] AUTHORIZATION [owner];
-- an Azure AD group to allow its members to log in
CREATE USER [radish] FROM EXTERNAL PROVIDER;
-- the AAD group is a member of the owner role
EXEC sp_addrolemember 'owner', 'radish';
-- privileges are assigned exclusively through custom DB roles
GRANT ALTER, CONTROL on SCHEMA::[myschema] TO [owner];
如果我作为 AAD 组的成员登录,radish
则无法在以下位置创建表myschema
:
CREATE TABLE [myschema].[test] (id int);
Msg 6004, Level 14, State 9, Line 1
User does not have permission to perform this action.
一旦我获得 Synapse 管理员角色,就可以了。(当一个成员时,SESSION_USER
是dbo
。)这并不奇怪,因为这个角色基本上可以做给定工作区的 SQL 池中的所有事情。
但是,当我从 Synapse 管理员角色中删除自己时,会发生以下情况:
DROP TABLE [myschema].[test];
-- completes successfully, but then:
CREATE TABLE [myschema].[test] (id int);
Msg 6004, Level 14, State 9, Line 1
User does not have permission to perform this action.
可能我对彼此之间的必要特权CREATE TABLE
和DROP TABLE
相互关联的理解是完全错误的,但直到现在我认为这是两者都需要的相同特权。有人可以告诉我我的想法在哪里错了吗?
到目前为止,我看到了以下可能性:
owner
角色不适用于仅间接成为其成员的用户(即通过 AAD 组的成员身份) - 这似乎与https://learn.microsoft.com/en-us/azure/synapse-analytics/security相矛盾/how-to-set-up-access-control#step-8-add-users-to-security-groupssp_tables
报告owner
为table_owner
.另外,有趣的是,我可以GRANT ALTER, CONTROL on SCHEMA::[myschema] TO [owner];
成功地创建表,而创建表失败。
在 SQL Server 2019 中,我创建了一个用户定义的数据库角色MyDbRole
。
现在我想为MyDbRole
数据库中的所有表授予以下权限。
CREATE, SELECT, UPDATE, DELETE, ALTER
问题:完成此任务需要什么最小权限。如果我要请求 DBA 给我一个权限,以便我可以授予以下MyDbRole
权限,我应该向 dba 请求什么权限。我猜,它与WITH GRANT OPTION
,但我不太确定我需要什么许可?
更新:请注意,我们不允许使用内置数据库角色,例如 db_datawriter、db_ddladmin,因为这些角色会给用户提供比所需更多的权限)。参考
我的本地 PC 上有一个 txt 文件。我运行连接到远程 MSSQL 的本地 Java 应用程序。现在我需要将该文本文件中的批量插入到我的数据库表中。
但是,SQL 登录无法读取我的文件。我得到:
原因:com.microsoft.sqlserver.jdbc.SQLServerException:无法批量加载,因为无法打开文件“D:/My_Files/my_file.txt”。操作系统错误代码 21(设备未准备好。)
我为“所有人”设置了 My_Files 文件夹的权限。我无法创建与 SQL 登录名相同的 Windows 用户,因为它对于 Windows 用户来说太长了。有解决办法吗?
我正在使用不是我设计的 SQL Server 2016 数据库,也无法从根本上更改安全结构。我知道这可能是垃圾/最差的做法,但我必须玩我目前处理的那手牌。我试图限制对模式的访问仅限于角色的成员,但每个人似乎都有 db_datareader 成员资格。以下是详细信息:
我们将 ETL 将一些新数据写入现有数据库中他们自己的表中。所有这些“新”表都需要访问限制,因此只有某些用户可以查看。这是我的想法(使用假名):
GRANT SELECT ON SCHEMA::secret_schema TO secret_schema_reader
这里的目标是只有“secret_schema_reader”角色的成员才能查看“secret_schema”模式内的表中的数据。问题是这个数据库的前任管理员只是将用户“db_datareader”授予数据库,这似乎胜过我尝试的角色安全性。
除了对安全/权限结构进行全面改革外,我还有其他选择吗?
在 Azure SQL 实例上运行这些命令时:
CREATE LOGIN test WITH PASSWORD=N'Passw0rd'
GO
ALTER ROLE dbmanager ADD MEMBER test
GO
...我收到一个错误:
Cannot add the server principal 'test', because it does not exist or you do not have permission.
我也试过这个:
ALTER SERVER ROLE dbmanager ADD MEMBER test
GO
我已经验证登录存在。我以服务器的系统管理员身份登录。
显然,我在一年前就能让它工作:如何将登录名添加到 dbcreator 角色?但那是那时,这就是现在。它行不通。
然而,基本问题仍然相同:我需要能够在给定登录名的范围内创建一个数据库,然后让该登录名能够操作新数据库(包括 DDL),所有这些都无需通过 db 进行手动干预脚本。(这用于实体框架代码优先迁移,如果它不存在,可以配置为自动创建连接字符串中命名的数据库。)
SQL Server 中存在此功能(通过向dbcreator
角色添加登录名),但 Azure SQL 被证明是一个更难破解的难题。
另外:我注意到Special Roles 的文档中存在冲突,并且我已经就此事提出了一个问题。我不知道这是否与我的错误有关,但我认为值得一提。
如何启用登录以在 Azure SQL 中创建新数据库,以使登录作为具有读/写/ddl 权限的用户自动添加到新数据库中?