학습주제
Redshift 고급 기능 실습
학습내용
IAM 기능을 알아보자
사용자에게 원한을 어떻게 설정?
사용자별로 권할을 지정.
사용자, 테이블 수가 늘어나면 일일히 기억하는게 쉽지 않음.(지나친 권한을 받을 수도, 권한이 없는 경우)
사용자, 테이블의 집합을 놓고 그것간의 엑세스 관계. 그룹, 스키마
한단계 더 나아가 ROLE을 사용함.
그룹은 계승구조 지원 X. 10개의 그룹이 있다면 개별적으로 다 해줘야함
역할은 계승이 있음. 기본이 되는 role을 만들고 다음 role은 기본 role을 계승한 뒤, 필요한 기능만 추가하는 형태.
한 사용자가 다수 역할, 그룹을 받을 수 있음.(inclusive)
개인정보 관련 테이블은 별도 스키마 설정
3개의 그룹과 1개의 사용자.
사용자가 추가될 때마다 그룹에 넣어줌.
analytics_authors는 분석가 그룹. raw_data에는 읽기만, pii 접근 불가
analytics_users는 adhoc만 쓰기 가능
두 그룹은 pii 접근 불가
pii_users만 pii 접근 가능. 위 두 그룹에 속한 사람 중에 필요한 사람만 pii_users 그룹에 넣어줌. 권한 확장
두번째 줄마다 보면 각 스키마의 모든 테이블에 분석가 그룹에 권한을 부여.
GRANT ALL
GRANT SELECT가 기본 명령어
GRANT ALL ON ALL TABLES를 사용하려면 그 위의 명령어가 같이 실행되어야 함. 스키마 자체에 엑세스 할 수 있는 권한이 먼저 주어져야함
SELECT 권한을 주려면 그 전에 스키마에 대한 USAGE 권한을 주어야 함
ALL - ALL
SELECT - USAGE
두번째 명령어들이 메인명령어임
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 analytics 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;
pii에 대해 별도의 명령어가 없음. 접근 권한이 없음.
GRANT USAGE ON SCHEMA analytics TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;
GRANT ALL ON SCHEMA adhoc TO GROUP analytics_users;
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_users;
users에도 pii에 대한 별도 권한 부여 X
GRANT USAGE ON SCHEMA pii TO GROUP pii_users;
GRANT SELECT ON ALL TABLES IN SCHEMA pii TO GROUP pii_users;
그룹 자체는 pii 스키마에 접근할 수 있는 권한 부여
SELECT 권한을 주기 위해 USAGE 권한을 줌
개별테이블이 아니라 스키마를 중심으로 권한 부여
매번 그룹에 처음부터 권한 부여를 해야함. 귀찮음
ROLE을 사용하면 계승이 됨
이제는 테이블 내에 특정 레코드, 컬럼에 대한 엑세스를 제어할 수 있음
컬럼 중에 개인정보 있다. 이메일주소, 주민등록번호, 주소.
접근 권한이 있는 사람들만 엑세스 할 수 있게 함.
대부분 DW에서 지원함
레코드 레벨 보안
컬럼 레벨 보안보다 좀 더 복잡함.
CREATE RLS POLICY
명령어 사용
ALL - ALL
USAGE - SELECT
유저 비밀번호를 바꾸고 싶으면
ALTER USER jongwook PASSWORD '변경비밀번호'
변경 성공
전에는 admin user로 연결했다면 이번엔 redshift를 생성한 유저로 연결해본다
다시 접속은,
여기서 엔드포인트를 복사하면 된다
성공적으로 연결됨
이제 raw_data를 삭제시도해본다.
제한됨.