Amazon S3 ni huduma inayokuwezesha kuhifadhi kiasi kikubwa cha data.
Amazon S3 hutoa chaguzi kadhaa za kufikia ulinzi wa data wakati wa kupumzika. Chaguzi hizo ni pamoja na Idhini (Sera), Ufichamishaji (Upande wa Mteja na Seva), Utoaji wa Toleo la Kibakuli na MFAkulingana na kufuta. Mtumiaji anaweza kuwezesha mojawapo ya chaguzi hizi kufikia ulinzi wa data. Replikesheni ya data ni kituo cha ndani cha AWS ambapo S3 inajireplika moja kwa moja kila kitu kote katika Maeneo Yote ya Upatikanaji na shirika halihitaji kuwezesha hii katika kesi hii.
Kwa idhini zinazotegemea rasilimali, unaweza kufafanua idhini kwa vijitaa vya chini vya kibakuli chako kando.
Utoaji wa Toleo la Kibakuli na MFA kulingana na kufuta
Wakati utoaji wa toleo la kibakuli unapoanzishwa, hatua yoyote inayojaribu kubadilisha faili ndani ya faili itazalisha toleo jipya la faili, ikihifadhi pia maudhui ya awali ya hiyo hiyo. Kwa hivyo, haitaandika juu ya maudhui yake.
Zaidi ya hayo, kufuta kulingana na MFA kitazuia toleo la faili kwenye kibakuli cha S3 kufutwa na pia kuzuia Utoaji wa Toleo la Kibakuli kulegezwa, hivyo muhusika hataweza kubadilisha faili hizi.
Vipakuli vya Kufikia S3
Inawezekana kuwezesha kuingia kwenye S3 (ambayo kwa chaguo-msingi imelemazwa) kwa kibakuli fulani na kuokoa magogo kwenye kibakuli kingine ili kujua ni nani anayepata kibakuli (vibakuli vyote lazima viwe katika eneo moja).
URL za Kibakuli za Kusainiwa mapema
Inawezekana kuzalisha URL iliyosainiwa mapema ambayo kawaida inaweza kutumika kufikia faili iliyotajwa kwenye kibakuli. URL iliyosainiwa mapema inaonekana kama hii:
Unaweza kuunda URL iliyosainiwa mapema kutumia amri ya cli ukitumia sifa za msingi mwenye ufikivu wa kipengee (ikiwa akaunti unayotumia haina ufikivu, URL iliyosainiwa mapema fupi itaundwa lakini itakuwa haina maana).
Kibali pekee kinachohitajika kuzalisha URL iliyosainiwa mapema ni kibali kinachotolewa, kwa hivyo kwa amri iliyopita kibali pekee kinachohitajika na mhusika ni s3:GetObject
Pia ni rahisi kuunda URL zilizosainiwa mapema na kibali kingine:
DEK inamaanisha Data Encryption Key na ni ufunguo ambao daima huzalishwa na kutumika kuficha data.
Kuficha upande wa seva na S3 kusimamia ufunguo, SSE-S3
Chaguo hili linahitaji usanidi mdogo na usimamizi wote wa ufunguo wa kuficha uliotumiwa unasimamiwa na AWS. Unachohitaji kufanya ni kutuma data yako na S3 itashughulikia vipengele vingine vyote. Kila ndoo katika akaunti ya S3 inapewa ufunguo wa ndoo.
Kuficha:
Data ya Kitu + DEK ya maandishi iliyoundwa --> Data iliyofichwa (imehifadhiwa ndani ya S3)
DEK ya maandishi iliyoundwa + Ufunguo Mkuu wa S3 --> DEK iliyofichwa (imehifadhiwa ndani ya S3) na maandishi ya wazi yamefutwa kumbukumbuni
Kufichua:
DEK iliyofichwa + Ufunguo Mkuu wa S3 --> DEK ya Maandishi
DEK ya Maandishi + Data iliyofichwa --> Data ya Kitu
Tafadhali, kumbuka kwamba katika kesi hii ufunguo unasimamiwa na AWS (mzunguko mara moja kila baada ya miaka 3). Ikiwa utatumia ufunguo wako mwenyewe utaweza kuzungusha, kulemaza, na kutumia udhibiti wa ufikiaji.
Kuficha upande wa seva na S3 kusimamia ufunguo wa KMS, SSE-KMS
Mbinu hii inaruhusu S3 kutumia huduma ya usimamizi wa ufunguo kuzalisha ufunguo wako wa kuficha data. KMS inakupa mabadiliko makubwa zaidi ya jinsi ufunguo wako unavyosimamiwa. Kwa mfano, unaweza kulemaza, kuzungusha, na kutumia udhibiti wa ufikiaji kwa CMK, na amri dhidi ya matumizi yao kwa kutumia AWS Cloud Trail.
Kuficha:
S3 inaomba ufunguo wa data kutoka kwa CMK ya KMS
KMS hutumia CMK kuzalisha jozi ya DEK ya maandishi na DEK iliyofichwa na kuzituma kwa S3
S3 hutumia ufunguo wa maandishi kuficha data, kuhifadhi data iliyofichwa na ufunguo uliofichwa na kufuta kumbukumbu ya ufunguo wa maandishi
Kufichua:
S3 inaomba KMS kufichua ufunguo uliofichwa wa data ya kitu
KMS inafichua ufunguo wa data kwa kutumia CMK na kuirudisha kwa S3
S3 inafichua data ya kitu
Kuficha upande wa seva na ufunguo uliotolewa na mteja, SSE-C
Chaguo hili hukupa fursa ya kutoa ufunguo wako wa msingi ambao labda tayari unautumia nje ya AWS. Ufunguo uliotolewa na mteja basi utatumwa pamoja na data yako kwenda S3, ambapo S3 itafanya kuficha kwa niaba yako.
Kuficha:
Mtumiaji anatuma data ya kitu + Ufunguo wa Mteja kwa S3
Ufunguo wa mteja hutumiwa kuficha data na data iliyofichwa huhifadhiwa
thamani ya HMAC iliyochumwa ya ufunguo wa mteja pia huhifadhiwa kwa ajili ya uthibitisho wa baadaye wa ufunguo
ufunguo wa mteja hufutwa kumbukumbuni
Kufichua:
Mtumiaji anatuma ufunguo wa mteja
Ufunguo huthibitishwa dhidi ya thamani ya HMAC iliyohifadhiwa
Ufunguo uliotolewa na mteja basi hutumiwa kufichua data
Kuficha upande wa mteja na KMS, CSE-KMS
Vivyo hivyo na SSE-KMS, hii pia hutumia huduma ya usimamizi wa ufunguo kuzalisha ufunguo wako wa kuficha data. Hata hivyo, wakati huu KMS inaitwa kupitia mteja si S3. Kuficha kisha hufanyika upande wa mteja na data iliyofichwa kisha hutumwa kwa S3 kuhifadhiwa.
Kuficha:
Mteja anaomba ufunguo wa data kwa KMS
KMS inarudisha DEK ya maandishi na DEK iliyofichwa pamoja na CMK
Ufunguo wote hutumwa tena
Mteja kisha huficha data na DEK ya maandishi na kutuma kwa S3 data iliyofichwa + DEK iliyofichwa (ambayo huhifadhiwa kama metadata ya data iliyofichwa ndani ya S3)
Kufichua:
Data iliyofichwa pamoja na DEK iliyofichwa hutumwa kwa mteja
Mteja anaomba KMS kufichua ufunguo uliofichwa kwa kutumia CMK na KMS inarudisha DEK ya maandishi
Mteja sasa anaweza kufichua data iliyofichwa
Kuficha upande wa mteja na ufunguo uliotolewa na mteja, CSE-C
Kwa kutumia mbinu hii, unaweza kutumia ufunguo uliotolewa na wewe mwenyewe na kutumia mteja wa AWS-SDK kuficha data yako kabla ya kutuma kwa S3 kwa uhifadhi.
Kuficha:
Mteja anazalisha DEK na kuficha data ya maandishi
Kisha, kwa kutumia CMK yake ya desturi, huficha DEK
kutuma data iliyofichwa + DEK iliyofichwa kwa S3 ambapo huhifadhiwa
Kufichua:
S3 inatuma data iliyofichwa na DEK
Kwa kuwa mteja tayari ana CMK iliyotumiwa kuficha DEK, hufichua DEK na kisha kutumia DEK ya maandishi kufichua data
# 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
dual-stack
Unaweza kupata ufikiaji wa ndoo ya S3 kupitia kwa kituo cha dual-stack kwa kutumia jina la kituo cha aina ya virtual hosted-style au path-style. Hizi ni muhimu kwa ufikiaji wa S3 kupitia IPv6.
Vituo vya dual-stack hutumia muundo ufuatao:
bucketname.s3.dualstack.aws-region.amazonaws.com
s3.dualstack.aws-region.amazonaws.com/bucketname
Privesc
Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za S3 kwa kuboresha mamlaka:
Kulingana na utafiti huu ilikuwa inawezekana kuhifadhi jibu la ndoo ya aina yoyote kana kwamba ni sehemu ya ndoo nyingine. Hii inaweza kutumiwa kubadilisha kwa mfano majibu ya faili za javascript na kuhatarisha kurasa za aina yoyote zinazotumia S3 kuhifadhi nambari za tuli.
Amazon Athena
Amazon Athena ni huduma ya utaftaji wa maswali ya moja kwa moja ambayo inafanya iwe rahisi uchambuzi wa data moja kwa moja katika Huduma Rahisi ya Uhifadhi wa Amazon (Amazon S3) kwa kutumia SQL ya kawaida.
Unahitaji kuandaa meza ya DB ya uhusiano na muundo wa yaliyomo ambayo yataonekana kwenye ndoo za S3 zinazofuatiliwa. Kisha, Amazon Athena itaweza kujaza DB kutoka kwenye magogo, ili uweze kuuliza.
Amazon Athena inasaidia uwezo wa kuuliza data ya S3 ambayo tayari imefichwa na ikisakinishwa kufanya hivyo, Athena pia inaweza kuficha matokeo ya swali ambayo kisha yanaweza kuhifadhiwa kwenye S3.
Ufichaji huu wa matokeo ni huru ya data ya S3 iliyoulizwa, maana hata kama data ya S3 haijafichwa, matokeo ya maswali yanaweza kufichwa. Mambo machache ya kuzingatia ni kwamba Amazon Athena inasaidia tu data ambayo imefichwa na mbinu za uchafuzi wa S3 zifuatazo, SSE-S3, SSE-KMS, na CSE-KMS.
SSE-C na CSE-E hazisaidiwi. Mbali na hii, ni muhimu kuelewa kwamba Amazon Athena itaendesha maswali tu dhidi ya vitu vilivyofichwa ambavyo viko katika eneo sawa na swali lenyewe. Ikiwa unahitaji kuuliza data ya S3 ambayo imefichwa kwa kutumia KMS, basi ruhusa maalum inahitajika na mtumiaji wa Athena ili kuwezesha kufanya swali.
Urambazaji
# 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>