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 credspsql-hredshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com-Uadmin-ddev-p5439