클러스터 암호화 변경 - Amazon Redshift

클러스터 암호화 변경

AWS 관리형 키 또는 고객 관리형 키를 사용하여 AWS Key Management Service(AWS KMS) 암호화를 사용하도록 암호화되지 않은 클러스터를 수정할 수 있습니다. AWS KMS 암호화를 사용하도록 클러스터를 수정하면 Amazon Redshift에서 암호화된 새 클러스터로 데이터를 자동으로 마이그레이션합니다. 또한 클러스터를 수정하여 암호화된 클러스터로 암호화되지 않은 클러스터를 마이그레이션할 수도 있습니다.

마이그레이션 작업 중에는 클러스터를 읽기 전용 모드로 사용할 수 있으며 클러스터 상태는 크기 조정 중으로 표시됩니다.

교차 AWS 리전 스냅샷 복사가 가능하도록 클러스터가 구성된 경우 암호화를 변경하기 전에 이 옵션을 사용 중지해야 합니다. 자세한 내용은 다른 AWS 리전에 스냅샷 복사AWS KMS 암호화 클러스터에 대한 리전 간 스냅샷 복사 구성 섹션을 참조하세요. 클러스터를 수정해 하드웨어 보안 모듈(HSM)을 활성화할 수는 없습니다. 대신에 새 HSM 암호화 클러스터를 생성해 데이터를 새 클러스터로 마이그레이션합니다. 자세한 내용은 HSM 암호화 클러스터로 마이그레이션 단원을 참조하십시오.

클러스터에서 데이터베이스 암호화를 수정하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/redshiftv2/에서 Amazon Redshift 콘솔을 엽니다.

  2. 탐색 메뉴에서 클러스터(Clusters)를 선택한 후 암호화를 수정할 클러스터를 선택합니다.

  3. 속성(Properties)을 선택합니다.

  4. [데이터베이스 구성(Database configurations)] 섹션에서 [편집(Edit)]을 선택하고 [암호화 편집(Edit encryption)]을 선택합니다.

  5. 암호화 옵션 중 하나를 선택하고 [변경 사항 저장(Save changes)]을 선택합니다.

CLI를 사용하여 클러스터 암호화를 변경하려면

AWS KMS를 사용하도록 암호화되지 않은 클러스터를 수정하려면 modify-cluster CLI 명령을 실행하고 다음에 표시된 것처럼 –-encrypted를 지정합니다. 기본적으로 기본 KMS 키가 사용됩니다. 고객 관리형 키를 지정하려면 --kms-key-id 옵션을 포함합니다.

aws redshift modify-cluster --cluster-identifier <value> --encrypted --kms-key-id <value>

클러스터에서 암호화를 제거하려면 다음 CLI 명령을 실행합니다.

aws redshift modify-cluster --cluster-identifier <value> --no-encrypted

HSM 암호화 클러스터로 마이그레이션

하드웨어 보안 모듈(HSM)로 암호화된 클러스터로 암호화되지 않은 클러스터를 마이그레이션하려면 암호화된 새 클러스터를 생성해 데이터를 새 클러스터로 이전합니다. 클러스터를 수정하여 HSM 암호화 클러스터로 마이그레이션할 수는 없습니다.

암호화되지 않은 클러스터에서 HSM 암호화 클러스터로 마이그레이션하려면 먼저 데이터를 기존 원본 클러스터에서 언로드합니다. 그런 다음 데이터를 선택한 암호화 설정과 함께 새로운 대상 클러스터에 다시 로드합니다. 암호화된 클러스터 시작에 대한 자세한 내용은 Amazon Redshift 데이터베이스 암호화 단원을 참조하십시오.

마이그레이션 프로세스에서 원본 클러스터는 마지막 단계까지 읽기 전용 쿼리에 사용할 수 있습니다. 마지막 단계는 대상 및 원본 클러스터의 이름을 변경하는 것입니다. 그러면 모든 트래픽이 새로운 대상 클러스터로 라우팅되도록 엔드포인트가 전환됩니다. 대상 클러스터는 이름 변경 이후 재부팅할 때까지 사용할 수 없습니다. 데이터가 전송되는 동안 원본 클러스터에서 모든 데이터 로드 및 기타 쓰기 작업을 일시 중지합니다.

