Azure Storage Accounts ni huduma za msingi katika Microsoft Azure zinazotoa inayoweza kupanuka, salama, na inayopatikana kwa urahisi kwa wingu kwa storage kwa aina mbalimbali za data, ikijumuisha blobs (binary large objects), files, queues, na tables. Zinatumika kama makontena yanayokusanya huduma hizi tofauti za storage pamoja chini ya namespace moja kwa usimamizi rahisi.
Chaguzi kuu za usanidi:
Kila storage account lazima iwe na jina la kipekee kote Azure.
Kila storage account inawekwa katika mkoa (region) au katika Azure extended zone
Inawezekana kuchagua toleo la premium la storage account kwa utendaji bora
Inawezekana kuchagua miongoni mwa aina 4 za redundancy ili kulinda dhidi ya rack, drive na datacenter mashindwa.
Chaguzi za usanidi wa usalama:
Require secure transfer for REST API operations: Inahitaji TLS katika mawasiliano yoyote na storage
Allows enabling anonymous access on individual containers: Iwapo haitumiki, haitakuwa inawezekana kuwezesha anonymous access baadaye
Permitted scope for copy operations: Ruhusu kutoka kwa storage account yoyote, kutoka kwa storage account yoyote kutoka Entra tenant ile ile au kutoka storage account zilizo na private endpoints katika virtual network ile ile.
Chaguzi za Blob Storage:
Allow cross-tenant replication
Access tier: Hot (data zinazofikiwa mara kwa mara), Cool na Cold (data zinazofikiwa nadra)
Chaguzi za mtandao:
Network access:
Ruhusu kutoka mitandao yote
Ruhusu kutoka virtual networks na anwani za IP zilizochaguliwa
Zima public access na tumia private access
Private endpoints: Inaruhusu muunganisho wa kibinafsi kwenda storage account kutoka virtual network
Chaguzi za ulinzi wa data:
Point-in-time restore for containers: Inaruhusu kurejesha containers hadi hali ya awali
Inahitaji versioning, change feed, na blob soft delete ziwe zimewezeshwa.
Enable soft delete for blobs: Inawezesha kipindi cha retention kwa siku kwa blobs zilizofutwa (hata zilizofunikwa)
Enable soft delete for containers: Inawezesha kipindi cha retention kwa siku kwa containers zilizofutwa
Enable soft delete for file shares: Inawezesha kipindi cha retention kwa siku kwa file shares zilizofutwa
Enable versioning for blobs: Hifadhi matoleo yaliyotangulia ya blobs zako
Enable blob change feed: Hifadhi logs za kuunda, kuhariri, na kufuta mabadiliko ya blobs
Enable version-level immutability support: Inakuwezesha kuweka sera ya retention kwa msingi wa muda kwenye ngazi ya account ambayo itahusisha matoleo yote ya blob.
Version-level immutability support na point-in-time restore for containers haiwezi kuwezeshwa wakati mmoja.
Chaguzi za usanidi wa encryption:
Encryption type: Inawezekana kutumia Microsoft-managed keys (MMK) au Customer-managed keys (CMK)
Enable infrastructure encryption: Inaruhusu ku-encrypt mara mbili data “kwa usalama zaidi”
Static websites hutolewa kutoka kwenye container maalum $web kupitia endpoint ya eneo kama https://<account>.z13.web.core.windows.net/.
Container ya $web inaweza kuripoti publicAccess: null kupitia blob API, lakini faili bado zinapatikana kupitia static site endpoint, hivyo kuacha artifacts za config/IaC huko kunaweza leak secrets.
Mchakato wa ukaguzi wa haraka:
# Identify storage accounts with static website hosting enabled
az storage blob service-properties show --account-name <acc-name> --auth-mode login
# Enumerate containers (including $web) and their public flags
az storage container list --account-name <acc-name> --auth-mode login
# List files served by the static site even when publicAccess is null
az storage blob list --container-name '$web' --account-name <acc-name> --auth-mode login
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name <acc-name> --auth-mode login
Tafuta storage accounts ambazo zinaweza kufichua data: az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'. Kama allowBlobPublicAccess ni false huwezi kufanya containers kuwa za umma.
Kagua accounts zenye hatari ili kuthibitisha alama na mipangilio mingine dhaifu: az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'.
Orodhesha kufichuliwa kwa ngazi ya container ambapo alama imewezeshwa:
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
“Blob”: anonymous reads kuruhusiwa tu wakati jina la blob linajulikana (hakuna listing).
“Container”: anonymous list + read ya kila blob.
null: binafsi; uthibitisho unahitajika.
Thibitisha ufikiaji bila credentials:
Ikiwa publicAccess ni Container, anonymous listing inafanya kazi: curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list".
Kwa Blob na Container, anonymous blob download inafanya kazi wakati jina linajulikana:
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
# or via raw HTTP
curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
Inawezekana generate Shared Keys zilisainiwa na access keys ili kuidhinisha upatikanaji kwa rasilimali fulani kupitia signed URL.
Note
Kumbuka kwamba sehemu ya CanonicalizedResource inawakilisha rasilimali ya storage services (URI). Na ikiwa sehemu yoyote ya URL imekodishwa, inapaswa pia kukodishwa ndani ya CanonicalizedResource.
Note
Hii inatumika kwa chaguo-msingi na az cli kuthibitisha maombi. Ili kuitumia kwa credentials za Entra ID principal, taja param --auth-mode login.
Inawezekana kuunda shared key for blob, queue and file services kwa kusaini taarifa zifuatazo:
Shared Access Signatures (SAS) ni URL salama, zenye muda mdogo ambazo zinatoa ruhusa maalum za kufikia rasilimali katika akaunti ya Azure Storage bila kufichua access keys za akaunti. Wakati access keys zinatoa ufikiaji kamili wa kiutawala kwa rasilimali zote, SAS inaruhusu udhibiti wa kina kwa kubainisha ruhusa (kama read au write) na kuweka wakati wa kuisha.
User delegation SAS: Hii inaundwa kutoka kwa Entra ID principal ambayo itasaini SAS na kupeana ruhusa kutoka kwa mtumiaji kwenda kwa SAS. Inaweza kutumika tu na blob and data lake storage (docs). Inawezekana ku-revoke SAS zote zilizotengenezwa kwa user delegation.
Hata ikiwa inawezekana kuunda delegation SAS yenye ruhusa “za ziada” kuliko zile mtumiaji anazomiliki. Hata hivyo, ikiwa principal hana ruhusa hizo, haitafanya kazi (hakuna privesc).
Service SAS: Hii inasainiwa kwa kutumia moja ya storage account access keys. Inaweza kutumika kutoa ufikiaji kwa rasilimali maalum katika huduma moja ya storage. Ikiwa key inabadilishwa, SAS itasimama kufanya kazi.
Account SAS: Pia inasainiwa kwa mojawapo ya storage account access keys. Inatoa ufikiaji kwa rasilimali kupitia huduma za storage account (Blob, Queue, Table, File) na inaweza kujumuisha operesheni za ngazi ya service.
A SAS URL iliyosainiwa na access key inaonekana hivi:
Unapotengeneza SAS inahitajika kuonyesha ruhusa ambazo inapaswa kutoa. Kulingana na kitu ambacho SAS inaundwa juu yake, ruhusa tofauti zinaweza kujumuishwa. Kwa mfano:
Azure Blob Storage sasa inasaidia SSH File Transfer Protocol (SFTP), ikiruhusu uhamisho wa faili salama na usimamizi moja kwa moja kwenda Blob Storage bila kuhitaji suluhisho maalum au bidhaa za upande wa tatu.
Protocol Support: SFTP inafanya kazi na akaunti za Blob Storage zilizo na hierarchical namespace (HNS). Hii inapanga blobs katika saraka na saraka ndogo kwa urahisi wa urambazaji.
Security: SFTP inatumia vitambulisho vya local user kwa uthibitisho na haijumuishi RBAC au ABAC. Kila local user anaweza kuthibitishwa kupitia:
Azure-generated passwords
Public-private SSH key pairs
Granular Permissions: Ruhusa kama Read, Write, Delete, na List zinaweza kutengwa kwa local users kwa container hadi 100.
Networking Considerations: Muunganisho za SFTP hufanyika kupitia port 22. Azure inaunga mkono usanidi wa mtandao kama firewalls, private endpoints, au virtual networks ili kulinda trafiki ya SFTP.
Hierarchical Namespace: HNS lazima iwe imewezeshwa wakati wa kuunda storage account.
Supported Encryption: Inahitaji algorithimu za kriptografia zilizopitishwa na Microsoft Security Development Lifecycle (SDL) (mfano: rsa-sha2-256, ecdsa-sha2-nistp256).
SFTP Configuration:
Wezesha SFTP kwenye storage account.
Unda vitambulisho vya local user na ruhusa zinazofaa.
Sanidi home directories kwa watumiaji ili kubainisha eneo lao la kuanzia ndani ya container.
az storage blob show –account-name –container-name –sas-token ‘se=2024-12-31T23%3A59%3A00Z&sp=racwdxyltfmei&sv=2022-11-02&sr=c&sig=ym%2Bu%2BQp5qqrPotIK5/rrm7EMMxZRwF/hMWLfK1VWy6E%3D’ –name ‘asd.txt’