1. Day 3-1

data_hamster·2023년 5월 25일
0

학습주제
Redshift 고급 기능 실습

학습내용

  • 권한과 보안
  • 백업과 테이블 복구
  • 관련 기타 서비스. 스펙트럼, 머신러닝, 아테나
  • Spectrum으로 S3 외부 테이블 조작
  • ML 사용하기(sage maker로 패키징 한 다음 레드쉬프트에서 sql 호출해서 쓸 수 있음. 함수처럼 호출할 수 있음)
  • 중단/제거하기


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를 삭제시도해본다.


제한됨.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글