Redshift 보안 및 백업
권한과 보안
- 사용자별 테이블 권한 설정
- 일반적으로 사용자별 테이블별 권한 설정은 하지 않는다.
- 역할이나 그룹별로 스키마 접근 권한을 주는 경우가 많다. (RBAC : Role Based Access Control을 많이 쓴다.)
- 개인정보에 관련된 테이블의 경우 별도 스키마를 설정한다.
- 코드 예시
/*두번쨰 명령이 메인 명령이다.*/
/*그룹에 대해서 스키마 권한을 주고, 스키마 내의 테이블의 권한을 부여한다.*/
GRANT USAGE ON SCHEMA analytics TO GROUP analytics_authors
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_users
GRANT ALL ON SCHEMA adhoc to GROUP analytics_users;
- 컬럼 레벨 보안 : 테이블 내의 특정 컬럼을 사용자나 특정 그룹에만 접근하도록 만드는 것.
- 보안이 필요한 컬럼을 별도 테이블로 생성하는 방법을 사용한다
- 가장 좋은 것은 보안이 필요한 정보를 데이터 시스템으로 로딩하지 않는 것이다.
- 레코드(Row) 레벨 보안 : 특정 레코드들을 사용자나 특정한 그룹에만 접근하도록 만드는 것.
- 특정 사용자의 테이블을 대상으로하는 SELECT, UPDATE, DELETE 작업에 추가 조건을 다는 형태로 동작한다.
- 생성 : CREATE RLS POLICY 명령을 사용한다.
- 부여 : ATTACH RLS POLICY
백업과 테이블 복구
- 고정 비용 Redshift
- Snapshot : 마지막 백업으로부터 바뀐 것들만 저장하는 방식 → 과거 시점의 내용으로 클러스터 생성도 가능하다.
- 자동 백업 : 최대 35일까지의 변경을 백업하도록 할 수 있다.
- 다른 지역의 S3에 하려면 Cros-regional snapshot copy를 설정해야한다. → 재난 상황같은 경우에 유용하다.
- Redshift 클러스터의 Maintenance → Backup details → Edit을 통해 보관 기간을 설정한다.
- 매뉴얼 백업 : 원하는 경우에 만드는 백업이다. 명시적으로 삭제 전까지 유지된다.
- 백업에서 테이블 복구
- Restore table 선택 → 복구 대상이 있는 Snapshot선택
- 원본 테이블을 선택하고 복구 할 타겟 테이블을 선택한다.
- 가변 비용 Redshift Serverless
- Snapshot 이전에 Recovery Points가 존재한다. (24시간만 유지된다.)
- 자동으로 Snapshot이 생기지 않기 때문에 직접 생성해주어야한다.
- Recovery points를 통해서 snapshot을 생성하는 것과 달리 Snapsots에서 직접 생성하게되면 메뉴얼 백업이 생성된다.
Redshift Spectrum
- S3에 매우 큰 데이터가 있어 Redshift에 로딩하기 버거운 경우에 사용한다.
Fact, Dimension 테이블
- Fact : 분석의 초점이되는 양적 정보를 포함하는 중앙 테이블
- 보통 비즈니스 결정에 사용되는 테이블
- 외래 키를 통해서 여러 Dimension 테이블에 연결된다.
- Fact 테이블의 크기가 DImension 테이블보다 큰 경우가 많다.
- 예) Order 테이블, 상품 주문 정보가 들어간 테이블
- DImension : Fact 테이블에 대한 상세 정보를 제공하는 테이블
- 사용자가 다양한 방식으로 Fact 테이블의 데이터를 조각내어 분석하게 해준다.
- Dimension 테이블은 PK를 갖는다.
- 예) User 테이블, Order테이블에서 주문을 한 사용자에 대한 정보
Spectrum use case
- S3에 대용량 Fact 테이블이 존재
- Fact 테이블을 Redshift로 적재하지 않고 사용하는 경우
- 별도 설정 하는 것이 아니라 Redshift의 확장기능이다.
- 외부 테이블
- DB엔진이 외부에 저장된 데이터를 내부 테이블처럼 사용하는 방법
- SQL을 사용해서 DB에 외부 테이블 생성이 가능하다.
- 데이터 러치 후 결과를 DB에 적재하는데 사용한다.
- 보안적인 부분에서 고려가 필요하다.
- S3 Fact 데이터를 외부 테이블로 정의해야한다.
Redshift ML
AWS SageMaker
- ML 모델 개발을 처음부터 끝까지 지원하는 서비스 (MLOps 프레임워크)
- 4가지의 기능을 제공한다.
- 트레이닝 셋 준비
- 모델 훈련
- 모델 검증
- 모델 배포와 관리
- 다양한 머신러닝 프레임워크를 지원한다.
- 다양한 개발방식을 지원한다.
- AutoPilot : AutoML 기능 → 데이터 셋을 제공하면 자동으로 모델을 제작해준다.
- 사용 권한 지정 → Redshift cluster
- Role 설정
- Role을 사용할 수 있는 서비스로 Redshift를 지정
- Redshift 권한으로 지정 (SagemakerFullAccess)
- Principal에 있어서 sagemaker와 redshift가 모두 access 가능하게 변경해주어야 한다.
- ARN을 통해 활용
Redshift 중지/제거하기
- 가변 비용에는 제거만 있다.
유지보수
- 고정 비용 옵션에서만 있음.
- Maintenance window라고 부른다.
테이블 청소와 최적화 - VACUUM
- 테이블 데이터 정렬 → 데이터를 정렬해서 남아있는 행을 모아준다.
- 디스크 공간 해제 : 필요하지 않은 행들을 제거한다.
클러스터 중지&제거
- 중지 : 당분간 필요 없는 경우에 사용한다. → 스토리지 비용만 부담하게된다.
- 제거 : 아에 필요없는 경우에 사용한다. Snapshot으로 s3에 저장할 것인지를 물어본다.
'Others > Cloud' 카테고리의 다른 글
Cloud - Snowflake(2) 조작하기 (0) | 2024.03.18 |
---|---|
Cloud - Snowflake(1) 소개 (0) | 2024.03.18 |
Cloud - Redshift & S3 connect (0) | 2024.03.15 |