AWS - Redshift Enum

Support HackTricks

Amazon Redshift

Redshift एक पूरी तरह से प्रबंधित सेवा है जो आकार में एक पेटाबाइट से अधिक तक स्केल कर सकती है, जिसका उपयोग बिग डेटा समाधानों के लिए डेटा वेयरहाउस के रूप में किया जाता है। Redshift क्लस्टरों का उपयोग करके, आप अपने डेटा सेट के खिलाफ तेज, SQL-आधारित क्वेरी उपकरणों और व्यावसायिक बुद्धिमत्ता अनुप्रयोगों का उपयोग करके विश्लेषण चला सकते हैं ताकि आपके व्यवसाय के लिए दृष्टि की बेहतर समझ प्राप्त की जा सके।

Redshift एक चार-स्तरीय एन्क्रिप्शन कुंजी हायरार्की का उपयोग करके विश्राम में एन्क्रिप्शन प्रदान करता है, जिसमें शीर्ष स्तर की कुंजी प्रबंधित करने के लिए KMS या CloudHSM का उपयोग किया जाता हैजब आपके क्लस्टर के लिए एन्क्रिप्शन सक्षम होता है, तो इसे अक्षम नहीं किया जा सकता है और इसके विपरीत। जब आपके पास एक अनएन्क्रिप्टेड क्लस्टर होता है, तो इसे एन्क्रिप्ट नहीं किया जा सकता है।

आपके क्लस्टर के लिए एन्क्रिप्शन केवल इसके निर्माण के दौरान हो सकता है, और एक बार एन्क्रिप्ट होने के बाद, डेटा, मेटाडेटा, और कोई भी स्नैपशॉट भी एन्क्रिप्टेड होते हैं। एन्क्रिप्शन कुंजी के स्तर इस प्रकार हैं, स्तर एक मास्टर कुंजी है, स्तर दो क्लस्टर एन्क्रिप्शन कुंजी, CEK, स्तर तीन, डेटाबेस एन्क्रिप्शन कुंजी, DEK, और अंततः स्तर चार, डेटा एन्क्रिप्शन कुंजी स्वयं

KMS

आपके क्लस्टर के निर्माण के दौरान, आप या तो Redshift के लिए डिफ़ॉल्ट KMS कुंजी का चयन कर सकते हैं या अपनी स्वयं की CMK का चयन कर सकते हैं, जो आपको कुंजी के नियंत्रण पर अधिक लचीलापन देता है, विशेष रूप से एक ऑडिटेबल दृष्टिकोण से।

Redshift के लिए डिफ़ॉल्ट KMS कुंजी तब स्वचालित रूप से बनाई जाती है जब पहली बार कुंजी विकल्प का चयन और उपयोग किया जाता है, और इसे AWS द्वारा पूरी तरह से प्रबंधित किया जाता है।

यह KMS कुंजी फिर CMK मास्टर कुंजी, स्तर एक के साथ एन्क्रिप्ट की जाती है। यह एन्क्रिप्टेड KMS डेटा कुंजी फिर क्लस्टर एन्क्रिप्शन कुंजी, CEK, स्तर दो के रूप में उपयोग की जाती है। यह CEK फिर KMS द्वारा Redshift को भेजी जाती है जहां इसे क्लस्टर से अलग रखा जाता है। Redshift फिर इस एन्क्रिप्टेड CEK को एक सुरक्षित चैनल के माध्यम से क्लस्टर को भेजता है जहां इसे मेमोरी में संग्रहीत किया जाता है।

Redshift फिर KMS से CEK, स्तर दो को डिक्रिप्ट करने का अनुरोध करता है। यह डिक्रिप्टेड CEK फिर भी मेमोरी में संग्रहीत किया जाता है। Redshift फिर एक यादृच्छिक डेटाबेस एन्क्रिप्शन कुंजी, DEK, स्तर तीन बनाता है, और उसे क्लस्टर की मेमोरी में लोड करता है। मेमोरी में डिक्रिप्टेड CEK फिर DEK को एन्क्रिप्ट करता है, जिसे भी मेमोरी में संग्रहीत किया जाता है।

