【问题标题】:How to restrict access to users to a specific schema?如何限制用户对特定模式的访问?
【发布时间】:2019-09-12 17:52:27
【问题描述】:

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

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

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]

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

提前致谢。

【问题讨论】:

  • 您是否测试过是否确实如此?先试试看(不是说会不会,但在你尝试之前你不确定)。

标签: sql sql-server database-security azure-sql-data-warehouse


【解决方案1】:

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

它没有。 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2010-09-17
    • 2015-12-15
    • 2022-01-03
    • 1970-01-01
    • 2017-12-04
    • 2018-09-17
    • 2019-03-25
    相关资源
    最近更新 更多