ALTER DEFAULT PRIVILEGES - Amazon Redshift

ALTER DEFAULT PRIVILEGES

앞으로 지정된 사용자가 생성하는 객체에 적용될 기본 액세스 권한 세트를 정의합니다. 기본적으로 사용자는 자신의 기본 액세스 권한만 변경할 수 있습니다. 수퍼유저만이 다른 사용자의 기본 권한을 지정할 수 있습니다.

역할, 사용자 또는 사용자 그룹에 기본 권한을 적용할 수 있습니다. 현재 데이터베이스에서 생성되는 모든 객체나 지정된 스키마에서만 생성되는 객체에 대해 기본 권한을 전역적으로 설정할 수 있습니다.

기본 권한은 새 객체에만 적용됩니다. ALTER DEFAULT PRIVILEGES를 실행하면 기존 객체에 대한 권한은 변경되지 않습니다. 데이터베이스 또는 스키마 내에서 사용자가 생성하는 모든 현재 및 미래 객체에 대한 권한을 부여하려면 범위 지정 권한을 참조하세요.

데이터베이스 사용자의 기본 권한에 대한 정보를 보려면 PG_DEFAULT_ACL 시스템 카탈로그 테이블을 쿼리하십시오.

권한에 대한 자세한 내용은 GRANT 섹션을 참조하세요.

필수 권한

다음은 ALTER DEFAULT PRIVILEGES에 필요한 권한입니다.

  • 수퍼유저

  • ALTER DEFAULT PRIVILEGES 권한을 가진 사용자

  • 자신의 기본 액세스 권한을 변경하는 사용자

  • 액세스할 수 있는 스키마에 대한 권한을 설정하는 사용자

구문

ALTER DEFAULT PRIVILEGES [ FOR USER target_user [, ...] ] [ IN SCHEMA schema_name [, ...] ] grant_or_revoke_clause where grant_or_revoke_clause is one of: GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM user_name [, ...] [ RESTRICT ] REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

파라미터

FOR USER target_user

선택 사항입니다. 기본 권한이 정의되는 사용자의 이름입니다. 수퍼유저만이 다른 사용자의 기본 권한을 지정할 수 있습니다. 기본값은 현재 사용자입니다.

IN SCHEMA schema_name

선택 사항입니다. IN SCHEMA 절이 나타나면 지정된 schema_name에 생성되는 새 객체에 지정된 기본 권한이 적용됩니다. 이 경우, ALTER DEFAULT PRIVILEGES의 대상인 사용자 또는 사용자 그룹은 지정된 스키마에 대해 CREATE 권한을 가져야 합니다. 스키마에 특정한 기본 권한이 기존 전역 기본 권한에 추가됩니다. 기본적으로 전체 데이터베이스에 기본 권한이 전역적으로 적용됩니다.

GRANT

지정된 사용자가 생성하는 모든 새로운 테이블, 뷰, 함수 또는 저장 프로시저에 대해 지정된 사용자나 그룹에게 부여하는 권한 세트입니다. GRANT 명령과 함께 사용할 수 있는 GRANT 절을 이용해 동일한 권한과 옵션을 설정할 수 있습니다.

WITH GRANT OPTION

권한을 받은 사용자가 이번에는 똑같은 권한을 다른 사용자에게 허용할 수 있음을 나타내는 절입니다. 그룹 또는 PUBLIC에는 WITH GRANT OPTION을 허용할 수 없습니다.

TO user_name | ROLE role_name | GROUP group_name

지정된 기본 권한이 적용될 사용자, 역할 또는 사용자 그룹의 이름입니다.

REVOKE

지정된 사용자가 생성하는 모든 새로운 테이블, 함수 또는 저장 프로시저에 대해 지정된 사용자나 그룹에서 취소하는 권한 세트입니다. REVOKE 명령과 함께 사용할 수 있는 REVOKE 절을 이용해 동일한 권한과 옵션을 설정할 수 있습니다.

GRANT OPTION FOR

다른 사용자에게 지정된 권한을 허용하는 옵션만 취소하고 권한 자체를 취소하지는 않는 절입니다. 그룹 또는 PUBLIC에서 GRANT OPTION을 취소할 수 없습니다.

FROM user_name | ROLE role_name | GROUP group_name

지정된 권한이 기본적으로 취소되는 사용자, 역할 또는 사용자 그룹의 이름입니다.

RESTRICT

RESTRICT 옵션은 사용자가 직접 허용한 권한만 취소합니다. 이 값이 기본값입니다.

예제

사용자 그룹 report_readers의 사용자가 사용자 report_admin에 의해 생성된 모든 테이블과 뷰를 볼 수 있도록 허용하려는 경우를 생각해 봅시다. 이 경우에는 슈퍼 사용자 권한으로 다음 명령을 실행합니다.

alter default privileges for user report_admin grant select on tables to group report_readers;

다음 예에서 첫 번째 명령은 사용자 자신이 생성하는 모든 새로운 테이블과 뷰에 SELECT 권한을 허용합니다.

alter default privileges grant select on tables to public;

다음 예에서는 사용자 자신이 sales_admin 스키마에서 생성하는 모든 새로운 테이블과 뷰에 대해 sales 사용자 그룹에 INSERT 권한을 허용합니다.

alter default privileges in schema sales grant insert on tables to group sales_admin;

다음 예에서는 이전 예의 ALTER DEFAULT PRIVILEGES 명령을 반전합니다.

alter default privileges in schema sales revoke insert on tables from group sales_admin;

기본적으로, PUBLIC 사용자 그룹은 모든 새로운 사용자 정의 함수에 대한 실행 권한이 있습니다. 새 함수에 대한 public 실행 권한을 취소한 다음 dev_test 사용자 그룹에만 실행 권한을 허용하려면 다음 명령을 실행합니다.

alter default privileges revoke execute on functions from public; alter default privileges grant execute on functions to group dev_test;