GRANT DATABASE ROLE … TO SHARE

GRANT DATABASE ROLE … TO SHARE

데이터베이스 역할(database role)을 공유(share)에 부여하는 명령이에요. 데이터베이스 역할을 부여하면 단일 데이터베이스에 대한 권한이 공유에 효과적으로 추가되며, 이 공유를 하나 이상의 소비자 계정과 공유할 수 있어요.

출처: 문서

본문

소비자가 공유에서 데이터베이스를 만든 후, 공유된 데이터베이스 역할을 계정의 역할에 부여하여 그 역할을 가진 사용자가 공유의 데이터베이스 객체에 접근할 수 있게 할 수 있어요.

구문 (Syntax)

GRANT DATABASE ROLE <name>
  TO SHARE <share_name>

파라미터

  • name — 데이터베이스 역할의 식별자(이름)를 지정해요. 역할이 생성되는 데이터베이스 내에서 고유해야 해요. 식별자는 알파벳 문자로 시작해야 하며, 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 묶은 식별자는 대소문자를 구분해요. 식별자가 db_name.database_role_name 형식으로 정규화되지 않았다면, 명령은 세션의 현재 데이터베이스에서 데이터베이스 역할을 찾아요.
  • share_name — 지정된 데이터베이스 역할이 부여되는 공유의 식별자를 지정해요.

사용 메모 (Usage notes)

  • 데이터베이스 역할에 DDL 또는 기타 제한된 권한이 부여되었으면 데이터베이스 역할을 공유에 부여하는 것은 실패해요. 데이터베이스 역할은 데이터베이스와 그 객체에 대한 읽기 전용 활동에만 권한을 부여할 수 있어요.
  • 공유된 데이터베이스 역할은 future grants를 지원하지 않아요. Snowflake는 취하는 작업에 따라 다음 오류 메시지를 반환해요:
    • 객체에 future 권한을 데이터베이스 역할에 부여하고 데이터베이스 역할을 공유에 부여하면:
    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    
    Cannot share a database role with future grants to it.
    
    • 데이터베이스 역할을 공유에 부여하고 객체에 future 권한을 데이터베이스 역할에 부여하면:
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    
    Cannot grant future grants to a database role that is granted to a share.
    
  • 다음 명령으로 데이터베이스 역할에 연결된 future grants가 있는지 식별하여 이러한 오류 메시지를 피할 수 있어요:
SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;

예시 (Examples)

데이터베이스 d1의 데이터베이스 역할 dr1을 공유 share1에 부여해요:

GRANT DATABASE ROLE d1.dr1 TO SHARE share1;

더 알아보기 (Learn more)