sql - 如何限制用户对特定模式的访问?
问题描述
我正在尝试授予用户对特定架构的访问权限。这意味着他们将能够访问特定模式中的对象并仅在该特定模式中创建/更改/管理对象。
已尝试执行以下代码,但看起来它可能提供在整个数据库上创建对象的访问权限。
CREATE ROLE [NewRole]
GO
CREATE SCHEMA [schema1]
GO
ALTER AUTHORIZATION ON SCHEMA::schema1 TO [NewRole]
GO
GRANT ALTER ON SCHEMA::[schema1] TO [NewRole]
GO
GRANT CREATE TABLE TO [NewRole]
GO
GRANT CREATE VIEW TO [NewRole]
GO
GRANT CREATE PROCEDURE TO [NewRole]
关于如何进行此操作的任何建议?
提前致谢。
解决方案
已尝试执行以下代码,但看起来它可能提供在整个数据库上创建对象的访问权限。
它不是。CREATE DATABASE 只能在整个数据库上授予,但不会自动授予您将对象放入任何模式的能力。您还需要目标模式的 ALTER 权限,通常通过成为目标模式的所有者来获得。
所以这就是你所需要的:
CREATE ROLE [NewRole]
GO
CREATE SCHEMA [schema1]
GO
ALTER AUTHORIZATION ON SCHEMA::schema1 TO [NewRole]
GO
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO [NewRole]
您真的永远不需要在模式上授予 ALTER 。
推荐阅读
- android - 在android应用程序中硬编码用户名和密码
- javascript - Jenkins CI E2E:不禁用量角器和硒指定的Firefox下载弹出窗口
- r - 在闪亮服务器上使用来自闪亮日志的 store_json() 的问题
- sql-server - 我们如何计算每天最后三天订购的唯一用户 ID?
- graphql - 在 apollo-client 的 useQuery 中使用 fetchPolicy='cache-and-network' 不会更新 fetch 上的缓存更多
- python - Selenium - 断言元素存在
- python - CV2,更改 .mp4 文件的编解码器?
- git - git 在静默/安静/非详细模式下恢复?
- android - 新的 Xamarin Forms 4.6 MediaElement 不适用于 Android
- c# - Blazor CascadingValue 以编程方式