GRANT
사용자 또는 역할에 대한 액세스 권한을 정의합니다.
권한에는 테이블 및 뷰의 데이터 읽기, 데이터 쓰기, 테이블 생성 및 테이블 삭제와 같은 액세스 옵션이 포함됩니다. 테이블, 데이터베이스, 스키마, 함수, 프로시저, 언어 또는 열에 대한 특정 권한을 부여하려면 이 명령을 사용합니다. 데이터베이스 객체에서 권한을 취소하려면 REVOKE 명령을 사용하세요.
권한에는 다음과 같은 데이터 공유 생산자 액세스 옵션도 포함됩니다.
-
소비자 네임스페이스 및 계정에 대한 데이터 공유 액세스 권한 부여
-
데이터 공유에 객체를 추가하거나 데이터 공유에서 객체를 제거하여 데이터 공유를 변경할 수 있는 권한 부여
-
데이터 공유에 소비자 네임스페이스를 추가하거나 데이터 공유에서 소비자 네임스페이스를 제거하여 데이터 공유를 공유할 수 있는 권한 부여
데이터 공유 소비자 액세스 옵션은 다음과 같습니다.
-
데이터 공유에서 생성된 데이터베이스 또는 해당 데이터베이스를 가리키는 외부 스키마에 대한 전체 액세스 권한을 사용자에게 부여
-
로컬 데이터베이스 객체에서와 마찬가지로 데이터 공유에서 생성된 데이터베이스에 대한 객체 수준 권한을 사용자에게 부여. 이 수준의 권한을 부여하려면 데이터 공유에서 데이터베이스를 만들 때 WITH PERMISSIONS 절을 사용해야 합니다. 자세한 내용은 데이터베이스 생성 단원을 참조하십시오.
데이터 공유 권한에 대한 자세한 내용은 데이터 공유 공유 섹션을 참조하세요.
데이터베이스 권한을 관리하고 데이터와 관련하여 사용자가 수행할 수 있는 작업을 제어하는 역할을 부여할 수도 있습니다. 역할을 정의하고 사용자에게 역할을 할당하여 사용자가 수행할 수 있는 작업을 제한할 수 있습니다 예를 들어, CREATE TABLE 및 INSERT 명령만 사용하도록 제한할 수 있습니다. CREATE ROLE 명령에 대한 자세한 내용은 역할 생성 섹션을 참조하세요. Amazon Redshift에는 사용자에게 특정 권한을 부여하는 데 사용할 수 있는 몇 가지 시스템 정의 역할이 있습니다. 자세한 내용은 Amazon Redshift 시스템 정의 역할 단원을 참조하십시오.
ON SCHEMA 구문을 사용하는 데이터베이스 사용자 및 사용자 그룹에 외부 스키마에 대한 사용 권한만 부여하거나 취소할 수 있습니다. AWS Lake Formation에서 ON EXTERNAL SCHEMA를 사용하는 경우 AWS Identity and Access Management(IAM) 역할에 대한 권한의 GRANT 및 REVOKE만 허용됩니다. 권한 목록은 구문을 참조하세요.
저장 프로시저의 경우 부여할 수 있는 유일한 권한은 EXECUTE입니다.
트랜잭션 블록(BEGIN ... END) 내에서 GRANT(외부 리소스에 대해)를 실행할 수 없습니다. 버전 관리에 대한 자세한 내용은 직렬화 가능 격리 단원을 참조하십시오.
데이터베이스에 대해 사용자에게 부여된 권한을 확인하려면 HAS_DATABASE_PRIVILEGE를 사용합니다. 스키마에 대해 사용자에게 부여된 사용 권한을 확인하려면 HAS_SCHEMA_PRIVILEGE를 사용합니다. 테이블에 대해 사용자에게 부여된 사용 권한을 확인하려면 HAS_TABLE_PRIVILEGE를 사용합니다.
구문
GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP | ALTER } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
다음은 Amazon Redshift 테이블 및 뷰에 대한 열 수준 권한에 대한 구문입니다.
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
다음은 지정된 역할을 가진 사용자 및 그룹에 부여된 ASSUMEROLE 권한에 대한 구문입니다. ASSUMEROLE 권한을 사용하기 시작하려면 ASSUMEROLE 권한 부여에 대한 사용 노트 섹션을 참조하세요.
GRANT ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
다음은 Lake Formation과 Redshift Spectrum 통합을 위한 구문입니다.
GRANT { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ] GRANT { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] TO { { IAM_ROLE iam_role } [, ...] | PUBLIC } [ WITH GRANT OPTION ] GRANT { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]
생산자 측 데이터 공유 권한
다음은 GRANT를 사용하여 사용자 또는 역할에 ALTER 또는 SHARE 권한을 부여할 때 사용하는 구문입니다. 사용자는 ALTER 권한으로 데이터 공유를 변경하거나 SHARE 권한으로 소비자에게 사용 권한을 부여할 수 있습니다. ALTER 및 SHARE는 데이터 공유에서 사용자 및 역할에 부여할 수 있는 유일한 권한입니다.
GRANT { ALTER | SHARE } ON DATASHARE datashare_name TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP
group_name
| PUBLIC } [, ...]
다음은 Amazon Redshift에서 데이터 공유 사용 권한에 GRANT를 사용하는 구문입니다. USAGE 권한을 사용하여 소비자에게 데이터 공유에 대한 액세스 권한을 부여합니다. 사용자 또는 사용자 그룹에는 이 권한을 부여할 수 없습니다. 이 권한은 GRANT 문에 대한 WITH GRANT OPTION도 지원하지 않습니다. 이전에 데이터 공유에 대한 SHARE 권한이 부여된 사용자 또는 사용자 그룹만 이 유형의 GRANT 문을 실행할 수 있습니다.
GRANT USAGE ON DATASHARE datashare_name TO NAMESPACE 'namespaceGUID' | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
다음은 Lake Formation 계정에 데이터 공유 사용 권한을 부여하는 방법의 예입니다.
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;
소비자 측 데이터 공유 권한
다음은 datashare에서 생성된 특정 데이터베이스 또는 스키마에 대한 GRANT datashare 사용 권한에 대한 구문입니다.
소비자가 데이터 공유에서 생성된 데이터베이스에 액세스하는 데 필요한 추가 권한은 데이터 공유에서 데이터베이스를 생성하는 데 사용된 CREATE DATABASE 명령에서 WITH PERMISSIONS 절을 사용했는지에 따라 달라집니다. CREATE DATABASE 명령과 WITH PERMISSIONS에 대한 자세한 내용은 데이터베이스 생성 섹션을 참조하세요.
WITH PERMISSIONS 절을 사용하지 않고 생성된 데이터베이스
WITH PERMISSIONS 절을 사용하지 않은 데이터 공유에서 생성된 데이터베이스에 USAGE를 부여하면 공유 데이터베이스의 객체에 대해 별도로 권한을 부여할 필요가 없습니다. WITH PERMISSIONS 절을 사용하지 않은 데이터 공유에서 생성된 데이터베이스에 대해 사용 권한을 부여받은 엔터티는 데이터베이스의 모든 객체에 대한 액세스 권한을 자동으로 갖게 됩니다.
WITH PERMISSIONS 절을 사용하여 생성된 데이터베이스
WITH PERMISSIONS 절을 사용하여 데이터베이스가 생성된 데이터 공유에 USAGE를 부여할 때 로컬 데이터베이스 객체에 대한 권한을 부여하는 것과 마찬가지로 공유 데이터베이스의 데이터베이스 객체에 대한 관련 권한을 소비자 측 자격 증명에 부여해야 액세스할 수 있습니다. 데이터 공유에서 만든 데이터베이스의 객체에 권한을 부여하려면 세 부분으로 구성된 database_name.schema_name.object_name
구문을 사용합니다. 공유 데이터베이스 내의 공유 스키마를 가리키는 외부 스키마의 객체에 권한을 부여하려면 두 부분으로 구성된 schema_name.object_name
구문을 사용합니다.
GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
범위가 지정된 권한을 사용하면 데이터베이스 또는 스키마 내 특정 유형의 모든 객체에 대한 권한을 사용자 또는 역할에 부여할 수 있습니다. 범위가 지정된 권한이 있는 사용자와 역할은 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대한 지정된 권한을 갖습니다.
다음은 사용자 또는 역할에 범위가 지정된 권한을 부여할 때 사용하는 구문입니다. 범위가 지정된 권한에 대한 자세한 내용은 범위가 지정된 권한 섹션을 참조하세요.
GRANT { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE db_name TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } } FOR TABLES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name} [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR FUNCTIONS IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR PROCEDURES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT USAGE FOR LANGUAGES IN {DATABASE db_name} TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]
범위가 지정된 권한은 함수에 대한 권한과 프로시저에 대한 권한을 구별하지 않습니다. 예를 들어 다음 문은 Sales_schema
스키마의 함수와 프로시저 모두에 대한 EXECUTE
권한을 bob
에게 부여합니다.
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
다음은 Amazon Redshift의 기계 학습 모델 권한을 위한 구문입니다.
GRANT CREATE MODEL TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
다음은 Amazon Redshift에서 역할 권한을 부여하기 위한 구문입니다.
GRANT { ROLE role_name } [, ...] TO { { user_name [ WITH ADMIN OPTION ] } | ROLE role_name }[, ...]
다음은 Amazon Redshift에서 역할에 시스템 권한을 부여하기 위한 구문입니다.
GRANT { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | ACCESS CATALOG | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE | TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } TO { ROLE role_name } [, ...]
다음은 EXPLAIN 계획에서 쿼리의 행 수준 보안 정책 필터를 설명할 권한을 부여하는 구문입니다. REVOKE 문을 사용하여 이 권한을 취소할 수 있습니다.
GRANT EXPLAIN RLS TO ROLE rolename
다음은 쿼리에 대한 행 수준 보안 정책을 우회할 수 있는 권한을 부여하는 구문입니다.
GRANT IGNORE RLS TO ROLE rolename
다음은 지정된 행 수준 보안 정책에 권한을 부여하는 구문입니다.
GRANT SELECT ON [ TABLE ] table_name [, ...] TO RLS POLICY policy_name [, ...]
파라미터
- SELECT
-
SELECT 문을 사용하여 테이블 또는 뷰에서 데이터를 선택하는 권한을 부여합니다. UPDATE 또는 DELETE 작업을 위해 기존의 열 값을 참조하는 데도 SELECT 권한이 필요합니다.
- INSERT
-
INSERT 문 또는 COPY 문을 사용하여 데이터를 테이블로 로드하는 권한을 부여합니다.
- UPDATE
-
UPDATE 문을 사용하여 테이블 열을 업데이트하는 권한을 부여합니다. UPDATE 작업에서는 테이블 열을 참조하여 업데이트할 행을 결정하거나 열에 대한 값을 새로 계산해야 하므로, SELECT 권한도 필요합니다.
- DELETE
-
테이블에서 데이터 행을 삭제하는 권한을 부여합니다. DELETE 작업에서는 테이블 열을 참조하여 삭제할 행을 결정해야 하므로, SELECT 권한도 필요합니다.
- DROP
-
테이블을 삭제하는 권한을 부여합니다. 이 권한은 Amazon Redshift와 Lake Formation에 사용되는 AWS Glue Data Catalog에 적용됩니다.
- REFERENCES
-
외래 키 제약 조건을 생성하는 권한을 부여합니다. 참조되는 테이블과 참조하는 테이블 모두에 대해 이 권한을 허용해야 하며, 그러지 않으면 사용자가 제약 조건을 생성할 수 없습니다.
- ALTER
-
데이터베이스 객체에 따라, 사용자 또는 사용자 그룹에 다음 권한을 부여합니다.
-
테이블의 경우 ALTER는 테이블 또는 뷰를 변경할 수 있는 권한을 부여합니다. 자세한 내용은 ALTER TABLE 단원을 참조하십시오.
-
데이터베이스의 경우 ALTER는 데이터베이스를 변경할 수 있는 권한을 부여합니다. 자세한 내용은 ALTER DATABASE 단원을 참조하십시오.
-
스키마의 경우 ALTER는 스키마를 변경할 수 있는 권한을 부여합니다. 자세한 내용은 ALTER SCHEMA 단원을 참조하십시오.
-
외부 테이블의 경우 ALTER는 Lake Formation에 활성화된 AWS Glue Data Catalog의 테이블을 변경할 수 있는 권한을 부여합니다. 이 권한은 Lake Formation을 사용하는 경우에만 적용됩니다.
-
- TRUNCATE
-
테이블을 자를 수 있는 권한을 부여합니다. 이 권한이 없으면 테이블 소유자 또는 수퍼유저만 테이블을 자를 수 있습니다. TRUNCATE 명령에 대한 자세한 내용은 TRUNCATE 섹션을 참조하세요.
- ALL [ PRIVILEGES ]
-
지정된 사용자 또는 역할에 사용 가능한 모든 권한을 한 번에 부여합니다. PRIVILEGES 키워드는 옵션입니다.
GRANT ALL ON SCHEMA는 외부 스키마에 대한 CREATE 권한을 부여하지 않습니다.
Lake Formation에 사용되는 AWS Glue Data Catalog의 테이블에 ALL 권한을 부여할 수 있습니다. 이 경우 개별 권한(예: SELECT, ALTER 등)이 Data Catalog에 기록됩니다.
참고
Amazon Redshift는 RULE 및 TRIGGER 권한을 지원하지 않습니다. 자세한 내용은 지원되지 않는 PostgreSQL 기능 섹션을 참조하세요.
- ASSUMEROLE
-
지정된 역할을 가진 사용자, 역할 또는 그룹에 COPY, UNLOAD, EXTERNAL FUNCTION 및 CREATE MODEL 명령을 실행하는 권한을 부여합니다. 사용자, 역할 또는 그룹은 지정된 명령을 실행할 때 해당 역할을 맡습니다. ASSUMEROLE 권한을 사용하기 시작하려면 ASSUMEROLE 권한 부여에 대한 사용 노트 섹션을 참조하세요.
- ON [ TABLE ] table_name
-
테이블 또는 뷰에 대해 지정된 권한을 부여합니다. TABLE 키워드는 옵션입니다. 하나의 문에 여러 개의 테이블과 뷰를 나열할 수 있습니다.
- ON ALL TABLES IN SCHEMA schema_name
-
참조되는 스키마에 있는 모든 테이블과 뷰에 대해 지정된 권한을 부여합니다.
- ( column_name [,...] ) ON TABLE table_name
-
Amazon Redshift 테이블 또는 뷰의 지정된 열에서 사용자, 그룹 또는 PUBLIC에 지정된 권한을 부여합니다.
- ( column_list ) ON EXTERNAL TABLE schema_name.table_name
-
참조된 스키마에서 Lake Formation 테이블의 지정된 열에 있는 IAM 역할에 지정된 권한을 부여합니다.
- ON EXTERNAL TABLE schema_name.table_name
-
참조된 스키마에서 지정된 Lake Formation 테이블의 IAM 역할에 지정된 권한을 부여합니다.
- ON EXTERNAL SCHEMA schema_name
-
참조된 스키마에 있는 IAM 역할에 지정된 권한을 부여합니다.
- ON iam_role
-
IAM 역할에 지정된 권한을 부여합니다.
- TO username
-
권한을 받는 사용자를 나타냅니다.
- TO IAM_ROLE iam_role
-
권한을 받는 IAM 역할을 나타냅니다.
- WITH GRANT OPTION
-
권한을 받은 사용자가 동일한 권한을 다른 사용자에게 부여할 수 있음을 나타냅니다. 그룹 또는 PUBLIC에는 WITH GRANT OPTION이 허용될 수 없습니다.
- ROLE role_name
-
역할에 권한을 부여합니다.
- GROUP group_name
-
사용자 그룹에 권한을 부여합니다. 쉼표로 구분된 목록으로 여러 사용자 그룹을 지정할 수 있습니다.
- PUBLIC
-
이후에 생성되는 사용자를 포함하여, 모든 사용자에게 지정된 권한을 부여합니다. PUBLIC은 모든 사용자를 항상 포함하는 그룹을 나타냅니다. 개별 사용자의 권한은 PUBLIC에 부여된 권한, 사용자가 속한 그룹에 부여된 권한, 사용자에게 개별적으로 부여된 모든 권한의 합입니다.
Lake Formation EXTERNAL TABLE에 PUBLIC을 부여하면 Lake Formation 모든 사람 그룹에 권한이 부여됩니다.
- CREATE
-
데이터베이스 객체에 따라, 사용자 또는 사용자 그룹에 다음 권한을 부여합니다.
-
데이터베이스의 경우 CREATE를 통해 사용자가 데이터베이스 내에 스키마를 생성하도록 허용합니다.
-
스키마의 경우 CREATE를 통해 사용자가 스키마 내에 객체를 생성하도록 허용합니다. 객체의 이름을 바꾸려면 사용자가 CREATE 권한이 있고 이름을 바꿀 객체를 소유해야 합니다.
-
Amazon Redshift Spectrum 외부 스키마에는 CREATE ON SCHEMA를 사용할 수 없습니다. 외부 스키마에서 외부 테이블 사용 권한을 부여하려면 액세스 권한이 필요한 사용자에게 USAGE ON SCHEMA를 부여합니다. 외부 스키마의 소유자 또는 슈퍼유저만 외부 스키마에 외부 테이블을 생성할 수 있습니다. 외부 스키마의 소유권을 이전하려면 ALTER SCHEMA를 사용해 소유자를 변경합니다.
-
- TEMPORARY | TEMP
-
지정된 데이터베이스에서 임시 테이블을 생성할 권한을 부여합니다. Amazon Redshift Spectrum 쿼리를 실행하려면 데이터베이스 사용자가 데이터베이스에서 임시 테이블을 생성할 수 있는 권한을 보유해야 합니다.
참고
기본적으로, 사용자는 PUBLIC 그룹에서 자동 멤버십으로 임시 테이블을 생성할 권한이 허용됩니다. 사용자가 임시 테이블을 만들 수 있는 권한을 제거하려면 PUBLIC 그룹에서 TEMP 권한을 취소합니다. 그런 다음 특정 사용자 또는 사용자 그룹에 임시 테이블을 만들 수 있는 권한을 명시적으로 부여합니다.
- ON DATABASE db_name
-
데이터베이스에 대해 지정된 권한을 부여합니다.
- 객체
-
사용자가 특정 스키마의 객체에 액세스할 수 있도록, 해당 스키마에 대해 USAGE 권한을 부여합니다. 이러한 객체에 대한 특정 작업은 로컬 Amazon Redshift 스키마에 대해 별도로 부여되어야 합니다(예: 테이블에 대한 SELECT 또는 UPDATE 권한). 기본적으로 모든 사용자는 PUBLIC 스키마에서 CREATE 및 USAGE 권한을 갖습니다.
ON SCHEMA 구문을 사용하여 외부 스키마에 USAGE를 부여하면 외부 스키마의 객체에 대해 별도로 작업을 부여할 필요가 없습니다. 해당 카탈로그 권한은 외부 스키마 객체에 대한 세분화된 권한을 제어합니다.
- ON SCHEMA schema_name
-
스키마에 대해 지정된 권한을 부여합니다.
Amazon Redshift Spectrum 외부 스키마에서 GRANT CREATE ON SCHEMA와 GRANT ALL ON SCHEMA의 CREATE 권한은 사용할 수 없습니다. 외부 스키마에서 외부 테이블 사용 권한을 부여하려면 액세스 권한이 필요한 사용자에게 USAGE ON SCHEMA를 부여합니다. 외부 스키마의 소유자 또는 슈퍼유저만 외부 스키마에 외부 테이블을 생성할 수 있습니다. 외부 스키마의 소유권을 이전하려면 ALTER SCHEMA를 사용해 소유자를 변경합니다.
- EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name
-
참조되는 스키마에 있는 모든 함수에 대해 지정된 권한을 부여합니다.
Amazon Redshift는 pg_catalog 네임스페이스에 정의된 pg_proc 기본 제공 항목에 대해 GRANT 또는 REVOKE 문을 지원하지 않습니다.
- EXECUTE ON PROCEDURE procedure_name
-
특정 저장 프로시저에 대해 EXECUTE 권한을 부여합니다. 저장 프로시저 이름은 오버로딩될 수 있기 때문에 해당 프로시저에 대한 인수 목록을 포함해야 합니다. 자세한 내용은 저장 프로시저 명명 단원을 참조하십시오.
- EXECUTE ON ALL PROCEDURES IN SCHEMA schema_name
-
참조되는 스키마에 있는 모든 저장 프로시저에 대해 지정된 권한을 부여합니다.
- USAGE ON LANGUAGE language_name
-
언어에 대한 USAGE 권한을 부여합니다.
CREATE FUNCTION 명령을 실행하여 사용자 정의 함수(UDF)를 생성하려면 USAGE ON LANGUAGE 권한이 필요합니다. 자세한 내용은 UDF 보안 및 권한 단원을 참조하십시오.
CREATE PROCEDURE 명령을 실행하여 저장 프로시저를 생성하려면 USAGE ON LANGUAGE 권한이 필요합니다. 자세한 내용은 저장 프로시저의 보안 및 권한 단원을 참조하십시오.
Python UDF에는
plpythonu
를 사용합니다. SQL UDF에는sql
을 사용합니다. 저장 프로시저에는plpgsql
을 사용합니다. - FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
-
권한이 부여된 SQL 명령을 지정합니다. ALL을 지정하여 COPY, UNLOAD, EXTERNAL FUNCTION 및 CREATE MODEL 문에 대한 권한을 부여할 수 있습니다. 이 절은 ASSUMEROLE 권한을 부여하는 경우에만 적용됩니다.
- ALTER
사용자에게 데이터 공유에서 객체를 추가 또는 제거하거나 속성 PUBLICACCESSIBLE을 설정할 수 있는 ALTER 권한을 부여합니다. 자세한 내용은 ALTER DATASHARE 단원을 참조하십시오.
- SHARE
데이터 소비자를 데이터 공유에 추가할 수 있는 권한을 사용자 및 사용자 그룹에 부여합니다. 이 권한은 특정 소비자(계정 또는 네임스페이스)가 클러스터에서 데이터 공유에 액세스할 수 있도록 하는 데 필요합니다. 소비자는 GUID(Globally Unique Identifier)로 지정된 클러스터 네임스페이스가 같거나 다른 AWS 계정일 수도 있고 다를 수도 있습니다.
-
참조된 데이터 공유에 대해 지정된 권한을 부여합니다. 소비자 액세스 제어 세분화에 대한 자세한 내용은 Amazon Redshift에서 다양한 수준의 데이터 공유 단원을 참조하세요.
- 객체
USAGE가 소비자 계정 또는 동일한 계정 내의 네임스페이스에 부여된 경우 특정 소비자 계정 또는 계정 내의 네임스페이스는 읽기 전용 방식으로 datashare 및 datashare 객체에 액세스할 수 있습니다.
- TO NAMESPACE 'clusternamespace GUID'
소비자가 데이터 공유에 대해 지정된 권한을 받을 수 있는 동일한 계정의 네임스페이스를 나타냅니다. 네임스페이스는 128비트 영숫자 GUID를 사용합니다.
- TO ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
소비자가 데이터 공유에 대해 지정된 권한을 받을 수 있는 다른 계정의 번호를 나타냅니다. VIA DATA CATALOG'를 지정하면 Lake Formation 계정에 데이터 공유 사용 권한을 부여하고 있음을 나타냅니다. 이 파라미터를 생략하면 클러스터를 소유한 계정에 사용 권한을 부여한다는 의미입니다.
-
지정된 데이터 공유에서 생성된 지정된 데이터베이스에 대해 지정된 사용 권한을 부여합니다.
-
지정된 데이터 공유에서 생성된 지정된 스키마에 대해 지정된 권한을 부여합니다.
- FOR { SCHEMAS | TABLES | FUNCTIONS | PROCEDURES | LANGUAGES } IN
-
권한을 부여할 데이터베이스 객체를 지정합니다. IN 다음의 파라미터는 부여된 권한의 범위를 정의합니다.
- CREATE MODEL
특정 사용자 또는 사용자 그룹에 CREATE MODEL 권한을 부여합니다.
- ON MODEL model_name
특정 모델에 대해 EXECUTE 권한을 부여합니다.
- ACCESS CATALOG
-
역할이 액세스할 수 있는 객체의 관련 메타데이터를 볼 수 있는 권한을 부여합니다.
- { role } [, ...]
다른 역할, 사용자 또는 PUBLIC에 부여할 역할입니다.
PUBLIC은 모든 사용자를 항상 포함하는 그룹을 나타냅니다. 개별 사용자의 권한은 PUBLIC에 부여된 권한, 사용자가 속한 그룹에 부여된 권한, 사용자에게 개별적으로 부여된 모든 권한의 합입니다.
- TO { { user_name [ WITH ADMIN OPTION ] } | role }[, ...]
WITH ADMIN OPTION, 다른 역할 또는 PUBLIC을 사용하여 지정된 사용자에게 지정된 역할을 부여합니다.
WITH ADMIN OPTION 절에서 모든 피부여자에게 부여된 모든 역할에 대한 관리 옵션을 제공합니다.
- EXPLAIN RLS TO ROLE rolename
EXPLAIN 계획에서 쿼리의 행 수준 보안 정책 필터를 설명할 수 있는 권한을 역할에 부여합니다.
- IGNORE RLS TO ROLE rolename
쿼리에 대한 행 수준 보안 정책을 우회할 수 있는 권한을 역할에 부여합니다.
사용 노트
GRANT 사용 노트에 대한 자세한 내용은 사용 노트 섹션을 참조하세요.
예시
GRANT 사용 방법의 예는 예시 섹션을 참조하세요.