यह एन्क्रिप्टेड DEK फिर एक सुरक्षित चैनल के माध्यम से भेजा जाता है और Redshift में क्लस्टर से अलग संग्रहीत किया जाता है। CEK और DEK अब क्लस्टर की मेमोरी में एन्क्रिप्टेड और डिक्रिप्टेड दोनों रूपों में संग्रहीत हैं। डिक्रिप्टेड DEK फिर डेटा कुंजी, स्तर चार, को एन्क्रिप्ट करने के लिए उपयोग किया जाता है, जो Redshift द्वारा डेटाबेस में प्रत्येक डेटा ब्लॉक के लिए यादृच्छिक रूप से उत्पन्न की जाती हैं।

आप AWS Trusted Advisor का उपयोग अपने Amazon S3 बकेट की कॉन्फ़िगरेशन की निगरानी करने और यह सुनिश्चित करने के लिए कर सकते हैं कि बकेट लॉगिंग सक्षम है, जो सुरक्षा ऑडिट करने और S3 में उपयोग पैटर्न को ट्रैक करने के लिए उपयोगी हो सकता है।

CloudHSM

Using Redshift with CloudHSM

जब आप CloudHSM के साथ अपने एन्क्रिप्शन को करने के लिए काम कर रहे होते हैं, तो सबसे पहले आपको अपने HSM क्लाइंट और Redshift के बीच एक विश्वसनीय कनेक्शन सेट करना होगा जबकि क्लाइंट और सर्वर प्रमाणपत्रों का उपयोग करते हुए।

यह कनेक्शन सुरक्षित संचार प्रदान करने के लिए आवश्यक है, जिससे एन्क्रिप्शन कुंजियों को आपके HSM क्लाइंट और आपके Redshift क्लस्टरों के बीच भेजा जा सके। एक यादृच्छिक रूप से उत्पन्न निजी और सार्वजनिक कुंजी जोड़ी का उपयोग करते हुए, Redshift एक सार्वजनिक क्लाइंट प्रमाणपत्र बनाता है, जिसे एन्क्रिप्ट किया जाता है और Redshift द्वारा संग्रहीत किया जाता है। इसे डाउनलोड और आपके HSM क्लाइंट में पंजीकृत किया जाना चाहिए, और सही HSM विभाजन को सौंपा जाना चाहिए।

आपको फिर Redshift को अपने HSM क्लाइंट के निम्नलिखित विवरणों के साथ कॉन्फ़िगर करना होगा: HSM IP पता, HSM विभाजन नाम, HSM विभाजन पासवर्ड, और सार्वजनिक HSM सर्वर प्रमाणपत्र, जिसे CloudHSM द्वारा एक आंतरिक मास्टर कुंजी का उपयोग करके एन्क्रिप्ट किया गया है। एक बार जब यह जानकारी प्रदान की जाती है, तो Redshift पुष्टि करेगा और सत्यापित करेगा कि यह विकास विभाजन से कनेक्ट और एक्सेस कर सकता है।

यदि आपकी आंतरिक सुरक्षा नीतियाँ या शासन नियंत्रण यह निर्धारित करते हैं कि आपको कुंजी रोटेशन लागू करना चाहिए, तो यह Redshift के साथ संभव है जो आपको एन्क्रिप्टेड क्लस्टरों के लिए एन्क्रिप्शन कुंजियों को घुमाने की अनुमति देता है, हालाँकि, आपको यह जानना आवश्यक है कि कुंजी रोटेशन प्रक्रिया के दौरान, यह एक बहुत छोटे समय के लिए क्लस्टर को अनुपलब्ध बना देगा, इसलिए यह सबसे अच्छा है कि आप केवल तब कुंजी घुमाएँ जब आपको इसकी आवश्यकता हो, या यदि आपको लगता है कि वे समझौता किए जा सकते हैं।

रोटेशन के दौरान, Redshift आपके क्लस्टर के लिए CEK को घुमाएगा और उस क्लस्टर के किसी भी बैकअप के लिए। यह क्लस्टर के लिए DEK को घुमाएगा लेकिन यह संभव नहीं है कि DEK को उन स्नैपशॉट्स के लिए घुमाया जाए जो S3 में संग्रहीत हैं और जिन्हें DEK का उपयोग करके एन्क्रिप्ट किया गया है। यह प्रक्रिया पूरी होने तक क्लस्टर को 'कुंजी घुमा रहा है' की स्थिति में रखेगा जब स्थिति 'उपलब्ध' पर लौटेगी।

Enumeration

# 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

Persistence

निम्नलिखित क्रियाएँ क्लस्टर के लिए अन्य AWS खातों को पहुँच प्रदान करने की अनुमति देती हैं:

Support HackTricks

Last updated