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), Ufichaji (Upande wa Mteja na Seva), Utoaji wa Matoleo ya Bakuli na MFAkulingana na kufuta. Mtumiaji anaweza kuwezesha mojawapo ya chaguzi hizi kufikia ulinzi wa data. Ugawanyaji wa data ni kituo cha ndani cha AWS ambapo S3 inarekebisha mojawapo ya vitu vyote kwenye Maeneo Yote ya Upatikanaji na shirika halihitaji kuwezesha hilo katika kesi hii.
Kwa idhini zinazotegemea rasilimali, unaweza kufafanua idhini kwa vijitengo vya chini vya bakuli lako kando.
Utoaji wa Matoleo ya Bakuli na MFA kulingana na kufuta
Wakati utoaji wa matoleo ya bakuli 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 kutazuia matoleo ya faili kwenye bakuli la S3 kufutwa na pia Utoaji wa Matoleo ya Bakuli kulemazwa, hivyo muhusika hataweza kubadilisha faili hizo.
Vipakuli vya Kuingia kwenye S3
Inawezekana kuwezesha kuingia kwenye S3 (ambayo kwa chaguo-msingi imelemazwa) kwa baadhi ya bakuli na kuokoa kuingia huko kwenye bakuli tofauti ili kujua ni nani anayepata bakuli (bakuli zote lazima ziwe katika eneo moja).
URL za Kuingia za Kusainiwa mapema za S3
Inawezekana kuzalisha URL iliyosainiwa mapema ambayo kawaida inaweza kutumika kufikia faili iliyotajwa kwenye bakuli. URL iliyosainiwa mapema inaonekana kama hii:
Unaweza kuunda URL iliyosainiwa mapema kutumia amri ya cli ukitumia sifa za msingi ambaye ana ufikiaji wa kitu (ikiwa akaunti unayotumia haina ufikiaji, URL iliyosainiwa mapema fupi itaundwa lakini itakuwa bure)
Kibali pekee kinachohitajika kuzalisha URL iliyosainiwa mapema ni kibali kinachotolewa, kwa hivyo kwa amri iliyotangulia kibali pekee kinachohitajika na mhusika ni s3:GetObject
Pia niwezekana kuunda URL zilizosainiwa mapema na kibali kingine:
DEK inamaanisha Data Encryption Key na ni ufunguo ambao daima hutengenezwa na kutumika kuficha data.
Kuficha upande wa seva na funguo zilizosimamiwa na S3, SSE-S3
Chaguo hili linahitaji usanidi mdogo na usimamizi wote wa funguo za kuficha zinazotumiwa unasimamiwa na AWS. Unachohitaji kufanya ni kutuma data yako na S3 itashughulikia vipengele vingine vyote. Kila ndoo katika akaunti ya S3 inapewa funguo la ndoo.
Kuficha:
Data ya Kitu + DEK ya awali ya wazi iliyoundwa --> Data iliyofichwa (imehifadhiwa ndani ya S3)
DEK ya awali ya wazi iliyoundwa + Funguo Kuu la S3 --> DEK iliyofichwa (imehifadhiwa ndani ya S3) na maandishi ya wazi yanaondolewa kutoka kumbukumbu
Kufichua:
DEK iliyofichwa + Funguo Kuu la S3 --> DEK ya Maandishi ya Wazi
DEK ya Maandishi ya Wazi + Data iliyofichwa --> Data ya Kitu
Tafadhali, kumbuka kwamba katika kesi hii funguo inasimamiwa na AWS (mzunguko mara moja kila baada ya miaka 3). Ikiwa utatumia funguo yako mwenyewe utaweza kuzungusha, kulemaza, na kutumia udhibiti wa ufikiaji.
Kuficha upande wa seva na funguo zilizosimamiwa na KMS, SSE-KMS
Mbinu hii inaruhusu S3 kutumia huduma ya usimamizi wa funguo kuzalisha funguo zako za kuficha data. KMS inakupa mabadiliko makubwa zaidi ya jinsi funguo zako zinasimamiwa. 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 inahitaji funguo za data kutoka kwa KMS CMK
KMS hutumia CMK kuzalisha jozi ya DEK ya maandishi ya wazi na DEK iliyofichwa na kuzituma kwa S3
S3 hutumia funguo la maandishi ya wazi kuficha data, kuhifadhi data iliyofichwa na funguo iliyofichwa na kufuta kutoka kumbukumbu funguo la maandishi ya wazi
Kufichua:
S3 inaomba KMS kufichua funguo iliyofichwa ya data ya kitu
KMS inafichua funguo la data kwa kutumia CMK na kuituma kwa S3
S3 inafichua data ya kitu
Kuficha upande wa seva na funguo zinazotolewa na mteja, SSE-C
Chaguo hili hukupa fursa ya kutoa funguo yako ya msingi ambayo labda tayari unaitumia nje ya AWS. Funguo iliyotolewa na mteja basi itatumwa pamoja na data yako kwa S3, ambapo S3 itafanya kuficha kwa niaba yako.
Kuficha:
Mtumiaji anatuma data ya kitu + Funguo la Mteja kwa S3
Funguo la mteja hutumiwa kuficha data na data iliyofichwa huhifadhiwa
thamani ya HMAC iliyochumwa ya funguo la mteja pia huhifadhiwa kwa uhakiki wa baadaye wa funguo
funguo la mteja hufutwa kutoka kumbukumbu
Kufichua:
Mtumiaji anatuma funguo la mteja
Funguo huthibitishwa dhidi ya thamani ya HMAC iliyohifadhiwa
Funguo iliyotolewa na mteja kisha hutumiwa kufichua data
Kuficha upande wa mteja na KMS, CSE-KMS
Vivyo hivyo na SSE-KMS, hii pia hutumia huduma ya usimamizi wa funguo kuzalisha funguo zako za kuficha data. Walakini, wakati huu KMS inaitwa kupitia mteja si S3. Kuficha kisha hufanyika upande wa mteja na data iliyofichwa kisha hutumwa kwa S3 kuhifadhiwa.
Kuficha:
Mteja anauliza funguo la data kwa KMS
KMS inarudisha DEK ya maandishi ya wazi na DEK iliyofichwa pamoja na CMK
Funguo zote hutumwa tena
Mteja kisha huficha data na DEK ya maandishi ya wazi 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 funguo iliyofichwa kwa kutumia CMK na KMS inarudisha DEK ya maandishi ya wazi
Mteja sasa anaweza kufichua data iliyofichwa
Kuficha upande wa mteja na funguo zinazotolewa na mteja, CSE-C
Kwa kutumia mbinu hii, unaweza kutumia funguo zako zilizotolewa 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 ya ndoo tofauti. 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 kwenye Amazon Simple Storage Service (Amazon S3) kwa kutumia SQL ya kawaida.
Unahitaji kuandaa meza ya DB ya uhusiano na muundo wa yaliyomo ambayo yataonekana kwenye ndoo zilizofuatiliwa za S3. 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 ikiwa imeboreshwa kufanya hivyo, Athena inaweza pia kuficha matokeo ya swali ambayo kisha yanaweza kuhifadhiwa kwenye S3.
Ufichaji huu wa matokeo ni huru na 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 ufichaji za 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.
Uchambuzi
# 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>