Redshift는 빅 데이터 솔루션을 위한 데이터 웨어하우스로 사용되는 완전 관리형 서비스로, 크기를 페타바이트 이상으로 확장할 수 있습니다. Redshift 클러스터를 사용하면 빠른 SQL 기반 쿼리 도구와 비즈니스 인텔리전스 애플리케이션을 통해 데이터 세트에 대한 분석을 실행하여 비즈니스 비전을 더 잘 이해할 수 있습니다.
Redshift는 KMS 또는 CloudHSM을 사용하여 최상위 키를 관리하는 네 단계의 암호화 키 계층을 사용하여 정지 상태에서 암호화를 제공합니다. 클러스터에 대해 암호화가 활성화되면 비활성화할 수 없으며 그 반대도 마찬가지입니다. 암호화되지 않은 클러스터는 암호화할 수 없습니다.
클러스터의 암호화는 생성 중에만 발생할 수 있으며, 암호화된 후에는 데이터, 메타데이터 및 모든 스냅샷도 암호화됩니다. 암호화 키의 계층 수준은 다음과 같습니다. 1단계는 마스터 키, 2단계는 클러스터 암호화 키(CEK), 3단계는 데이터베이스 암호화 키(DEK), 마지막으로 4단계는 데이터 암호화 키 자체입니다.
KMS
클러스터를 생성하는 동안 Redshift의 기본 KMS 키를 선택하거나 자신의 CMK를 선택할 수 있으며, 이는 키의 제어에 대해 더 많은 유연성을 제공합니다. 특히 감사 가능한 관점에서 그렇습니다.
Redshift의 기본 KMS 키는 키 옵션이 처음 선택되고 사용될 때 Redshift에 의해 자동으로 생성되며, AWS에 의해 완전히 관리됩니다.
이 KMS 키는 CMK 마스터 키(1단계)로 암호화됩니다. 이 암호화된 KMS 데이터 키는 클러스터 암호화 키(CEK, 2단계)로 사용됩니다. 이 CEK는 KMS에 의해 Redshift로 전송되어 클러스터와는 별도로 저장됩니다. Redshift는 이 암호화된 CEK를 안전한 채널을 통해 클러스터에 전송하여 메모리에 저장합니다.
Redshift는 KMS에 CEK(2단계)의 암호 해제를 요청합니다. 이 복호화된 CEK는 메모리에 저장됩니다. Redshift는 무작위 데이터베이스 암호화 키(DEK, 3단계)를 생성하고 이를 클러스터의 메모리에 로드합니다. 메모리의 복호화된 CEK는 DEK를 암호화하며, DEK도 메모리에 저장됩니다.
이 암호화된 DEK는 안전한 채널을 통해 전송되어 Redshift에 클러스터와는 별도로 저장됩니다. CEK와 DEK는 이제 클러스터의 메모리에 암호화된 형태와 복호화된 형태로 모두 저장됩니다. 복호화된 DEK는 데이터베이스의 각 데이터 블록에 대해 Redshift가 무작위로 생성한 데이터 키(4단계)를 암호화하는 데 사용됩니다.
AWS Trusted Advisor를 사용하여 Amazon S3 버킷의 구성을 모니터링하고 버킷 로깅이 활성화되어 있는지 확인할 수 있으며, 이는 보안 감사 수행 및 S3에서 사용 패턴 추적에 유용할 수 있습니다.
CloudHSM
Using Redshift with CloudHSM
CloudHSM을 사용하여 암호화를 수행할 때, 먼저 HSM 클라이언트와 Redshift 간의 신뢰할 수 있는 연결을 설정해야 하며, 클라이언트 및 서버 인증서를 사용해야 합니다.
이 연결은 안전한 통신을 제공하는 데 필요하며, 암호화 키가 HSM 클라이언트와 Redshift 클러스터 간에 전송될 수 있도록 합니다. 무작위로 생성된 개인 키와 공개 키 쌍을 사용하여 Redshift는 공개 클라이언트 인증서를 생성하며, 이는 암호화되어 Redshift에 저장됩니다. 이 인증서는 다운로드하여 HSM 클라이언트에 등록하고 올바른 HSM 파티션에 할당해야 합니다.
그런 다음 HSM 클라이언트의 다음 세부정보로 Redshift를 구성해야 합니다: HSM IP 주소, HSM 파티션 이름, HSM 파티션 비밀번호, CloudHSM에 의해 내부 마스터 키로 암호화된 공개 HSM 서버 인증서. 이 정보가 제공되면 Redshift는 개발 파티션에 연결하고 접근할 수 있는지 확인합니다.
내부 보안 정책이나 거버넌스 제어가 키 회전을 적용해야 한다고 규정하는 경우, Redshift는 암호화된 클러스터에 대해 암호화 키를 회전할 수 있도록 하여 이를 가능하게 합니다. 그러나 키 회전 과정에서 클러스터가 매우 짧은 시간 동안 사용할 수 없게 되므로, 필요할 때만 키를 회전하는 것이 가장 좋습니다. 또는 키가 손상되었을 가능성이 있다고 느낄 경우에만 회전해야 합니다.
회전 중에 Redshift는 클러스터와 해당 클러스터의 모든 백업에 대해 CEK를 회전합니다. 클러스터에 대한 DEK는 회전하지만, DEK를 사용하여 암호화된 S3에 저장된 스냅샷에 대한 DEK는 회전할 수 없습니다. 이 과정이 완료될 때까지 클러스터는 '키 회전 중' 상태로 유지되며, 그 후 상태는 '사용 가능'으로 돌아갑니다.
Enumeration
# Get clustersawsredshiftdescribe-clusters## Get if publicly accessibleawsredshiftdescribe-clusters|jq-r".Clusters[].PubliclyAccessible"## Get DB username to loginawsredshiftdescribe-clusters|jq-r".Clusters[].MasterUsername"## Get endpointawsredshiftdescribe-clusters|jq-r".Clusters[].Endpoint"## Public addresses of the nodesawsredshiftdescribe-clusters|jq-r".Clusters[].ClusterNodes[].PublicIPAddress"## Get IAM roles of the clustersawsredshiftdescribe-clusters|jq-r".Clusters[].IamRoles"# Endpoint access & authorizationawsredshiftdescribe-endpoint-accessawsredshiftdescribe-endpoint-authorization# Get credentialsawsredshiftget-cluster-credentials--db-user<username>--cluster-identifier<cluster-id>## By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes).
awsredshiftget-cluster-credentials-with-iam--cluster-identifier<cluster-id>## Gives creds to access redshift with the IAM redshift permissions given to the current AWS account## More in https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html# Authentication profilesawsredshiftdescribe-authentication-profiles# Snapshotsawsredshiftdescribe-cluster-snapshots# Scheduled actionsawsredshiftdescribe-scheduled-actions# Connect# The redshift instance must be publicly available (not by default), the sg need to allow inbounds connections to the port and you need creds
psql-hredshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com-Uadmin-ddev-p5439