GRANT <권한>

보안 오브젝트에 대한 하나 이상의 액세스 권한을 역할 또는 데이터베이스 역할에 부여합니다. 부여할 수 있는 권한은 오브젝트별로 다릅니다.

보안 오브젝트에 대한 권한을 공유에 부여하는 방법에 대한 자세한 내용은 GRANT <권한> … TO SHARE 섹션을 참조하십시오.

역할:

역할에 부여할 수 있는 권한은 다음 카테고리로 분류됩니다.

  • 전역 권한

  • 리소스 모니터, 가상 웨어하우스, 데이터베이스 등 계정 오브젝트의 권한.

  • 스키마의 권한.

  • 테이블, 뷰, 스테이지, 파일 형식, UDF, 시퀀스 등 스키마 오브젝트의 권한.

데이터베이스 역할:

데이터베이스 역할에 부여할 수 있는 권한은 다음 카테고리로 분류됩니다.

  • 데이터베이스 역할을 포함하는 데이터베이스에 대한 권한.

  • 데이터베이스 역할을 포함하는 데이터베이스의 스키마에 대한 권한.

  • 데이터베이스 역할을 포함하는 데이터베이스에서 테이블, 뷰, 스테이지, 파일 형식, UDF, 시퀀스 등 스키마 오브젝트의 권한.

역할 및 보안 오브젝트에 대한 자세한 내용은 액세스 제어의 개요 를 참조하십시오.

변형:

GRANT OWNERSHIP , GRANT <권한> … TO SHARE

참고 항목:

REVOKE <권한>

구문

계정 역할:

GRANT {  { globalPrivileges         | ALL [ PRIVILEGES ] } ON ACCOUNT
       | { accountObjectPrivileges  | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
       | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
       | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> } }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
      }
  TO [ ROLE ] <role_name> [ WITH GRANT OPTION ]
Copy

데이터베이스 역할:

GRANT {  { CREATE SCHEMA | MODIFY | MONITOR | USAGE } [ , ... ] } ON DATABASE <object_name>
       | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
       | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> } }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
      }
  TO DATABASE ROLE <database_role_name> [ WITH GRANT OPTION ]
Copy

여기서

