AWS - Redshift Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Amazon Redshift

Redshift, büyük veri çözümleri için bir veri ambarı olarak kullanılan, boyutu bir petabaytın üzerine ölçeklenebilen tamamen yönetilen bir hizmettir. Redshift kümeleme kullanarak, hızlı, SQL tabanlı sorgu araçları ve iş zekası uygulamaları kullanarak veri kümeleriniz üzerinde analiz yapabilir ve işletmenizin vizyonunu daha iyi anlayabilirsiniz.

Redshift, KMS veya CloudHSM kullanarak dört katmanlı bir şifreleme anahtar hiyerarşisi kullanarak dinlenme sırasında şifreleme sunar. Kümeniz için şifreleme etkinleştirildiğinde, devre dışı bırakılamaz ve tam tersi. Şifrelenmemiş bir kümeniz olduğunda, şifrelenemez.

Kümeniz için şifreleme yalnızca oluşturulma sırasında gerçekleşebilir ve bir kez şifrelenmişse, veri, meta veri ve herhangi bir anlık görüntü de şifrelenir. Şifreleme anahtarlarının katman düzeyi aşağıdaki gibidir, birinci katman anahtar, ikinci katman küme şifreleme anahtarı (CEK), üçüncü katman veritabanı şifreleme anahtarı (DEK) ve son olarak dördüncü katman veri şifreleme anahtarlarıdır.

KMS

Kümenizin oluşturulması sırasında, Redshift için varsayılan KMS anahtarını seçebilir veya kendi CMK'nızı seçebilirsiniz, bu da anahtarın kontrolü konusunda denetlenebilirlik açısından daha fazla esneklik sağlar.

Redshift için varsayılan KMS anahtarı, anahtar seçeneği ilk kez seçildiğinde ve kullanıldığında Redshift tarafından otomatik olarak oluşturulur ve AWS tarafından tamamen yönetilir.

Bu KMS anahtarı daha sonra CMK anahtarının birinci katmanıyla şifrelenir. Bu şifreli KMS veri anahtarı daha sonra küme şifreleme anahtarı (CEK) olarak kullanılır. Bu CEK daha sonra KMS tarafından Redshift'e gönderilir ve kümeden ayrı olarak depolanır. Redshift daha sonra bu şifreli CEK'yi güvenli bir kanal üzerinden kümeye gönderir ve bellekte depolar.

Redshift daha sonra KMS'ten CEK'yi çözmesini isteyerek, ikinci katman CEK'yi çözer. Bu çözülen CEK de bellekte depolanır. Redshift daha sonra rastgele bir veritabanı şifreleme anahtarı (DEK) oluşturur ve bunu kümenin belleğine yükler. Bellekteki çözülen CEK, DEK'yi şifreler ve bu da bellekte depolanır.

Bu şifreli DEK daha sonra güvenli bir kanal üzerinden gönderilir ve kümeden ayrı olarak Redshift'te depolanır. Hem CEK hem de DEK artık kümenin belleğinde hem şifreli hem de çözülmüş bir şekilde depolanır. Çözülen DEK, veritabanındaki her veri bloğu için Redshift tarafından rastgele oluşturulan veri anahtarlarını (dördüncü katman) şifrelemek için kullanılır.

Amazon S3 kovalarınızın yapılandırmasını izlemek ve kova günlüğünün etkinleştirildiğinden emin olmak için AWS Trusted Advisor'ı kullanabilirsiniz, bu da güvenlik denetimleri yapmak ve S3'teki kullanım desenlerini izlemek için faydalı olabilir.

CloudHSM

CloudHSM ile Redshift Kullanımı

Şifreleme için CloudHSM ile çalışırken, öncelikle HSM istemciniz ve Redshift arasında güvenilir bir bağlantı kurmanız gerekmektedir ve bunun için istemci ve sunucu sertifikaları kullanmanız gerekmektedir.

Bu bağlantı, şifreleme anahtarlarının HSM istemciniz ve Redshift kümeniz arasında gönderilmesine izin veren güvenli iletişimi sağlamak için gereklidir. Rastgele oluşturulan bir özel ve genel anahtar çifti kullanarak, Redshift bir genel istemci sertifikası oluşturur, bu sertifika şifrelenir ve Redshift tarafından depolanır. Bu sertifika indirilip HSM istemcinize kaydedilmeli ve doğru HSM bölümüne atanmalıdır.

Daha sonra Redshift'i HSM istemcinizin aşağıdaki ayrıntılarıyla yapılandırmanız gerekmektedir: HSM IP adresi, HSM bölüm adı, HSM bölüm parolası ve CloudHSM tarafından bir iç anahtar kullanılarak şifrelenen genel HSM sunucu sertifikası. Bu bilgiler sağlandıktan sonra, Redshift bağlantı kurup geliştirme bölümüne erişebileceğini onaylayacak ve doğrulayacaktır.

Dahili güvenlik politikalarınız veya yönetişim kontrolleriniz, şifreleme anahtarlarını döndürmeniz gerektiğini belirtiyorsa, şifrelenmiş küme için şifreleme anahtarlarını döndürmenize olanak tanır, ancak dikkate almanız gereken bir nokta, anahtar döndürme sürecinde kümenin çok kısa bir süre için kullanılamaz hale geleceğidir, bu nedenle anahtarları sadece ihtiyaç duyduğunuzda veya kompromize uğramış olabileceğini düşündüğünüzde döndürmek en iyisidir.

Döndürme sırasında, Redshift kümeniz için CEK'yi ve o kümenin yedeklerini döndürür. Küme için bir DEK döndürür, ancak DEK kullanılarak şifrelenen S3'de depolanan anlık görüntüler için bir DEK döndürmek mümkün değildir. Kümenin durumu 'anahtar döndürme' olarak ayarlanır ve işlem tamamlandığında durum 'kullanılabilir' olarak geri döner.

Sıralama

# 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

Privesc

pageAWS - Redshift Privesc

Kalıcılık

Aşağıdaki eylemler, kümelere diğer AWS hesaplarına erişim izni vermek için kullanılır:

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated