AWS - Redshift Enum

htARTE (HackTricks AWS Red Team 전문가)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!

HackTricks를 지원하는 다른 방법:

Amazon Redshift

Redshift은 빅 데이터 솔루션을 위한 데이터 웨어하우스로 사용되는 페타바이트 이상으로 확장 가능한 완전히 관리되는 서비스입니다. Redshift 클러스터를 사용하면 빠른 SQL 기반 쿼리 도구 및 비즈니스 인텔리전스 애플리케이션을 사용하여 데이터 집합에 대한 분석을 수행하고 비즈니스의 비전을 더 잘 파악할 수 있습니다.

Redshift는 KMS 또는 CloudHSM을 사용하여 네 개의 계층으로 구성된 암호화 키 계층을 사용하여 데이터 암호화를 제공합니다. 클러스터에 대한 암호화가 활성화되면 비활성화할 수 없으며 그 반대도 마찬가지입니다. 암호화되지 않은 클러스터는 암호화할 수 없습니다.

클러스터의 암호화는 생성 중에만 수행할 수 있으며 한 번 암호화되면 데이터, 메타데이터 및 스냅샷도 암호화됩니다. 암호화 키의 계층 수준은 다음과 같습니다. 첫 번째 계층은 마스터 키, 두 번째 계층은 클러스터 암호화 키(CEK), 세 번째 계층은 데이터베이스 암호화 키(DEK), 마지막으로 네 번째 계층은 데이터 암호화 키 자체입니다.

KMS

클러스터 생성 중에 Redshift의 기본 KMS 키를 선택하거나 사용자 고유의 CMK를 선택할 수 있으며, 이를 통해 키의 제어에 대한 유연성이 높아집니다.

Redshift의 기본 KMS 키는 Redshift에 의해 자동으로 생성되며 처음으로 키 옵션이 선택되고 사용될 때 완전히 AWS에 의해 관리됩니다.

이 KMS 키는 마스터 키인 첫 번째 계층으로 암호화됩니다. 이 암호화된 KMS 데이터 키는 클러스터 암호화 키(CEK)인 두 번째 계층으로 사용됩니다. 이 CEK는 KMS에 의해 Redshift로 전송되어 클러스터와 별도로 저장됩니다. 그런 다음 Redshift는 이 암호화된 CEK를 클러스터로 안전한 채널을 통해 전송하여 메모리에 저장합니다.

그런 다음 Redshift는 KMS에게 CEK(두 번째 계층)를 복호화하도록 요청합니다. 이 복호화된 CEK도 메모리에 저장됩니다. 그런 다음 Redshift는 무작위 데이터베이스 암호화 키(DEK)인 세 번째 계층을 생성하고 클러스터의 메모리에로드합니다. 메모리에 저장된 복호화된 CEK는 메모리에 저장된 DEK를 암호화하며 이 또한 메모리에 저장됩니다.

이 암호화된 DEK는 안전한 채널을 통해 전송되어 클러스터와 별도로 Redshift에 저장됩니다. CEK 및 DEK는 이제 클러스터의 메모리에 암호화 및 복호화된 형태로 모두 저장됩니다. 복호화된 DEK는 데이터베이스의 각 데이터 블록에 대해 Redshift에 의해 무작위로 생성된 데이터 키(네 번째 계층)를 암호화하는 데 사용됩니다.

Amazon S3 버킷의 구성을 모니터링하고 버킷 로깅이 활성화되어 있는지 확인하는 데 유용한 AWS Trusted Advisor를 사용할 수 있습니다. 이는 보안 감사를 수행하고 S3에서 사용 패턴을 추적하는 데 유용할 수 있습니다.

CloudHSM

CloudHSM을 사용한 Redshift

암호화를 수행하기 위해 CloudHSM을 사용할 때, 먼저 HSM 클라이언트와 Redshift 간에 신뢰할 수 있는 연결을 설정해야 합니다. 이때 클라이언트 및 서버 인증서를 사용합니다.

이 연결은 암호화 키가 HSM 클라이언트와 Redshift 클러스터 간에 전송되도록 허용하는 안전한 통신을 제공해야 합니다. 무작위로 생성된 개인 및 공개 키 쌍을 사용하여 Redshift는 공개 클라이언트 인증서를 생성하고 이를 암호화하여 저장합니다. 이를 HSM 클라이언트에 다운로드하고 등록하고 올바른 HSM 파티션에 할당해야 합니다.

그런 다음 Redshift를 HSM 클라이언트의 다음 세부 정보로 구성해야 합니다: HSM IP 주소, HSM 파티션 이름, HSM 파티션 암호, 내부 마스터 키를 사용하여 암호화된 HSM 서버 공개 인증서입니다. 이 정보를 제공하면 Redshift가 연결을 확인하고 개발 파티션에 액세스할 수 있는지 확인합니다.

내부 보안 정책이나 거버넌스 컨트롤이 키 회전을 적용해야 한다면, Redshift를 사용하여 암호화된 클러스터의 암호화 키를 회전시킬 수 있지만, 키 회전 프로세스 중에 클러스터를 매우 짧은 시간 동안 사용할 수 없게 만들기 때문에 키 회전 시 클러스터를 필요할 때만 회전하거나 유출될 수 있다고 생각되는 경우에만 회전하는 것이 좋습니다.

키 회전 중에 Redshift는 클러스터의 CEK 및 해당 클러스터의 백업을 위해 CEK를 회전합니다. 클러스터의 DEK를 회전하지만 DEK를 사용하여 암호화된 S3에 저장된 스냅샷의 DEK를 회전할 수는 없습니다. 프로세스가 완료되면 클러스터 상태가 '사용 가능'로 반환될 때까지 클러스터를 '키 회전 중' 상태로 설정합니다.

열거

# Get clusters
aws redshift describe-clusters
## Get if publicly accessible
aws redshift describe-clusters | jq -r ".Clusters[].PubliclyAccessible"
## Get DB username to login
aws redshift describe-clusters | jq -r ".Clusters[].MasterUsername"
## Get endpoint
aws redshift describe-clusters | jq -r ".Clusters[].Endpoint"
## Public addresses of the nodes
aws redshift describe-clusters | jq -r ".Clusters[].ClusterNodes[].PublicIPAddress"
## Get IAM roles of the clusters
aws redshift describe-clusters | jq -r ".Clusters[].IamRoles"

# Endpoint access & authorization
aws redshift describe-endpoint-access
aws redshift describe-endpoint-authorization

# Get credentials
aws redshift get-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).
aws redshift get-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 profiles
aws redshift describe-authentication-profiles

# Snapshots
aws redshift describe-cluster-snapshots

# Scheduled actions
aws redshift describe-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 -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U admin -d dev -p 5439

권한 상승

pageAWS - Redshift Privesc

지속성

다음 작업은 클러스터에 다른 AWS 계정에 액세스 권한을 부여할 수 있습니다:

제로부터 영웅이 될 때까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법:

最終更新