Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-sql.

This commit is contained in:
Translator
2026-07-13 14:07:28 +00:00
parent dbe96868c9
commit a4f8666c73
@@ -4,45 +4,47 @@
## Azure SQL
Azure SQL je porodica upravljanih, sigurnih i inteligentnih proizvoda koji koriste **SQL Server bazu podataka u Azure cloud-u**. To znači da ne morate brinuti o fizičkoj administraciji vaših servera, a možete se fokusirati na upravljanje vašim podacima.
Azure SQL je porodica upravljanih, bezbednih i inteligentnih proizvoda koji koriste **SQL Server database engine u Azure cloud-u**. To znači da ne morate da brinete o fizičkoj administraciji svojih servera, i možete da se fokusirate na upravljanje svojim podacima.
Azure SQL se sastoji od četiri glavne ponude:
1. **Azure SQL Server**: Server je potreban za **implementaciju i upravljanje** SQL Server bazama podataka.
2. **Azure SQL Database**: Ovo je **potpuno upravljana usluga baze podataka**, koja vam omogućava da hostujete pojedinačne baze podataka u Azure cloud-u.
3. **Azure SQL Managed Instance**: Ovo je za veće, celokupne implementacije SQL Server instance.
4. **Azure SQL Server na Azure VMs**: Ovo je najbolje za arhitekture gde želite **kontrolu nad operativnim sistemom** i SQL Server instancom.
1. **Azure SQL Server**: Server je potreban za **deployment i management** SQL Server baza podataka.
2. **Azure SQL Database**: Ovo je **fully-managed database service**, koja vam omogućava da hostujete pojedinačne baze podataka u Azure cloud-u.
3. **Azure SQL Managed Instance**: Ovo je za veće sisteme, celokupne SQL Server instance-scoped deployments.
4. **Azure SQL Server on Azure VMs**: Ovo je najbolje za arhitekture gde želite **control over the operating system **i SQL Server instancu.
### SQL Server Bezbednosne Karakteristike
### SQL Server Security Features
**Mrežni pristup:**
**Network access:**
- Javni krajnji tačka (može ograničiti pristup na specifične mreže).
- Privatne krajnje tačke.
- Takođe je moguće ograničiti konekcije na osnovu imena domena.
- Takođe je moguće dozvoliti Azure uslugama da mu pristupe (kao što je korišćenje Query editora u portalu ili dozvoliti Azure VM-u da se poveže).
- Public endpoint (može da ograniči pristup na određene mreže).
- Private endpoints.
- Takođe je moguće ograničiti konekcije na osnovu domain names.
- Takođe je moguće dozvoliti Azure services da pristupe (na primer, da bi se koristio Query editor u portalu ili da bi se omogućilo Azure VM-u da se poveže).
- Ako je na SQL Server-u podešeno *Allow Azure services and resources to access this server* na "Enabled", Azure će automatski kreirati skriveno firewall pravilo koje dozvoljava sav network traffic koji dolazi iz Azure da se poveže na SQL Server — uključujući resurse iz bilo kog tenant-a.
- To znači da, ako dobijete validne SQL credentials, možete da se povežete na žrtvin Azure SQL Server sa Azure VM-a unutar sopstvenog tenant-a pod kontrolom napadača. [MS docs to objašnjavaju](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
**Metode autentifikacije:**
**Authentication Methods:**
- Microsoft **Entra-only** autentifikacija: Potrebno je naznačiti Entra principe koji će imati pristup usluzi.
- **Obe SQL i Microsoft Entra** autentifikacije: Tradicionalna SQL autentifikacija sa korisničkim imenom i lozinkom uz Microsoft Entra.
- **Samo SQL** autentifikacija: Dozvoliti pristup samo putem korisnika baze podataka.
- Microsoft **Entra-only** authentication: Morate da navedete Entra principals koji će imati pristup servisu.
- **Both SQL and Microsoft Entra** authentication: Tradicionalna SQL autentikacija sa username i password, zajedno sa Microsoft Entra.
- **Only SQL** authentication: Dozvoljava pristup samo preko database users.
Napomena da ako je bilo koja SQL autentifikacija dozvoljena, potrebno je naznačiti admin korisnika (korisničko ime + lozinka) i ako je izabrana Entra ID autentifikacija, takođe je potrebno naznačiti barem jednog principa sa admin pristupom.
Imajte na umu da, ako je dozvoljena bilo koja SQL auth, mora da bude naveden admin user (username + password), a ako je izabran Entra ID auth, takođe je potrebno navesti bar jedan principal sa admin access.
**Enkripcija:**
**Encryption:**
- Zove se “Transparentna enkripcija podataka” i enkriptuje baze podataka, rezervne kopije i logove u mirovanju.
- Kao i uvek, podrazumevano se koristi Azure upravljani ključ, ali se može koristiti i ključ za enkripciju koji upravlja kupac (CMEK).
**Upravljane Identitete:**
- Zove se “Transparent data encryption” i enkriptuje databases, backups i logs at rest.
- Kao i uvek, po default-u se koristi Azure managed key, ali može da se koristi i customer managed encryption key (CMEK).
**Managed Identities:**
- Moguće je dodeliti sistemske i korisnički upravljane MIs.
- Koristi se za pristup ključu za enkripciju (ako se koristi CMEK) i drugim uslugama iz baza podataka.
- Za neke primere Azure usluga koje se mogu pristupiti iz baze podataka, proverite [ovu stranicu dokumenata](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
- Ako je dodeljeno više od jednog UMI, moguće je naznačiti podrazumevanu koju koristiti.
- Moguće je konfigurisati federisanu identitet klijenta za pristup između zakupaca.
- Moguće je dodeliti system i user managed MIs.
- Koriste se za pristup encryption key-u (ako se koristi CMEK) i drugim servisima iz baza podataka.
- Za neke primere Azure servisa kojima može da se pristupi iz baze pogledajte [ovu stranicu docs](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
- Ako je dodeljeno više od jednog UMI-ja, moguće je navesti koji je defaultni za korišćenje.
- Moguće je konfiguristi federated client identity za cross-tenant access.
Neki komandi za pristup informacijama unutar blob storage-a iz SQL baze podataka:
Neke komande za pristup info unutar blob storage iz SQL baze:
```sql
-- Create a credential for the managed identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
@@ -69,57 +71,58 @@ GO
```
**Microsoft Defender:**
- Korisno za “ublažavanje potencijalnih ranjivosti baze podataka i otkrivanje anomalnih aktivnosti
- O Defenderu ćemo govoriti u svojoj lekciji (može se omogućiti u nekoliko drugih Azure usluga)
- Korisno za “mitigating potential database vulnerabilities, and detecting anomalous activities
- Pričaćemo o Defender-u u posebnoj lekciji (može da bude omogućen u nekoliko drugih Azure servisa)
**Backup-ovi:**
- Učestalost backup-a se upravlja u politikama zadržavanja.
**Backups:**
- Frekvencija backup-a se upravlja u retention policies.
**Obrisane baze podataka:**
- Moguće je obnoviti DB-ove koji su obrisani iz postojećih backup-a.
**Deleted databases:**
- Moguće je restore-ovati DBs koje su obrisane iz postojećih backup-a.
## Azure SQL Database
**Azure SQL Database** je **potpuno upravljana platforma za baze podataka kao uslugu (PaaS)** koja pruža skalabilna i sigurna rešenja za relacione baze podataka. Izgrađena je na najnovijim SQL Server tehnologijama i eliminiše potrebu za upravljanjem infrastrukturom, što je čini popularnim izborom za aplikacije zasnovane na oblaku.
**Azure SQL Database** je **fully managed database platform as a service (PaaS)** koja pruža skalabilna i bezbedna relacijska database rešenja. Izgrađena je na najnovijim SQL Server tehnologijama i eliminiše potrebu za infrastructure management-om, što je čini popularnim izborom za cloud-based aplikacije.
Da bi se kreirala SQL baza podataka, potrebno je naznačiti SQL server na kojem će biti hostovana.
Da bi se kreirala SQL database potrebno je navesti SQL server na kojem će biti hostovana.
### SQL Database Security Features
- **Uvek ažurirano**: Radi na najnovijoj stabilnoj verziji SQL Server-a i automatski prima nove funkcije i zakrpe.
- **Nasleđene sigurnosne funkcije SQL Server-a:**
- Autentifikacija (SQL i/ili Entra ID)
- Dodeljene upravljane identitete
- Ograničenja mreže
- Enkripcija
- Backup-ovi
- **Always Up-to-Date**: Radi na najnovijoj stabilnoj verziji SQL Server-a i automatski prima nove features i patches.
- **Inherited SQL Server security features:**
- Authentication (SQL and/or Entra ID)
- Assigned Managed Identities
- Network restrictions
- Encryption
- Backups
-
- **Redundancija podataka:** Opcije su lokalne, zonalne, Geo ili Geo-Zona redundantne.
- **Knjiga:** Kriptografski verifikuje integritet podataka, osiguravajući da se svako neovlašćeno menjanje otkrije. Korisno za finansijske, medicinske i svaku organizaciju koja upravlja osetljivim podacima.
- **Data redundancy:** Opcije su local, zone, Geo ili Geo-Zone redundant.
- **Ledger:** Kriptografski verifikuje integritet podataka, obezbeđujući da se svako tampering otkrije. Korisno za finansijske, medicinske i bilo koje organization koje upravlja sensitive data.
SQL baza podataka može biti deo **elastičnog bazena**. Elastični bazeni su isplativo rešenje za upravljanje više baza podataka deljenjem konfigurisivih računarskih (eDTUs) i skladišnih resursa među njima, pri čemu se cena zasniva isključivo na dodeljenim resursima, a ne na broju baza podataka.
SQL database može biti deo **elastic Pool**. Elastic pools su cost-effective rešenje za upravljanje više databases deljenjem configurable compute (eDTUs) i storage resources među njima, uz cenu zasnovanu isključivo na dodeljenim resursima, a ne na broju databases.
#### Azure SQL Column Level Security (Masking) & Row Level Security
**Dinamičko** maskiranje podataka **Azure SQL** je funkcija koja pomaže **u zaštiti osetljivih informacija skrivajući ih** od neovlašćenih korisnika. Umesto da menja stvarne podatke, dinamički maskira prikazane podatke, osiguravajući da su osetljivi detalji poput brojeva kreditnih kartica zamagljeni.
**Azure SQL's dynamic** data masking je feature koji pomaže da **zaštiti sensitive information tako što je skriva** od unauthorized users. Umesto menjanja stvarnih podataka, on dinamički maskira prikazane podatke, obezbeđujući da se osetljivi detalji kao što su brojevi kreditnih kartica prikriju.
**Dinamičko maskiranje podataka** utiče na sve korisnike osim onih koji su otkriveni (ti korisnici moraju biti naznačeni) i administratore. Ima opciju konfiguracije koja specificira koji SQL korisnici su izuzeti od dinamičkog maskiranja podataka, pri čemu su **administratori uvek isključeni**.
**Dynamic Data Masking** utiče na sve users osim onih koji su unmasked (ovi users moraju biti navedeni) i administrators. Ima konfiguracionu opciju koja određuje koji SQL users su izuzeti iz dynamic data masking, pri čemu su **administrators uvek isključeni**.
**Azure SQL Row Level Security (RLS)** je funkcija koja **kontroliše koje redove korisnik može da vidi ili menja**, osiguravajući da svaki korisnik vidi samo podatke relevantne za njega. Kreiranjem sigurnosnih politika sa filtrima ili blok predikatom, organizacije mogu primeniti preciznu kontrolu pristupa na nivou baze podataka.
**Azure SQL Row Level Security (RLS)** je feature koji **kontroliše koje rows user može da vidi ili menja**, obezbeđujući da svaki user vidi samo podatke relevantne za njega. Kreiranjem security policies sa filter ili block predicates, organization mogu da primene fine-grained access na nivou database.
### Azure SQL Managed Instance
**Azure SQL Managed Instances** su za veće razmere, celokupne SQL Server instance. Pruža skoro 100% kompatibilnost sa najnovijim SQL Server on-premises (Enterprise Edition) Database Engine, koji pruža nativnu implementaciju virtuelne mreže (VNet) koja rešava uobičajene sigurnosne probleme, i poslovni model povoljan za on-premises SQL Server korisnike.
**Azure SQL Managed Instances** su za veće scale, kompletne SQL Server instance-scoped deployments. Pruža skoro 100% kompatibilnost sa najnovijim SQL Server on-premises (Enterprise Edition) Database Engine-om, što obezbeđuje native virtual network (VNet) implementation koja rešava uobičajene security concerns, i business model povoljan za on-premises SQL Server customers.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** omogućavaju **kontrolu operativnog sistema** i SQL Server instance, jer će VM biti pokrenut u VM servisu koji pokreće SQL server.
**Azure SQL Virtual Machines** omogućavaju da se **kontroliše operating system** i SQL Server instance, jer će VM biti spawn-ovan u VM servisu koji pokreće SQL server.
Kada se kreira SQL Virtual Machine, moguće je **izabrati sve postavke VM-a** (kao što je prikazano u lekciji o VM-ima) koji će hostovati SQL server.
- To znači da će VM pristupati nekim VNet-ovima, može imati **pridružene upravljane identitete**, može imati montirane deljene foldere… što čini **pivotiranje sa SQL** na VM veoma zanimljivim.
- Štaviše, moguće je konfigurisati ID aplikacije i tajnu da **omogući SQL-u pristup određenom ključnom trezoru**, koji može sadržati osetljive informacije.
Kada se kreira SQL Virtual Machine moguće je **izabrati sve settings VM-a** (kao što je prikazano u lekciji o VM-u) koji će hostovati SQL server.
- To znači da će VM pristupati nekim VNet(s), može imati **Managed Identities attached** na njega, može imati montirane file shares… što čini **pivoting from the SQL** ka VM-u super interesantnim.
- Pored toga, moguće je konfigurisati app id i secret da bi se **omogućilo SQL-u da pristupi određenom key vault-u**, koji može sadržati sensitive info.
Takođe je moguće konfigurisati stvari poput **automatskih SQL ažuriranja**, **automatskih backup-a**, **Entra ID autentifikacije** i većine funkcija drugih SQL usluga.
Takođe je moguće konfigurisati stvari kao što su **automatic SQL updates**, **automatic backups**, **Entra ID authentication** i većinu features drugih SQL servisa.
## Enumeration
@@ -258,7 +261,7 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
Pored toga, ako želite da enumerišete Dynamic Data Masking i Row Level politike unutar baze podataka, možete izvršiti upit:
Dodatno, ako želite da enumerišete Dynamic Data Masking i Row Level policies unutar baze podataka, možete da izvršite upit:
```sql
--Enumerates the masked columns
SELECT
@@ -283,9 +286,9 @@ JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Povezivanje i izvršavanje SQL upita
### Povezivanje i pokretanje SQL upita
Možete pronaći string za povezivanje (koji sadrži akreditive) iz primera [enumerating an Az WebApp](az-app-services.md):
Možete pronaći connection string (koji sadrži credentials) iz primera [enumerating an Az WebApp](az-app-services.md):
```bash
function invoke-sql{
param($query)
@@ -304,30 +307,30 @@ $Connection.Close()
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
```
Možete takođe koristiti sqlcmd za pristup bazi podataka. Važno je znati da li server dozvoljava javne konekcije `az sql server show --name <server-name> --resource-group <resource-group>`, kao i da li pravilo vatrozida dozvoljava našem IP-u pristup:
Takođe možete da koristite sqlcmd za pristup bazi podataka. Važno je znati da li server dozvoljava javne konekcije `az sql server show --name <server-name> --resource-group <resource-group>`, kao i da li firewall rule dopušta da naš IP pristupi:
```bash
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
```
## Reference
## References
- [https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql)
- [https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql)
- [https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql)
- [https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql)
## Eskalacija privilegija
## Privilege Escalation
{{#ref}}
../az-privilege-escalation/az-sql-privesc.md
{{#endref}}
## Post Eksploatacija
## Post Exploitation
{{#ref}}
../az-post-exploitation/az-sql-post-exploitation.md
{{#endref}}
### Postojanost
### Persistence
{{#ref}}
../az-persistence/az-sql-persistence.md