启用非 ACCOUNTADMIN 角色执行数据共享任务

本主题列出了执行与共享相关的 SQL 操作所需的最低权限。

默认情况下,创建和管理共享所需的权限仅授予 ACCOUNTADMIN 角色,以确保只有账户管理员才能执行这些任务。但是,也可以将权限授予其他角色,从而将任务委派给账户中的其他用户。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

备注

如果向账户中的其他用户授予共享权限,请确保这些其他用户的用户简介包括名字、姓氏和电子邮件地址。要修改 Snowsight 中的用户简介,请参阅 向您的用户简介添加用户详细信息

数据提供商

数据提供商可选择以下 任一 选项,将对象添加到共享:

  • 选项 1: 在数据库中创建数据库角色,将对象的权限授予数据库角色,然后将数据库角色授予共享。

  • 选项 2: 将数据库和数据库对象的权限直接授予共享。

有关这些选项的更多信息,请参阅 选择如何共享数据库对象

在数据提供商或数据使用者账户中,创建和管理共享所需的最低权限,取决于使用的选项。

选项 1:

操作

权限

对象

备注

创建共享。

CREATE SHARE

账户

只有 ACCOUNTADMIN 角色默认具有此权限。可以根据需要将该权限授予其他角色。

在数据库中创建数据库角色。

CREATE DATABASE ROLE

数据库

仅数据库所有者角色(即具有 OWNERSHIP 数据库权限)默认具有此权限。可以根据需要将该权限授予其他角色。

选项 2:

操作

权限

对象

备注

创建共享。

CREATE SHARE

账户

只有 ACCOUNTADMIN 角色默认具有此权限。可以根据需要将该权限授予其他角色。

向共享授予或从共享中撤销对象的权限。

OWNERSHIP

共享

该角色还必须至少对具有授予选项的数据库对象具有以下权限:

  • 数据库上的 USAGE

  • 架构上的 USAGE

  • 所有表、外部表、安全视图或安全物化视图上的 SELECT

  • 安全 UDFs 上的 USAGE

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

注意

向其他角色授予 CREATE SHARE,使管理共享更加灵活,而且还允许具有这些角色的用户向其他账户公开他们拥有(或拥有必要权限的)的对象。如果要共享包含敏感数据或专有数据的账户中的数据,这一点尤其需要注意。

在将 CREATE SHARE 授予其他角色之前,请注意这一点。

阻止访问共享中的对象

拥有共享的角色,或拥有对象的角色,可以阻止访问共享中的对象:

  • 如果您的角色拥有共享,可以通过撤销共享中对象的权限来阻止访问。

  • 如果您的角色不拥有共享,但拥有共享中的对象,通过从共享所有者那里撤销对象的 USAGE 或 SELECT 权限以及 CASCADE,可以阻止访问。

备注

共享的所有权以及共享中的对象的所有权,可以直接授予角色,或从角色层次结构中的较低级别角色继承。有关更多详细信息,请参阅 角色层次结构和权限继承

同一角色可以拥有共享以及共享中的对象。

数据使用者

在使用者账户中,全局 IMPORT SHARE 权限允许查看与账户共享的入站共享。如果还向该角色授予了全局 CREATE DATABASE 权限,则该权限还允许从入站共享创建数据库。

IMPORT SHARE 权限

如果授予角色 IMPORT SHARE 权限,具有该角色的任何用户都可以执行以下任务:

  • 查看所有 INBOUND 共享(由提供商账户共享)。

  • 查看角色拥有的所有 OUTBOUND 共享。

  • 从入站共享创建数据库(如果还授予了角色全局 CREATE DATABASE 权限)

向其他角色授予权限

要向使用者账户中的非 ACCOUNTADMIN 角色授予全局 IMPORT SHARE 权限,请使用 ACCOUNTADMIN 角色和 GRANT <privileges> 命令。

例如,向 SYSADMIN 角色授予权限:

USE ROLE ACCOUNTADMIN;

GRANT IMPORT SHARE ON ACCOUNT TO SYSADMIN;
Copy
语言: 中文