Amazon S3 एक सेवा है जो आपको बड़ी मात्रा में डेटा स्टोर करने की अनुमति देती है।
Amazon S3 डेटा की रेस्ट पर सुरक्षा प्राप्त करने के लिए कई विकल्प प्रदान करता है। विकल्प में अनुमति (नीति), एन्क्रिप्शन (क्लाइंट और सर्वर साइड), बकेट वर्जनिंग और MFAआधारित हटाने शामिल हैं। उपयोगकर्ता किसी भी विकल्प को सक्षम कर सकते हैं ताकि डेटा सुरक्षा प्राप्त कर सकें। डेटा प्रतिलिपि AWS द्वारा एक आंतरिक सुविधा है जहां S3 स्वचालित रूप से प्रत्येक ऑब्जेक्ट को सभी उपलब्धता क्षेत्रों में प्रतिलिप्त करता है और संगठन को इस मामले में इसे सक्षम करने की आवश्यकता नहीं है।
संसाधन-आधारित अनुमतियों के साथ, आप अपने बकेट के उप-निर्देशिकाओं के लिए अलग-अलग अनुमतियाँ परिभाषित कर सकते हैं।
बकेट वर्जनिंग और MFA आधारित हटाना
जब बकेट वर्जनिंग सक्षम होती है, तो किसी भी कार्रवाई जो किसी फ़ाइल को बदलने का प्रयास करती है, वह फ़ाइल का एक नया संस्करण उत्पन्न करेगी, पिछले संदर्भ को भी बनाए रखते हुए। इसलिए, यह अपनी सामग्री को अधिलेखित नहीं करेगा।
इसके अतिरिक्त, MFA आधारित हटाना बकेट में फ़ाइलों के संस्करणों को हटाने से रोकेगा और बकेट वर्जनिंग को अक्षम करने से भी रोकेगा, ताकि कोई हमलावर इन फ़ाइलों को बदल नहीं सकेगा।
S3 एक्सेस लॉग
किसी बकेट पर S3 एक्सेस लॉगिन को सक्षम करना संभव है (जो डिफ़ॉल्ट रूप से अक्षम होता है) और लॉग को एक विभिन्न बकेट में सहेजने के लिए ताकि पता चले कि बकेट का उपयोग कौन कर रहा है (दोनों बकेट एक ही क्षेत्र में होना चाहिए)।
S3 प्रीसाइंड URL
एक प्रीसाइंड URL उत्पन्न करना संभव है जिसका उपयोग आम तौर पर बकेट में निर्दिष्ट फ़ाइल तक पहुँचने के लिए किया जा सकता है। एक प्रीसाइंड URL इस तरह दिखता है:
प्रीसाइंड URL जेनरेट करने के लिए एकमात्र आवश्यक अनुमति है जो दी जा रही है, इसलिए पिछले कमांड के लिए मुख्य को आवश्यक अनुमति केवल s3:GetObject की आवश्यकता है।
अन्य अनुमतियों के साथ प्रीसाइंड URL बनाना भी संभव है:
DEK का मतलब है डेटा एन्क्रिप्शन की और यह वह कुंजी है जो हमेशा डेटा को एन्क्रिप्ट करने के लिए उत्पन्न और उपयोग किया जाता है।
S3 संरक्षण के सर्वर-द्वारा एन्क्रिप्शन साथ S3 प्रबंधित कुंजियों, SSE-S3
इस विकल्प को कम समाकृति की आवश्यकता होती है और उपयोग किए जाने वाले सभी एन्क्रिप्शन कुंजियों का प्रबंधन AWS द्वारा किया जाता है। आपको करना यह है कि अपने डेटा को अपलोड करें और S3 सभी अन्य पहलुओं का संभालन करेगा। S3 खाते में प्रत्येक बकेट को एक बकेट कुंजी का निर्धारण किया जाता है।
एन्क्रिप्शन:
ऑब्ज
# Get buckets ACLsawss3apiget-bucket-acl--bucket<bucket-name>awss3apiget-object-acl--bucket<bucket-name>--keyflag# Get policyawss3apiget-bucket-policy--bucket<bucket-name>awss3apiget-bucket-policy-status--bucket<bucket-name>#if it's public# list S3 buckets associated with a profileawss3lsawss3apilist-buckets# list content of bucket (no creds)awss3lss3://bucket-name--no-sign-requestawss3lss3://bucket-name--recursive# list content of bucket (with creds)awss3lss3://bucket-nameawss3apilist-objects-v2--bucket<bucket-name>awss3apilist-objects--bucket<bucket-name>awss3apilist-object-versions--bucket<bucket-name># copy local folder to S3awss3cpMyFolders3://bucket-name--recursive# deleteawss3rbs3://bucket-name–-force# download a whole S3 bucketawss3syncs3://<bucket>/.# move S3 bucket to different locationawss3syncs3://oldbuckets3://newbucket--source-regionus-west-1# list the sizes of an S3 bucket and its contentsawss3apilist-objects--bucketBUCKETNAME--outputjson--query"[sum(Contents[].Size), length(Contents[])]"# Update Bucket policyawss3apiput-bucket-policy--policyfile:///root/policy.json--bucket<bucket-name>##JSON policy example{"Id":"Policy1568185116930","Version":"2012-10-17","Statement": [{"Sid":"Stmt1568184932403","Action": ["s3:ListBucket"],"Effect":"Allow","Resource":"arn:aws:s3:::welcome","Principal":"*"},{"Sid":"Stmt1568185007451","Action": ["s3:GetObject"],"Effect":"Allow","Resource":"arn:aws:s3:::welcome/*","Principal":"*"}]}# Update bucket ACLawss3apiget-bucket-acl--bucket<bucket-name># Way 1 to get the ACLawss3apiput-bucket-acl--bucket<bucket-name>--access-control-policyfile://acl.jsonawss3apiget-object-acl--bucket<bucket-name>--keyflag#Way 2 to get the ACLawss3apiput-object-acl--bucket<bucket-name>--keyflag--access-control-policyfile://objacl.json##JSON ACL example## Make sure to modify the Owner’s displayName and ID according to the Object ACL you retrieved.{"Owner":{"DisplayName":"<DisplayName>","ID":"<ID>"},"Grants": [{"Grantee":{"Type":"Group","URI":"http://acs.amazonaws.com/groups/global/AuthenticatedUsers"},"Permission":"FULL_CONTROL"}]}## An ACL should give you the permission WRITE_ACP to be able to put a new ACL
दोहरी-स्टैक
एक वर्चुअल होस्टेड-स्टाइल या पथ-स्टाइल एंडपॉइंट नाम का उपयोग करके आप एक एस 3 बकेट तक दोहरी-स्टैक एंडपॉइंट के माध्यम से पहुंच सकते हैं। ये आईपीवी6 के माध्यम से एस 3 तक पहुंचने के लिए उपयोगी हैं।
दोहरी-स्टैक एंडपॉइंट्स निम्नलिखित सिंटैक्स का उपयोग करते हैं:
bucketname.s3.dualstack.aws-region.amazonaws.com
s3.dualstack.aws-region.amazonaws.com/bucketname
विशेषाधिकार
निम्नलिखित पृष्ठ पर आप चेक कर सकते हैं कि विशेषाधिकार बढ़ाने के लिए एस 3 अनुमतियों का दुरुपयोग कैसे किया जा सकता है:
अअधिकृत पहुंच
S3 पोस्ट एक्सप्लोइटेशन
स्थिरता
अन्य S3 दुरुपयोग
S3 HTTP कैश पॉइज़निंग समस्या
इस शोध के अनुसार एक विभिन्न बकेट के प्रतिक्रिया को एक अन्य बकेट का हिस्सा मानकर कैश करना संभव था। इसका दुरुपयोग किया जा सकता था उदाहरण के लिए जावास्क्रिप्ट फ़ाइल प्रतिक्रियाएँ बदलने और S3 का उपयोग करके स्थिर कोड स्टोर करने के लिए विभिन्न पृष्ठों को कंप्रमाइज़ करने के लिए।
अमेज़न एथेना
अमेज़न एथेना एक इंटरैक्टिव क्वेरी सेवा है जो स्टैंडर्ड SQL का उपयोग करके अमेज़न सिम्पल स्टोरेज सेवा (एमेज़न एस 3) में सीधे डेटा का विश्लेषण करना आसान बनाती है।
आपको मॉनिटर किए जाने वाले एस 3 बकेट में दिखने वाले सामग्री के प्रारूप के साथ एक संबंधित डीबी तालिका तैयार करने की आवश्यकता है। और फिर, अमेज़न एथेना लॉग्स से डीबी को पॉप्युलेट करने में सक्षम होगा, ताकि आप क्वेरी कर सकें।
अमेज़न एथेना पहले से एन्क्रिप्ट किए गए एस 3 डेटा क्वेरी करने की क्षमता का समर्थन करता है और यदि इसे इस प्रकार कॉन्फ़िगर किया गया है, एथेना उत्तरों को भी एन्क्रिप्ट कर सकता है जो फिर से एस 3 में स्टोर किए जा सकते हैं।
इन परिणामों के एन्क्रिप्शन को नीचे लागू किए गए एस 3 डेटा के अंतर्निहित एन्क्रिप्शन से अलग है, यानी यदि एस 3 डेटा एन्क्रिप्ट नहीं है, तो क्वेरी किए गए परिणामों को एन्क्रिप्ट किया जा सकता है। कुछ बातों का ध्यान रखना महत्वपूर्ण है कि अमेज़न एथेना केवल उन डेटा का समर्थन करता है जिन्हें **एस 3 एन्क्रिप्शन विध
# Get catalogsawsathenalist-data-catalogs# Get databases inside catalogawsathenalist-databases--catalog-name<catalog-name>awsathenalist-table-metadata--catalog-name<catalog-name>--database-name<db-name># Get query executions, queries and resultsawsathenalist-query-executionsawsathenaget-query-execution--query-execution-id<id># Get query and meta of resultsawsathenaget-query-results--query-execution-id<id># This will rerun the query and get the results# Get workgroups & Prepared statementsawsathenalist-work-groupsawsathenalist-prepared-statements--work-group<wg-name>awsathenaget-prepared-statement--statement-name<name>--work-group<wg-name># Run queryawsathenastart-query-execution--query-string<query>