마이그레이션을 준비하려면
  1. Amazon Redshift와 상호 작용하는 종속 시스템(예: 비즈니스 인텔리전스(BI) 도구)을 모두 식별하여 시스템을 추출, 변환, 로드(ETL)합니다.

  2. 마이그레이션을 테스트할 검증 쿼리를 식별합니다.

    예를 들어 다음 쿼리를 사용하여 사용자 정의 테이블의 수를 확인할 수 있습니다.

    select count(*) from pg_table_def where schemaname != 'pg_catalog';

    다음 쿼리는 모든 사용자 정의 테이블의 목록과 각 테이블의 행 수를 반환합니다.

    select "table", tbl_rows from svv_table_info;
  3. 마이그레이션에 적합한 시간을 선택합니다. 클러스터 사용량이 가장 낮은 시간대를 찾으려면 CPU 사용량, 데이터베이스 연결 수와 같은 클러스터 지표를 모니터링합니다. 자세한 내용은 클러스터 성능 데이터 보기 단원을 참조하십시오.

  4. 사용되지 않는 테이블을 삭제합니다.

    테이블 목록 및 각 테이블이 쿼리된 횟수를 생성하려면 다음 쿼리를 실행합니다.

    select database, schema, table_id, "table", round(size::float/(1024*1024)::float,2) as size, sortkey1, nvl(s.num_qs,0) num_qs from svv_table_info t left join (select tbl, perm_table_name, count(distinct query) num_qs from stl_scan s where s.userid > 1 and s.perm_table_name not in ('Internal worktable','S3') group by tbl, perm_table_name) s on s.tbl = t.table_id where t."schema" not in ('pg_internal');
  5. 새로운 암호화된 클러스터를 시작합니다.

    원본 클러스터에 대상 클러스터와 동일한 포트 번호를 사용합니다. 암호화된 클러스터 시작에 대한 자세한 내용은 Amazon Redshift 데이터베이스 암호화 단원을 참조하십시오.

  6. 언로드 및 로드 프로세스를 설정합니다.

    클러스터 간 데이터 마이그레이션에 Amazon Redshift 언로드/복사 유틸리티를 사용할 수 있습니다. 이 유틸리티는 원본 클러스터의 데이터를 Amazon S3 상의 한 위치로 내보냅니다. 데이터는 AWS KMS를 사용하여 암호화됩니다. 그런 다음 이 유틸리티가 자동으로 데이터를 대상으로 가져옵니다. 선택적으로, 마이그레이션 완료 후 유틸리티를 사용하여 Amazon S3를 정리할 수 있습니다.

  7. 테스트를 실행하여 프로세스를 확인하고 쓰기 작업을 일시 중지해야 하는 시간을 추정합니다.

    언로드 및 로드 작업 도중 데이터 로드 및 기타 쓰기 작업을 일시 중지하여 데이터 일관성을 유지합니다. 가장 대규모 테이블 중 하나를 사용하여 언로드 및 로드 프로세스를 실행하면 시간을 추정하는 데 도움이 됩니다.

  8. 스키마, 뷰, 테이블과 같은 데이터베이스 객체를 생성합니다. 간편하게 필요한 데이터 정의 언어(DDL) 문을 생성하려면 AWS GitHub 리포지토리의 AdminViews 내 스크립트를 사용할 수 있습니다.

클러스터를 마이그레이션하려면
  1. 원본 클러스터에서 모든 ETL 프로세스를 중단합니다.

    진행 중인 쓰기 작업이 없는지 확인하려면 Amazon Redshift 관리 콘솔을 사용하여 쓰기 IOPS를 모니터링합니다. 자세한 내용은 클러스터 성능 데이터 보기 단원을 참조하십시오.

  2. 앞서 식별한 검증 쿼리를 실행하여 마이그레이션 전에 암호화된 원본 클러스터에 대한 정보를 수집합니다.

  3. (선택 사항) 원본 및 대상 클러스터 모두에서 최대 가용 리소스를 사용하려면 워크로드 관리(WLM) 대기열을 하나 생성합니다. 예를 들어 data_migrate라는 이름의 대기열을 생성하고 메모리 95%, 동시성 4를 사용하여 대기열을 구성합니다. 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서사용자 그룹 및 쿼리 그룹에 따른 쿼리의 대기열 라우팅을 참조하세요.

  4. data_migrate 대기열을 사용하여 UnloadCopyUtility를 실행합니다.

    Amazon Redshift 콘솔을 사용하여 UNLOAD 및 COPY 프로세서를 모니터링합니다.

  5. 검증 쿼리를 다시 실행하여 결과가 원본 클러스터의 결과와 일치하는지 확인합니다.

  6. 원본 클러스터 및 대상 클러스터의 이름을 변경하여 엔드포인트를 스왑합니다. 중단을 방지하려면 업무 시간을 피해 이 작업을 수행하십시오.

  7. 모든 SQL 클라이언트(예: ETL) 및 보고 도구를 사용하여 대상 클라이언트에 연결할 수 있는지 확인합니다.

  8. 암호화되지 않은 원본 클러스터를 종료합니다.