首页 > 解决方案 > 如何限制用户对特定模式的访问?

问题描述

我正在尝试授予用户对特定架构的访问权限。这意味着他们将能够访问特定模式中的对象并仅在该特定模式中创建/更改/管理对象。

已尝试执行以下代码,但看起来它可能提供在整个数据库上创建对象的访问权限。

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]

关于如何进行此操作的任何建议?

提前致谢。

标签: sqlsql-serverdatabase-securityazure-sql-data-warehouse

解决方案


已尝试执行以下代码,但看起来它可能提供在整个数据库上创建对象的访问权限。

它不是。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 。


推荐阅读