🎈 권한
일반적으로 user별 table별 권한 설정은 복잡성 문제로 인해 진행하지 않는다.
보통 Role 혹은 Group별로 스키마 별 접근 권한 부여하는 것이 일반적이다.
- RBAC(Role Based Access Control)가 새로운 트렌드로 그룹보다 편리함
- 여러 역할에 속한 user의 경우 각 역할 권한 모두 갖게됨 (Inclusive)
개인정보와 관련된 테이블들은 유의미한 정보는 물론, 개인정보라는 엄중한 데이터를 다루기에 별도로 스키마 지정을 필요로 하며 극히 일부 user에게만 역할에 접근 권한을 부여해야 한다.
사용자 그룹에 권한 설정하는 방법은 아래와 같다.# 스키마로부터 권한 부여할 그룹명 지정하기 GRANT ALL ON SCHEMA 스키마명 TO GROUP 부여할 그룹명; # 모든 권한 부여 GRANT ALL ON ALL TABLES IN SCHEMA 스키마명 TO GROUP 그룹명; # 읽기 권한만 부여 GRANT SELECT ON ALL TABLES IN SCHEMA 스키마명 TO GROUP 그룹명;
🎈 보안
- Column Level Security (CLS)
- table 내 특정 column을 특정 user, 특정 group/role에만 access 허가
- 보통 개인정보 등에 해당하는 컬럼을 권한 없는 사용자에게 감추는 목적으로 사용.
-> 보안이 필요한 정보를 별도로 구성하고 아예 data system에 로딩하지 않는 것이 더 좋은 방법.
- Row Level Security (RLS)
- table 내 특정 row를 특정 user, 특정 group/role에만 access 허가
- RLS Policy : 특정 user/group의 대상 테이블에 SELECT, UPDATE, DELETE작업에 추가 조건을 다는 방식
- CREATE RLS POLICY 명령으로 Policy만든 후 ATTACH RLS POLICY명령 사용해 특정 테이블에 추가
-> 보안이 필요한 정보를 별도로 구성하고 아예 data system에 로딩하지 않는 것이 더 좋은 방법.
어제 학습을 진행하며 Redshift 내 snapshot이 백업 기능을 한다고 배웠다.
이를 활용한 학습을 진행해보고자 한다.
백업부터 살펴보면, Redshift가 지원하는 데이터 백업 방식은 다음과 같다.
- 기본적으로 백업 방식은 마지막 백업으로부터 바뀐 것들만 저장한다. 이를 snapshot이라 부르며 백업을 통해 과거 시점의 내용으로 특정 테이블을 복구하는 것이 가능하다. 추가로 과거 테이블 내용으로 Redshift cluster를 새로 생성하는 것이 가능하다.
- 자동 백업되는 부분도 있는데 기본 하루이고 최대 35일 이전까지 변경을 백업할 수 있다. 하지만 이는 동일한 region에 있는 S3에 이루어지고 타 지역에 있는 S3를 백업하기 위해선 Cross-regional snapshot copy를 설정해야 한다.
-> 작동 방법 : cluster의 maintenance 탭 눌러서 backup detail edit 진행- 매뉴얼 백업으로 언제든 원할 때 백업을 만들어 명시적으로 삭제하기 전까지 유지되도록 설정한다.
-> 작동 방법 : cluster의 actions 탭, Create snapshot으로 이름 부여 후 보관 설정🎈 백업에서 테이블 복구
- redshift cluster에서 Restore table 메뉴 선택
- view snapshot으로 그동안 백업된 내용 확인 후 원하는 snapshot 선택
- Source table 선택(어느 DB 밑에 어느 Schema인지 확인하여)
- 어디로 복구될지 target table 지정 필요 (DB, Schema 설정 필요)
🎈 Redshift Serverless에서 지원하는 백업 방식
- 고정비용 Redshift에 비해 제한적, 더 복잡
- snapshot이전, Recovery points 존재한다.
- point를 snapshot으로 바꾼 다음 해당 point에서 테이블 복구하거나, 새로운 cluster 생성이 가능하기에 최대 하루만 백업이 가능하다.
-> 작동방법 : namespace_default 클릭 후 data backup눌러 recovery point -> Create snapshot from recovery point 처리
🎈 Redshift Spectrum
S3에 있는 파일들을 외부 테이블로 처리하여 Redshift 테이블과 조인 후, SQL로 처리 가능하게 해줌
- S3 외부 테이블들은 보통 Fact 테이블이 되고, Redshift 테이블은 dimension 테이블이 된다.
- 이를 위해선, Redshift cluster가 필요하고 S3와 Cluster는 같은 region에 있어야 한다.
-> Fact table을 redshift에 적재하지 않고 외부 테이블과 redshift 내 테이블을 조인하는 경우에 사용!
🎈 Redshift Serverless
가변비용 Redshift로 사용한 만큼 비용을 지불하는 옵션
- 데이터 처리 크기와 특성에 따라 auto-scaling 적용
🎈 Athena
AWS의 Presto 서비스로 앞서 학습한 Spectrum과 유사한 기능을 제공한다.
S3(데이터레이크)에 있는 테이블(데이터)를 기반으로 SQL 쿼리 기능을 제공한다.
- 비구조화 데이터 처리에 상당히 유용
🎈 Redshift ML
SQL만 사용해 ML 모델 훈련하고 사용가능토록 해주는 서비스
이미 생성한 모델이 있다면 이를 적용하는 것도 가능한 BYOM 기능도 제공해준다.✨ 추가 사항
앞서 Spectrum 서비스를 학습하면서 Fact 테이블, Dimension테이블 용어가 등장했는데 이를 더 자세히 살펴보고자 한다.
- Fact Table : 분석의 초점이 되는 양적 정보를 포함하는 중앙 테이블로, 일반적으로 테이블 내에 매출, 수익, 판매량 같은 Fact 혹은 측정치가 포함된 정보가 들어있고 이를 비즈니스 결정에 이용한다. 테이블 크기가 훨씬 큰게 특징이며 ForeignKey로 여러 dimension 테이블과 연결되어 있음.
- Dimension Table : Fact Table에 대한 상세 정보를 제공하는 테이블로 고객, 제품 같은 테이블로 구성되어 있다. Dimension은 일반적으로 PrimaryKey를 갖고 Fact 테이블의 ForeignKey에서 참조된다. 테이블 크기는 훨씬 작은 것이 특징.
- ex) Fact : 사용자별 제품별 제품 구매 데이터 / Dimension : 사용자 테이블, 제품 테이블
추가로, S3에 있는 외부 테이블 이라는 용어를 확인해보고자 한다.
외부테이블이란, DB엔진이 외부에 저장된 데이터를 마치 내부 테이블처럼 사용하는 방법으로 간단히 설명하면, 외부에 저장된 빅데이터(S3 같은 클라우드 스토리지)를 임시로 사용해 내부 DB와 조인하는 방식.
- SQL 명령어로 DB에 외부 테이블을 생성할 수 있다.
- 외부 테이블을 사용해 DB 내 테이블과 처리하여 결과를 DB에 적재할 수도 있다.
-> 외부 테이블은 말그대로 외부에 존재하는 데이터들이기에 작업을 위해선 보안, 성능에 있어 충분한 검증과 고려가 필요하다.
- 외부 테이블 용 스키마 설정 필요
- 우선 앞서 만든 redshift.read.s3 ROLE에 AWSGlueConsoleFullAccess 권한 지정 필요 (IAM 콘솔에서 진행)
- 그 후 아래 SQL 실행해 외부 테이블용 스키마 생성하기
CREATE EXTERNAL_SCHEMA 스키마명 FROM data catalog database 'DB명' iam_role 'arn:aws:iam::521227329883:role/redshift.read.s3' create external database if not exists;
🎈 AWS Glue란?
: Serverless ETL 서비스로 아래 기능 제공
- data catalog
- ETL 작업을 생성할 수 있다. (AWS Glue Studio)
- 콘솔을 통해 ETL 작업 실행 상태와 로그 모니터링을 할 수 있다.
- 외부 Fact Table 정의
CREATE EXTERNAL_TABLE external_schema.테이블명 ( 원하는컬럼명 datatype ) # 아래는 csv파일을 불러오는 과정 row format delimited fields terminated by ',' # 디렉토리는 S3 들어가서 버킷에서 확인 가능 stored as textfile location 's3://디렉토리'
- 내부 Dimension 테이블 - CTAS 문법 사용
CREATE TABLE 스키마.테이블명 AS SELECT 컬럼명 CASE ~ WHEN ~ THEN ~ ELSE ~ END FROM 테이블명
- Fact 테이블 & Dimension 테이블 조인
🎈 Amazon SageMaker
ML 모델 개발을 처음부터 끝까지 해주는 AWS 서비스로 크게 4가지 기능을 제공한다
- Training set setting
- model training
- model validation
- model deployment & management
- 다양한 ML Framework 지원 (Tensorflow/Keras/PyTorch/MXNet ... )
-> 자체 SageMaker 모듈로 ML model training 가능SageMaker Studio라는 웹기반 환경 제공하며, 다양한 개발방식(Python Notebook, 스칼라, 자바 SDK)등으로 model training 진행.
- AutoPilot이라는 코딩 불필요 모델 훈련 기능도 제공
🎈 AutoPilot
SageMaker에서 제공하는 AutoML(INPUT데이터 주어지면 자동으로 모델 생성)기능
-> 최종적으로 사용자가 모델을 선택하여 API로 만드는 것도 가능하다.
+) 여기에 로그를 설정해 전체 로깅이나 샘플 로깅 설정, 로그 모니터링도 가능하다