일반적으로 사용자별 테이블별 권한 설정은 하지 않음
역할 혹은 그룹별로 스키마별 접근 권한을 주는 것이 일반적
RBAC(Role based access control)가 새로운 트렌드: 그룹 보다 더편리
여러 역할에 속한 사용자의 경우는 각 역할의 권한을 모두 갖게 됨
개인 정보와 관련한 테이블들이라면 별도 스키마 설정
극히 일부 사람만 속한 역할에 접근 권한을 줌
뒤의 예는 그룹에 적용했지만 group이란 키워드를 role로 바꾸어도 동작
사용자별 -> 그룹 별
스키마별 -> 테이블별
사용자나 스키마는 그룹과 테이블보다 적기 때문에 스키마와 사용자를 명확하게 정의하면 조인의 수를 좁힐 수 있음. 요새는 role을 씀. rbac를 쓴다.
%%sql
GRANT ALL ON SCHEMA analytics TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_authors;
GRANT ALL ON SCHEMA adhoc to GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_authors;
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_authors;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_authors;
각 문장에서 2번째 문장이 main function이다. 첫번 째는 그룹에 스키마 권한을 부여하고 2번 째 문장은 모든 테이블에 접근 가능하게 해준다.
usage 와 select on 같은 경우는 읽기 전용이다.
raw_data 테스트 테이블을 만들기 위해서는 s3에서 redshift로 카피해와야한다
stl_load_errors 테이블을 불러와서 내림차순으로 본 후에 확인한다.