globalPrivileges ::=
  {
      CREATE {
                ACCOUNT | COMPUTE POOL | DATA EXCHANGE LISTING | DATABASE | FAILOVER GROUP | INTEGRATION
                | NETWORK POLICY | EXTERNAL VOLUME | REPLICATION GROUP | ROLE | SHARE
                | USER | WAREHOUSE
      }
      | APPLY { { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | TAG }
      | ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
      | EXECUTE { ALERT | TASK }
      | IMPORT SHARE
      | MANAGE { GRANTS | LISTING AUTO FULFILLMENT | WAREHOUSES }
      | MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
      | MONITOR { EXECUTION | SECURITY | USAGE }
      | OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
  }
  [ , ... ]
Copy
accountObjectPrivileges ::=
-- For COMPUTE POOL
   { MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For DATABASE
   { APPLYBUDGET | CREATE { DATABASE ROLE | SCHEMA } | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
   { USAGE } [ , ... ]
-- For FAILOVER GROUP
   { FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
   { USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
   { MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
   { MODIFY | MONITOR } [ , ... ]
-- For USER
   { MONITOR } [ , ... ]
-- For WAREHOUSE
   { APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
Copy
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| APPLYBUDGET

| CREATE {
      ALERT | DYNAMIC TABLE | EXTERNAL TABLE | FILE FORMAT | FUNCTION | HYBRID TABLE | IMAGE REPOSITORY |
      | ICEBERG TABLE | MATERIALIZED VIEW | MODEL | NETWORK RULE | PIPE | PROCEDURE
      | { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | SERVICE
      | SECRET | SEQUENCE | STAGE | STREAM | STREAMLIT
      | SNOWFLAKE.CORE.BUDGET |
      | SNOWFLAKE.ML.ANOMALY_DETECTION | SNOWFLAKE.ML.FORECAST
      | TAG | TABLE | TASK | VIEW
  }
| MODIFY | MONITOR | USAGE
[ , ... ]
Copy
schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DYNAMIC TABLE
     MONITOR, OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { INSERT | SELECT } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, or SEQUENCE
     USAGE [ , ... ]
  -- For HYBRID TABLE
     { INSERT | SELECT | UPDATE } [ , ... ]
  -- For IMAGE REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For ICEBERG TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     READ, USAGE [ , ... ]
  -- For SERVICE
     { USAGE | MONITOR | OPERATE } [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For STREAMLIT
     USAGE [ , ... ]
  -- For TABLE
     { APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For TAG
     READ
  -- For TASK
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For VIEW
     { REFERENCES | SELECT } [ , ... ]
  -- For MATERIALIZED VIEW
     { APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
Copy

각 오브젝트 유형에 지원되는 권한에 대한 자세한 내용은 액세스 제어 권한 을 참조하십시오.

필수 매개 변수

object_name

권한이 부여된 오브젝트의 식별자를 지정합니다.

object_type

스키마 수준 오브젝트의 유형을 지정합니다.

  • AGGREGATION POLICY

  • ALERT

  • AUTHENTICATION POLICY

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • HYBRID TABLE

  • IMAGE REPOSITORY

  • ICEBERG TABLE

  • MASKING POLICY

  • MATERIALIZED VIEW

  • MODEL

  • NETWORK RULE

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PROCEDURE

  • PROJECTION POLICY

  • ROW ACCESS POLICY

  • SECRET

  • SERVICE

  • SESSION POLICY

  • SEQUENCE

  • STAGE

  • STREAM

  • TABLE

  • TAG

  • TASK

  • VIEW

object_type_plural

object_type 의 복수형(예: TABLES, VIEWS).

파이프에 대한 대량 부여는 허용되지 않습니다.

role_name

수신자 역할의 식별자를 지정합니다(즉, 권한이 부여되는 역할).

database_role_name

수신자 데이터베이스 역할의 식별자를 지정합니다(즉, 권한이 부여되는 역할). If the identifier is not fully qualified in the form of db_name.database_role_name, the command looks for the database role in the current database for the session.

모든 권한은 데이터베이스 역할을 포함하는 데이터베이스뿐 아니라 동일한 데이터베이스의 다른 오브젝트로도 제한됩니다.

선택적 매개 변수

FUTURE

기존 오브젝트가 아닌 지정된 형식(예: 테이블 또는 뷰)의 새로운(즉, 향후) 데이터베이스 또는 스키마 오브젝트에 대해 권한이 부여되도록 지정합니다. ON FUTURE 키워드와 함께 REVOKE <권한> 을 사용하면 언제든지 향후 권한 부여를 취소할 수 있습니다. 기존 오브젝트에 부여된 모든 권한은 유지됩니다. 향후 권한 부여에 대한 자세한 내용은 이 항목의 데이터베이스 또는 스키마 오브젝트에 대한 향후 권한 부여 를 참조하십시오.

WITH GRANT OPTION

지정된 경우 수신자 역할이 다른 역할에 권한을 부여하도록 허용합니다.

기본값: 값 없음(수신자 역할은 다른 역할에 권한을 부여할 수 없다는 의미임)

참고

WITH GRANT OPTION 매개 변수는 IMPORTED PRIVILEGES 권한을 지원하지 않습니다. 자세한 내용은 공유 데이터베이스에 권한 부여하기 섹션을 참조하십시오.

사용법 노트

  • 모든 클래스에 대해 직접 권한을 부여하거나 취소할 수 없습니다. 그러나 클래스의 인스턴스를 만들고 계정 역할에 인스턴스 역할 을 부여할 수 있습니다. 클래스의 인스턴스를 생성하는 역할을 활성화하려면 스키마에 대한 CREATE <class_name> 권한을 부여하십시오.

  • 오브젝트(또는 스키마에서 지정된 유형의 모든 오브젝트)에 대한 OWNERSHIP 권한을 역할에 부여하여 오브젝트의 소유권을 한 역할에서 다른 역할로 이전하려면 대신 GRANT OWNERSHIP 을 사용하십시오. GRANT OWNERSHIP 명령에 다른 구문이 있습니다.

  • 단일 GRANT 문에서 같은 오브젝트 유형에 대해 여러 권한을 지정하거나(각 권한은 쉼표로 구분됨) 특수 ALL [ PRIVILEGES ] 키워드를 사용하여 지정된 오브젝트 유형에 적용 가능한 모든 권한을 부여할 수 있습니다. 하지만 GRANT 명령을 실행하는 역할이 보유하고 부여할 수 있는 권한만 실제로 대상 역할에 부여됩니다. 부여할 수 없는 모든 권한에 대해 경고 메시지가 반환됩니다.

    • 태그에는 이 키워드를 지정할 수 없습니다.

    • 스키마에 대한 ALL 권한을 부여하려고 하면 이 키워드는 클래스에 대한 권한을 부여하지 않습니다. 역할이 특정 클래스의 인스턴스를 생성하도록 허용하려면 클래스 예시에 표시된 대로 CREATE 권한을 직접 부여하십시오.

  • 특정 역할에 부여된 권한은 역할이 부여된 다른 역할뿐 아니라, 역할 계층 구조 내에서 다른 더 높은 수준의 역할이 자동으로 상속합니다. 자세한 내용은 액세스 제어의 개요 섹션을 참조하십시오.

  • 데이터베이스의 경우 IMPORTED PRIVILEGES 권한은 공유 데이터베이스(즉, 공유에서 만든 데이터베이스)에만 적용됩니다. 자세한 내용은 공유 데이터 소비하기 섹션을 참조하십시오. 데이터베이스 역할에는 IMPORTED PRIVILEGES 권한을 부여할 수 없습니다.

  • 스키마와 스키마의 오브젝트에 대해, 컨테이너 내에서 같은 유형의 모든 오브젝트(즉, 데이터베이스 또는 스키마)에 대한 권한을 부여하기 위해 ALL object_type_plural in container 옵션이 제공됩니다. 이것은 편리한 옵션입니다. 내부적으로, 이 명령은 각 오브젝트에 대한 일련의 개별 GRANT 명령으로 확장됩니다. 현재 컨테이너 내에 있는 오브젝트만 영향을 받습니다.

    하지만 Snowflake 모델에서 권한을 대량으로 부여하는 것은 권장되는 방법이 아닙니다. 대신, Snowflake는 공유 역할을 만들고 그 역할을 사용해 역할이 부여된 모든 사용자에게 자동으로 액세스할 수 있는 오브젝트를 만들 것을 권장합니다.

  • 관리되는 액세스 스키마에서는 다음과 같습니다.

    • 오브젝트에 대한 OWNERSHIP 권한은 스키마 소유자의 하위 역할에만 이전될 수 있습니다.

  • 스테이지에 대해서는 다음과 같습니다.

    • USAGE는 외부 스테이지에만 적용됩니다.

    • READ | WRITE는 내부 스테이지에만 적용됩니다. 또한, 내부 스테이지에 대해 WRITE 권한을 부여하려면 먼저 스테이지에 대해 READ 권한을 부여해야 합니다.

    외부 및 내부 스테이지에 대한 자세한 내용은 CREATE STAGE 를 참조하십시오.

  • 개별 UDF 또는 저장 프로시저에 대한 권한을 부여할 때, 아래 표시된 구문을 사용하여 인자의 데이터 타입(있는 경우)을 지정해야 합니다.

    <udf_or_stored_procedure_name> ( [ <arg_data_type> [ , ... ] ] )
    
    Copy

    Snowflake는 인자 데이터 타입을 사용하여, 스키마 내에서 동일한 이름을 가진 UDF 또는 저장 프로시저를 확인합니다. 자세한 내용은 프로시저 및 함수 오버로딩하기 섹션을 참조하십시오.

  • 동적 테이블의 경우 동적 테이블이 포함된 데이터베이스 및 스키마와 테이블을 새로 고치는 데 사용되는 웨어하우스에 대한 USAGE 권한을 수신 역할에 부여해야 합니다. 자세한 내용은 동적 테이블 액세스 제어 섹션을 참조하십시오.

액세스 제어 요구 사항

개별 오브젝트에 대한 권한 부여하기:

일반적으로 다음 권한 집합 중 하나를 가진 역할은 오브젝트에 대한 권한을 다른 역할에 부여할 수 있습니다.

  • 전역 MANAGE GRANTS 권한.

    SECURITYADMIN 및 ACCOUNTADMIN 시스템 역할만 MANAGE GRANTS 권한을 갖지만, 사용자 지정 역할에 이 권한을 부여할 수 있습니다.

  • 오브젝트에 대한 OWNERSHIP 권한. 스키마 오브젝트(예: 테이블 및 뷰)에 대한 권한을 부여할 때 역할에는 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 있어야 합니다.

  • GRANT <권한> … TO ROLE 문에 포함된 WITH GRANT OPTION 매개 변수로 역할에 권한을 부여한 경우, 해당 역할은 다른 역할에도 동일 권한을 부여할 수 있습니다.

관리되는 액세스 스키마(즉, CREATE SCHEMA … WITH MANAGED ACCESS 구문을 사용하여 만든 스키마)에서 오브젝트 소유자는 권한 부여 결정을 내릴 수 없게 됩니다. 스키마 소유자(즉, 스키마에 대한 OWNERSHIP 권한을 가진 역할) 또는 전역 MANAGE GRANTS 권한을 가진 역할만 스키마의 오브젝트에 대한 권한을 부여할 수 있습니다.

전역 MANAGE GRANTS 권한을 보유하는 역할은 현재(부여자) 역할에 추가 권한을 부여할 수 있습니다.

지정된 유형의 향후 오브젝트에 대한 권한 부여 정의하기:

데이터베이스 수준

데이터베이스의 향후 오브젝트에 대한 권한을 부여하려면 전역 MANAGE GRANTS 권한이 필요합니다. SECURITYADMIN 및 ACCOUNTADMIN 시스템 역할만 MANAGE GRANTS 권한을 갖지만, 사용자 지정 역할에 이 권한을 부여할 수 있습니다.

스키마 수준

관리되는 액세스 스키마(즉, CREATE SCHEMA … WITH MANAGED ACCESS 구문을 사용하여 만든 스키마)에서는 스키마 소유자(즉, 스키마에 대한 OWNERSHIP 권한을 가진 역할) 또는 전역 MANAGE GRANTS 권한을 가진 역할이 스키마의 향후 오브젝트에 대한 권한을 부여할 수 있습니다.

표준 스키마에서 스키마의 향후 오브젝트에 대한 권한을 부여하려면 전역 MANAGE GRANTS 권한이 필요합니다.

지정된 유형의 향후 오브젝트에 대한 권한 부여의 정의에 대한 자세한 내용은 (이 항목의) 데이터베이스 또는 스키마 오브젝트에 대한 향후 권한 부여 를 참조하십시오.

데이터베이스 또는 스키마 오브젝트에 대한 향후 권한 부여

이 섹션의 참고 사항은 스키마 또는 데이터베이스의 오브젝트에 대한 향후 권한 부여를 지정할 때(즉, ON FUTURE 키워드를 사용할 때) 적용됩니다.

자세한 내용은 관리되는 액세스 스키마 를 참조하십시오.

고려 사항

  • 데이터베이스와 같은 데이터베이스의 스키마에 대해 동일한 오브젝트 유형에서 향후 권한 부여가 정의되면 스키마 수준 권한 부여가 데이터베이스 수준의 권한 부여보다 우선하며, 데이터베이스 수준의 권한 부여는 무시됩니다. 이 동작은 한 역할 또는 다른 역할에 부여된 향후 오브젝트에 대한 권한에 적용됩니다.

    예를 들어 다음 문은 데이터베이스 수준과 스키마 수준에서 동일한 유형의 오브젝트에 대해 서로 다른 권한을 부여합니다.

    데이터베이스 d1 의 모든 향후 스키마에 대한 SELECT 권한을 역할 r1 에 부여합니다.

    GRANT SELECT ON FUTURE TABLES IN DATABASE d1 TO ROLE r1;
    
    Copy

    d1.s1 스키마에서 모든 향후 테이블에 대한 INSERT 및 DELETE 권한을 r2 역할에 부여합니다.

    GRANT INSERT,DELETE ON FUTURE TABLES IN SCHEMA d1.s1 TO ROLE r2;
    
    Copy

    r1 역할에 할당된 향후 권한 부여는 완전히 무시됩니다. 스키마 d1.s1 에 새 테이블이 생성될 때 r2 역할에 대해 테이블에 정의된 향후 권한만 부여됩니다.

  • 데이터베이스 수준의 향후 권한 부여는 일반 및 관리되는 액세스 스키마 에 모두 적용됩니다.

제약 및 제한 사항

  • 각 보안 오브젝트 타입에 대한 OWNERSHIP 권한의 향후 권한 부여는 두 번 이상 허용되지 않습니다.

  • 다음 유형의 오브젝트에는 향후 권한 부여를 정의할 수 없습니다.

    • 컴퓨팅 풀

    • 외부 함수

    • 이미지 리포지토리

    • 정책 오브젝트:

      • 집계 정책

      • 마스킹 정책

      • 패키지 정책

      • 프로젝션 정책

      • 행 액세스 정책

      • 세션 정책

    • 태그

  • 데이터베이스에서 지정된 유형의 오브젝트에 대한 OWNERSHIP 권한의 향후 권한 부여는 관리되는 액세스 스키마의 새 오브젝트에 적용되지 않습니다.

  • 관리되는 액세스 스키마의 오브젝트에 대한 향후 권한 부여에는 다음 제한 사항이 적용됩니다.

    • 오브젝트에 대한 OWNERSHIP 권한의 향후 권한 부여는 스키마 소유자(즉 , 스키마에 대한 OWNERSHIP 권한을 가진 역할)의 하위 역할에만 적용할 수 있습니다.

    • 먼저 ON FUTURE 키워드와 함께 REVOKE <권한> 을 사용하여 OWNERSHIP 권한의 모든 공개적인 향후 권한 부여를 취소해야 관리되는 액세스 스키마의 소유권을 다른 역할로 이전할 수 있습니다.

  • 테이블 이름을 바꾸거나 교체하는 경우에는 향후 권한 부여가 적용되지 않습니다.

  • 다음 제한 사항이 있는 명명된 스테이지에서 향후 권한 부여가 지원됩니다.

    • READ 권한 없이는 WRITE 권한을 지정할 수 없습니다.

    • WRITE 권한이 있으면 READ 권한을 취소할 수 없습니다.

    • 내부 스테이지의 경우 READ 또는 WRITE 권한이 있는 향후 권한 부여만 구체화됩니다.

    • 외부 스테이지의 경우 USAGE 권한이 포함된 향후 권한 부여만 구체화됩니다.

역할

report_wh 웨어하우스를 운영(즉, 일시 중단 또는 재개)하는 데 필요한 권한을 analyst 역할에 부여합니다.

GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst;
Copy

이전 예와 같지만, analyst 역할이 다른 역할에 권한을 부여하도록 허용합니다.

GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst WITH GRANT OPTION;
Copy

mydb.myschema 스키마의 모든 기존 테이블에 대한 SELECT 권한을 analyst 역할에 부여합니다.

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema to ROLE analyst;
Copy

mydb.myschema 스키마의 두 UDFs에 대한 모든 권한을 analyst 역할에 부여합니다.

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number) TO ROLE analyst;

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string) TO ROLE analyst;
Copy

UDFs에 서로 다른 인자가 있는데, 이는 Snowflake가 같은 이름을 가진 UDFs를 고유하게 식별하는 방식입니다. UDF 명명에 대한 자세한 내용은 사용자 정의 함수 개요 를 참조하십시오.

mydb.myschema 스키마의 저장 프로시저에 대한 사용 권한을 analyst 역할에 부여합니다.

GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO ROLE analyst;
Copy

저장 프로시저 이름(예: UDF 이름)은 오버로딩될 수 있으므로 인자의 데이터 타입을 지정해야 합니다. 이름 오버로딩에 대한 자세한 내용은 프로시저 및 함수 오버로딩하기 섹션을 참조하십시오.

지정된 스키마에서 구체화된 뷰를 만들려면 이 권한을 부여하십시오.

GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema TO ROLE myrole;
Copy

mydb.myschema 스키마에서 생성된 모든 향후 테이블에 대한 SELECT 및 INSERT 권한을 role1 역할에 부여합니다.

GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema
TO ROLE role1;
Copy

mydb 데이터베이스의 모든 향후 스키마에 대한 USAGE 권한을 role1 역할에 부여합니다.

use role accountadmin;

grant usage on future schemas in database mydb to role role1;
Copy

데이터베이스 역할

mydb.myschema 스키마의 모든 기존 테이블에 대한 SELECT 권한을 mydb.dr1 데이터베이스 역할에 부여합니다.

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

mydb.myschema 스키마의 두 UDFs에 대한 모든 권한을 mydb.dr1 데이터베이스 역할에 부여합니다.

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number)
  TO DATABASE ROLE mydb.dr1;

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string)
  TO DATABASE ROLE mydb.dr1;
Copy

UDFs에 서로 다른 인자가 있는데, 이는 Snowflake가 같은 이름을 가진 UDFs를 고유하게 식별하는 방식입니다. UDF 명명에 대한 자세한 내용은 사용자 정의 함수 개요 를 참조하십시오.

mydb.myschema 스키마의 저장 프로시저에 대한 사용 권한을 mydb.dr1 데이터베이스 역할에 부여합니다.

GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number)
  TO DATABASE ROLE mydb.dr1;
Copy

저장 프로시저 이름(예: UDF 이름)은 오버로딩될 수 있으므로 인자의 데이터 타입을 지정해야 합니다. 저장 프로시저 오버로딩에 대한 자세한 내용은 프로시저 및 함수 오버로딩하기 섹션을 참조하십시오.

지정된 스키마에서 구체화된 뷰를 만드는 권한을 mydb.dr1 데이터베이스 역할에 부여합니다.

GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

mydb.myschema 스키마에서 생성된 모든 향후 테이블에 대한 SELECT 및 INSERT 권한을 mydb.dr1 데이터베이스 역할에 부여합니다.

GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

mydb 데이터베이스의 모든 향후 스키마에 대한 USAGE 권한을 role1 역할에 부여합니다.

USE ROLE ACCOUNTADMIN;

GRANT USAGE ON FUTURE SCHEMAS IN DATABASE mydb
  TO DATABASE ROLE mydb.dr1;
Copy

클래스

계정 역할이 스키마에서 예산을 생성하도록 허용하려면 해당 역할에 스키마에 대한 CREATE SNOWFLAKE.CORE.BUDGET 권한을 부여하십시오.

USE ROLE ACCOUNTADMIN;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_admin;
Copy

계정 역할이 스키마에서 Snowflake Cortex ML 기반 함수 모델(예측, 변칙 검색 또는 분류)을 생성하도록 허용하려면 해당 역할에 스키마에 대한 적절한 권한을 부여하십시오. 다음과 같은 권한을 사용할 수 있습니다.

  • CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

  • CREATE SNOWFLAKE.ML.CLASSIFICATION

  • CREATE SNOWFLAKE.ML.FORECAST