mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 19:32:24 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']
This commit is contained in:
@@ -4,97 +4,122 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL ni familia ya bidhaa zinazodhibitiwa, salama, na za akili zinazotumia **injini ya database ya SQL Server katika wingu la Azure**. Hii ina maana kwamba hauhitaji kuwa na wasiwasi kuhusu usimamizi wa kimwili wa seva zako, na unaweza kuzingatia kusimamia data yako.
|
||||
Azure SQL ni familia ya bidhaa zinazodhibitiwa, salama, na za akili zinazotumia **injini ya database ya SQL Server katika wingu la Azure**. Hii ina maana kwamba haupaswi kuwa na wasiwasi kuhusu usimamizi wa kimwili wa seva zako, na unaweza kuzingatia kusimamia data yako.
|
||||
|
||||
Azure SQL ina ofa kuu nne:
|
||||
Azure SQL inajumuisha ofa kuu nne:
|
||||
|
||||
1. **Azure SQL Server**: Seva inahitajika kwa **kupeleka na kusimamia** databases za SQL Server.
|
||||
2. **Azure SQL Database**: Hii ni **huduma ya database inayodhibitiwa kikamilifu**, ambayo inakuwezesha kuhifadhi databases binafsi katika wingu la Azure.
|
||||
3. **Azure SQL Managed Instance**: Hii ni kwa ajili ya matumizi makubwa, kupeleka kwa kiwango cha SQL Server nzima.
|
||||
3. **Azure SQL Managed Instance**: Hii ni kwa ajili ya matumizi makubwa, ya kupeleka kwa kiwango cha SQL Server nzima.
|
||||
4. **Azure SQL Server kwenye Azure VMs**: Hii ni bora kwa usanifu ambapo unataka **udhibiti juu ya mfumo wa uendeshaji** na mfano wa SQL Server.
|
||||
|
||||
### Vipengele vya Usalama vya SQL Server
|
||||
### Vipengele vya Usalama wa SQL Server
|
||||
|
||||
**Upatikanaji wa Mtandao:**
|
||||
|
||||
- Kiwango cha umma (inaweza kupunguza upatikanaji kwa mitandao maalum).
|
||||
- Kiwango cha umma (kinaweza kupunguza upatikanaji kwa mitandao maalum).
|
||||
- Kiwango cha kibinafsi.
|
||||
- Pia inawezekana kupunguza muunganisho kulingana na majina ya kikoa.
|
||||
- Pia inawezekana kuruhusu huduma za Azure kuipata (kama kutumia mhariri wa Maswali katika lango au kuruhusu VM ya Azure kuungana).
|
||||
- Pia inawezekana kuruhusu huduma za Azure kuipata (kama kutumia mhariri wa Maswali katika lango au kuruhusu Azure VM kuungana).
|
||||
|
||||
**Mbinu za Uthibitishaji:**
|
||||
|
||||
- Uthibitishaji wa Microsoft **Entra pekee**: Unahitaji kuonyesha wahusika wa Entra ambao watakuwa na upatikanaji wa huduma.
|
||||
- Uthibitishaji wa Microsoft **Entra pekee**: Unahitaji kuashiria wahusika wa Entra ambao watakuwa na upatikanaji wa huduma.
|
||||
- **Uthibitishaji wa SQL na Microsoft Entra**: Uthibitishaji wa jadi wa SQL na jina la mtumiaji na nenosiri pamoja na Microsoft Entra.
|
||||
- **Uthibitishaji wa SQL pekee**: Ruhusu upatikanaji kupitia watumiaji wa database pekee.
|
||||
|
||||
Kumbuka kwamba ikiwa uthibitishaji wowote wa SQL unaruhusiwa mtumiaji wa admin (jina la mtumiaji + nenosiri) anahitaji kuonyeshwa na ikiwa uthibitishaji wa Entra ID umechaguliwa inahitajika pia kuonyesha angalau wahusika mmoja mwenye upatikanaji wa admin.
|
||||
Kumbuka kwamba ikiwa uthibitishaji wowote wa SQL unaruhusiwa mtumiaji wa admin (jina la mtumiaji + nenosiri) anahitaji kuashiriwa na ikiwa uthibitishaji wa Entra ID umechaguliwa inahitajika pia kuashiria angalau wahusika mmoja mwenye upatikanaji wa admin.
|
||||
|
||||
**Ushirikishaji:**
|
||||
**Ushifishaji:**
|
||||
|
||||
- Inaitwa "Ushirikishaji wa data wa wazi" na inashirikisha databases, nakala za akiba, na kumbukumbu wakati wa kupumzika.
|
||||
- Kama kawaida, funguo za usimamizi wa Azure zinatumika kwa chaguo-msingi lakini funguo za ushirikishaji zinazodhibitiwa na mteja (CMEK) zinaweza pia kutumika.
|
||||
**Identities Zinazosimamiwa:**
|
||||
- Inaitwa "Ushifishaji wa data wa wazi" na inashifisha databases, nakala za akiba, na kumbukumbu wakati wa kupumzika.
|
||||
- Kama kawaida, funguo za usimamizi wa Azure zinatumika kwa chaguo-msingi lakini funguo za ushirikiano wa mteja (CMEK) zinaweza pia kutumika.
|
||||
**Utambulisho wa Usimamizi:**
|
||||
|
||||
- Inawezekana kutoa MIs zinazodhibitiwa na mfumo na mtumiaji.
|
||||
- Inawezekana kupeana MIs zinazodhibitiwa na mfumo na mtumiaji.
|
||||
- Inatumika kupata funguo za ushirikishaji (ikiwa CMEK inatumika) na huduma nyingine kutoka kwa databases.
|
||||
- Ikiwa UMI zaidi ya moja imetolewa, inawezekana kuonyesha ile ya chaguo-msingi ya kutumia.
|
||||
- Inawezekana kuunda kitambulisho cha mteja kilichounganishwa kwa upatikanaji wa wapangaji tofauti.
|
||||
- Kwa baadhi ya mifano ya huduma za Azure ambazo zinaweza kupatikana kutoka kwa database angalia [ukurasa huu wa hati](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
|
||||
- Ikiwa UMI zaidi ya moja imepewa, inawezekana kuashiria ile ya chaguo-msingi kutumia.
|
||||
- Inawezekana kuunda utambulisho wa mteja wa shirikisho kwa upatikanaji wa wapangaji tofauti.
|
||||
|
||||
Amri zingine za kupata taarifa ndani ya uhifadhi wa blob kutoka kwa database ya SQL:
|
||||
```sql
|
||||
-- Create a credential for the managed identity
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
WITH IDENTITY = 'Managed Identity';
|
||||
GO
|
||||
|
||||
-- Create an external data source pointing to the blob storage to access
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
WITH (
|
||||
TYPE = BLOB_STORAGE,
|
||||
LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer',
|
||||
CREDENTIAL = ManagedIdentityCredential
|
||||
);
|
||||
GO
|
||||
|
||||
-- Read a file from ths storage and return it
|
||||
SELECT *
|
||||
FROM OPENROWSET(
|
||||
BULK 'message.txt',
|
||||
DATA_SOURCE = 'ManagedIdentity',
|
||||
SINGLE_CLOB
|
||||
) AS DataFile;
|
||||
GO
|
||||
```
|
||||
**Microsoft Defender:**
|
||||
|
||||
- Inafaida kwa "kupunguza hatari zinazoweza kutokea za database, na kugundua shughuli zisizo za kawaida"
|
||||
- Tutazungumzia Defender katika somo lake mwenyewe (inaweza kuwezeshwa katika huduma nyingine nyingi za Azure)
|
||||
- Inatumika kwa “kupunguza hatari za uwezekano wa database, na kugundua shughuli zisizo za kawaida”
|
||||
- Tutazungumzia kuhusu Defender katika somo lake mwenyewe (inaweza kuwezeshwa katika huduma nyingine nyingi za Azure)
|
||||
|
||||
**Nakala za Akiba:**
|
||||
- Mara kwa mara ya akiba inasimamiwa katika sera za uhifadhi.
|
||||
**Backups:**
|
||||
- Mara ya kuhifadhi inasimamiwa katika sera za uhifadhi.
|
||||
|
||||
**Databases zilizofutwa:**
|
||||
- Inawezekana kurejesha DBs ambazo zimefutwa kutoka kwa nakala za akiba zilizopo.
|
||||
**Deleted databases:**
|
||||
- Inawezekana kurejesha DBs ambazo zimefutwa kutoka kwa backups zilizopo.
|
||||
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** ni **jukwaa la database linalosimamiwa kikamilifu kama huduma (PaaS)** ambalo linatoa suluhisho za database za uhusiano zinazoweza kupanuka na salama. Imejengwa kwenye teknolojia za hivi punde za SQL Server na inondoa hitaji la usimamizi wa miundombinu, na kuifanya kuwa chaguo maarufu kwa programu zinazotegemea wingu.
|
||||
**Azure SQL Database** ni **jukwaa la database linalosimamiwa kikamilifu kama huduma (PaaS)** ambalo linatoa suluhisho za database za uhusiano zinazoweza kupanuka na salama. Imejengwa kwenye teknolojia za hivi punde za SQL Server na inondoa hitaji la usimamizi wa miundombinu, na kuifanya kuwa chaguo maarufu kwa programu za msingi wa wingu.
|
||||
|
||||
Ili kuunda database ya SQL inahitajika kuonyesha seva ya SQL ambapo itakuwa ikihifadhiwa.
|
||||
Ili kuunda database ya SQL inahitajika kuashiria seva ya SQL ambapo itakuwa ikihifadhiwa.
|
||||
|
||||
### Vipengele vya Usalama vya Database ya SQL
|
||||
### SQL Database Security Features
|
||||
|
||||
- **Daima Iko na Sasisho**: Inafanya kazi kwenye toleo la hivi punde la SQL Server na inapokea vipengele na patches mpya kiotomatiki.
|
||||
- **Daima Iko Sawa**: Inafanya kazi kwenye toleo la hivi punde la SQL Server na inapokea vipengele na patches mpya kiotomatiki.
|
||||
- **Vipengele vya usalama vya SQL Server vilivyorithiwa:**
|
||||
- Uthibitishaji (SQL na/au Entra ID)
|
||||
- Identiti Zinazosimamiwa zilizotolewa
|
||||
- Identiti za Usimamizi zilizotolewa
|
||||
- Vikwazo vya mtandao
|
||||
- Ushirikishaji
|
||||
- Nakala za akiba
|
||||
- Usimbaji
|
||||
- Backups
|
||||
- …
|
||||
- **Ukarabati wa Data:** Chaguo ni za ndani, eneo, Geo au Geo-Zone redundant.
|
||||
- **Ledger:** Inathibitisha kwa njia ya cryptographic uaminifu wa data, kuhakikisha kwamba mabadiliko yoyote yanagundulika. Inafaida kwa kifedha, matibabu na shirika lolote linalosimamia data nyeti.
|
||||
- **Ukarabati wa data:** Chaguo ni za ndani, eneo, Geo au Geo-Zone redundant.
|
||||
- **Ledger:** Inathibitisha kwa njia ya cryptographic uaminifu wa data, kuhakikisha kwamba mabadiliko yoyote yanagundulika. Inatumika kwa kifedha, matibabu na shirika lolote linalosimamia data nyeti.
|
||||
|
||||
Database ya SQL inaweza kuwa sehemu ya **elastic Pool**. Mifuko ya elastic ni suluhisho la gharama nafuu kwa usimamizi wa databases nyingi kwa kushiriki rasilimali za kompyuta zinazoweza kubadilishwa (eDTUs) na uhifadhi kati yao, huku bei ikitegemea rasilimali zilizotolewa badala ya idadi ya databases.
|
||||
|
||||
Database ya SQL inaweza kuwa sehemu ya **elastic Pool**. Mipango ya elastic ni suluhisho la gharama nafuu kwa kusimamia databases nyingi kwa kushiriki rasilimali za kompyuta zinazoweza kubadilishwa (eDTUs) na uhifadhi kati yao, huku bei ikitegemea rasilimali zilizotolewa badala ya idadi ya databases.
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
#### Usalama wa Kiwango cha Safu ya Azure SQL (Masking) & Usalama wa Kiwango cha Mstari
|
||||
**Azure SQL's dynamic** data masking ni kipengele kinachosaidia **kulinda taarifa nyeti kwa kuzificha** kutoka kwa watumiaji wasioidhinishwa. Badala ya kubadilisha data halisi, inaficha data inayonyeshwa kwa njia ya kiotomatiki, kuhakikisha kwamba maelezo nyeti kama nambari za kadi za mkopo yanakosekana.
|
||||
|
||||
**Masking ya data ya dynamic** ya Azure SQL ni kipengele kinachosaidia **kulinda taarifa nyeti kwa kuzificha** kutoka kwa watumiaji wasioidhinishwa. Badala ya kubadilisha data halisi, inaficha data inayonyeshwa kwa njia ya dynamic, kuhakikisha kwamba maelezo nyeti kama nambari za kadi za mkopo yanakosekana.
|
||||
**Dynamic Data Masking** inahusisha watumiaji wote isipokuwa wale ambao hawajafichwa (watumiaji hawa wanahitaji kuashiriwa) na wasimamizi. Ina chaguo la usanidi linaloeleza ni watumiaji gani wa SQL ambao hawajafichwa na dynamic data masking, huku **wasimamizi wakitengwa kila wakati**.
|
||||
|
||||
**Masking ya Data ya Dynamic** inahusisha watumiaji wote isipokuwa wale ambao hawajafichwa (watumiaji hawa wanahitaji kuonyeshwa) na wasimamizi. Ina chaguo la usanidi linaloeleza ni watumiaji gani wa SQL wanaondolewa kwenye masking ya data ya dynamic, huku **wasimamizi wakitengwa kila wakati**.
|
||||
|
||||
**Usalama wa Kiwango cha Mstari wa Azure SQL (RLS)** ni kipengele kinachodhibiti **mifumo ambayo mtumiaji anaweza kuona au kubadilisha**, kuhakikisha kila mtumiaji anaona tu data inayohusiana nao. Kwa kuunda sera za usalama zenye vichujio au vikwazo, mashirika yanaweza kutekeleza upatikanaji wa kina katika kiwango cha database.
|
||||
**Azure SQL Row Level Security (RLS)** ni kipengele kinachodhibiti **ni mistari ipi mtumiaji anaweza kuona au kubadilisha**, kuhakikisha kila mtumiaji anaona tu data inayohusiana nao. Kwa kuunda sera za usalama zenye vichujio au vikwazo, mashirika yanaweza kutekeleza ufikiaji wa kina katika ngazi ya database.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instances** ni kwa ajili ya matumizi makubwa, kupeleka kwa kiwango cha SQL Server nzima. Inatoa karibu 100% ulinganifu na SQL Server ya hivi punde kwenye eneo (Enterprise Edition) Injini ya Database, ambayo inatoa utekelezaji wa mtandao wa ndani (VNet) unaoshughulikia wasiwasi wa kawaida wa usalama, na mfano wa biashara unaofaa kwa wateja wa SQL Server wa eneo.
|
||||
**Azure SQL Managed Instances** ni kwa ajili ya matumizi makubwa, kupeleka kwa kiwango cha SQL Server nzima. Inatoa karibu 100% ulinganifu na SQL Server ya hivi punde kwenye tovuti (Enterprise Edition) Database Engine, ambayo inatoa utekelezaji wa mtandao wa ndani (VNet) unaoshughulikia wasiwasi wa kawaida wa usalama, na mfano wa biashara unaofaa kwa wateja wa SQL Server kwenye tovuti.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines** inaruhusu **udhibiti wa mfumo wa uendeshaji** na mfano wa SQL Server, kwani VM itazinduliwa katika huduma ya VM inayofanya kazi SQL server.
|
||||
**Azure SQL Virtual Machines** inaruhusu **kudhibiti mfumo wa uendeshaji** na mfano wa SQL Server, kwani VM itazinduliwa katika huduma ya VM inayofanya kazi SQL server.
|
||||
|
||||
Wakati VM ya SQL inaundwa inawezekana **kuchagua mipangilio yote ya VM** (kama ilivyoonyeshwa katika somo la VM) ambayo itakuwa ikihifadhi SQL server.
|
||||
- Hii ina maana kwamba VM itakuwa ikipata baadhi ya VNet(s), inaweza kuwa na **Identities Zinazosimamiwa** zilizounganishwa nayo, inaweza kuwa na sehemu za faili zilizowekwa… ikifanya **kuhamasisha kutoka kwa SQL** hadi VM kuwa ya kuvutia sana.
|
||||
- Zaidi ya hayo, inawezekana kuunda kitambulisho cha programu na siri ili **kuruhusu SQL kufikia vault maalum ya funguo**, ambayo inaweza kuwa na taarifa nyeti.
|
||||
- Hii inamaanisha kwamba VM itakuwa ikifikia baadhi ya VNet(s), inaweza kuwa na **Identiti za Usimamizi zilizounganishwa** nayo, inaweza kuwa na sehemu za faili zilizowekwa… ikifanya **kuhamasisha kutoka kwa SQL** hadi VM kuwa ya kuvutia sana.
|
||||
- Zaidi ya hayo, inawezekana kusanidi kitambulisho cha programu na siri ili **kuruhusu SQL kufikia vault maalum ya funguo**, ambayo inaweza kuwa na taarifa nyeti.
|
||||
|
||||
Pia inawezekana kuunda mambo kama **sasisho za SQL za kiotomatiki**, **nakala za akiba za kiotomatiki**, **uthibitishaji wa Entra ID** na vipengele vingi vya huduma nyingine za SQL.
|
||||
Pia inawezekana kusanidi mambo kama **sasisho za SQL za kiotomatiki**, **backups za kiotomatiki**, **uthibitishaji wa Entra ID** na sehemu kubwa ya vipengele vya huduma nyingine za SQL.
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -279,7 +304,7 @@ $Connection.Close()
|
||||
|
||||
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
|
||||
```
|
||||
Unaweza pia kutumia sqlcmd kufikia hifadhidata. Ni muhimu kujua kama seva inaruhusu muunganisho wa umma `az sql server show --name <server-name> --resource-group <resource-group>`, na pia kama sheria ya firewall inaruhusu IP yetu kufikia:
|
||||
Unaweza pia kutumia sqlcmd kufikia hifadhidata. Ni muhimu kujua ikiwa seva inaruhusu muunganisho wa umma `az sql server show --name <server-name> --resource-group <resource-group>`, na pia ikiwa sheria ya firewall inaruhusu IP yetu kufikia:
|
||||
```bash
|
||||
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
|
||||
```
|
||||
@@ -305,7 +330,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
### Persistence
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-sql-persistance.md
|
||||
../az-persistence/az-sql-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user