diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index 26e5f2728..42a3137ee 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,45 +4,47 @@ ## 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 haupaswi kuwa na wasiwasi kuhusu usimamizi wa kimwili wa seva zako, na unaweza kuzingatia kusimamia data yako. +Azure SQL ni familia ya bidhaa zinazosimamiwa, salama, na zenye akili zinazotumia **SQL Server database engine katika Azure cloud**. Hii inamaanisha huhitaji kuwa na wasiwasi kuhusu usimamizi wa kimwili wa servers zako, na unaweza kuzingatia kusimamia data yako. -Azure SQL inajumuisha ofa kuu nne: +Azure SQL inajumuisha matoleo manne makuu: -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 instance nzima. -4. **Azure SQL Server kwenye Azure VMs**: Hii ni bora kwa usanifu ambapo unataka **udhibiti juu ya mfumo wa uendeshaji** na SQL Server instance. +1. **Azure SQL Server**: Server inahitajika kwa **deployment and management** ya SQL Server databases. +2. **Azure SQL Database**: Huu ni **fully-managed database service**, unaokuwezesha kuhifadhi individual databases katika Azure cloud. +3. **Azure SQL Managed Instance**: Hii ni kwa deployments za kiwango kikubwa zaidi, zima la SQL Server instance-scoped. +4. **Azure SQL Server on Azure VMs**: Hii ni bora kwa architectures ambapo unataka **control over the operating system **na SQL Server instance. -### Vipengele vya Usalama wa SQL Server +### SQL Server Security Features -**Upatikanaji wa Mtandao:** +**Network access:** -- Kiwango cha umma (inaweza 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 Azure VM kuungana). +- Public endpoint (inaweza kuzuia access kwa specific networks). +- Private endpoints. +- Inawezekana pia kuzuia connections kulingana na domain names. +- Inawezekana pia kuruhusu Azure services kui access (kama kutumia Query editor kwenye portal au kuruhusu Azure VM kuconnect). +- Ikiwa SQL Server ina *Allow Azure services and resources to access this server* imewekwa kuwa "Enabled", Azure itaunda kiotomatiki hidden firewall rule inayoruhusu network traffic yote inayotoka Azure kuconnect kwa SQL Server — ikijumuisha resources kutoka tenant yoyote. +- Hii inamaanisha kwamba ukipata valid SQL credentials, unaweza kuconnect kwa victim Azure SQL Server kutoka Azure VM ndani ya tenant yako mwenyewe unaoidhibiti kama attacker. [The MS docs explains this](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services) -**Mbinu za Uthibitishaji:** +**Authentication Methods:** -- Uthibitishaji wa Microsoft **Entra-only**: 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 tu kupitia watumiaji wa database. +- Microsoft **Entra-only** authentication: Unahitaji kuonyesha Entra principals watakaokuwa na access kwa service. +- **Both SQL and Microsoft Entra** authentication: Traditional SQL authentication kwa username na password pamoja na Microsoft Entra. +- **Only SQL** authentication: Ruhusu tu access kupitia database users. -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. +Kumbuka kwamba kama SQL auth yoyote inaruhusiwa admin user (username + password) anahitaji kuonyeshwa na ikiwa Entra ID auth imechaguliwa pia inahitajika kuonyesha angalau principal mmoja mwenye admin access. -**Ushifishaji:** +**Encryption:** -- 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 ushirikiano wa mteja (CMEK) pia zinaweza kutumika. -**Identities Zinazosimamiwa:** +- Inaitwa “Transparent data encryption” na inencrypt databases, backups, na logs at rest. +- Kama kawaida, Azure managed key hutumika kwa default lakini customer managed encryption key (CMEK) pia inaweza kutumika. +**Managed Identities:** -- Inawezekana kutoa MIs zinazodhibitiwa na mfumo na mtumiaji. -- Inatumika kupata funguo za ushirikishaji (ikiwa CMEK inatumika) na huduma nyingine kutoka kwa databases. -- 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 zaidi ya UMI mmoja umepewa, inawezekana kuashiria ile ya chaguo-msingi kutumia. -- Inawezekana kuunda kitambulisho cha mteja kilichounganishwa kwa upatikanaji wa wapangaji tofauti. +- Inawezekana kugawa system na user managed MIs. +- Hutumika kupata encryption key (ikiwa CMEK inatumika) na services nyingine kutoka databases. +- Kwa baadhi ya examples za Azure services zinazoweza kuaccess kutoka database angalia [this page of the docs](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) +- Ikiwa zaidi ya UMI moja imegawiwa, inawezekana kuonyesha default moja ya kutumia. +- Inawezekana kusanidi federated client identity kwa cross-tenant access. -Amri zingine za kupata taarifa ndani ya uhifadhi wa blob kutoka kwa database ya SQL: +Some commands to access info inside a blob storage from a SQL database: ```sql -- Create a credential for the managed identity CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential] @@ -69,57 +71,58 @@ GO ``` **Microsoft Defender:** -- 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) +- Inafaa kwa “mitigating potential database vulnerabilities, and detecting anomalous activities” +- Tutazungumza kuhusu Defender katika somo lake lenyewe (inaweza kuwashwa katika huduma nyingine kadhaa za Azure) **Backups:** -- Mara ya kuhifadhi inasimamiwa katika sera za uhifadhi. +- Marudio ya backup yanadhibitiwa katika retention policies. **Deleted databases:** -- Inawezekana kurejesha DBs ambazo zimefutwa kutoka kwa backups zilizopo. +- Inawezekana kurestore DBs ambazo zimefutwa kutoka kwenye existing backups. ## Azure SQL Database -**Azure SQL Database** ni **jukwaa la database linalosimamiwa kikamilifu kama huduma (PaaS)** linalotoa 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. +**Azure SQL Database** ni **fully managed database platform as a service (PaaS)** inayotoa scalable na secure relational database solutions. Imejengwa juu ya teknolojia za hivi karibuni za SQL Server na huondoa hitaji la usimamizi wa infrastructure, na kuifanya kuwa chaguo maarufu kwa cloud-based applications. -Ili kuunda database ya SQL inahitajika kuashiria seva ya SQL ambapo itakuwa ikihifadhiwa. +Ili kuunda SQL database inahitajika kuonyesha SQL server itakapohostiwa. ### SQL Database Security Features -- **Daima Iko Sawa**: Inafanya kazi kwenye toleo la hivi punde la SQL Server na inapata vipengele na patches mpya kiotomatiki. -- **Vipengele vya usalama vya SQL Server vilivyorithiwa:** -- Uthibitishaji (SQL na/au Entra ID) -- Identiti za Usimamizi zilizotolewa -- Vikwazo vya mtandao -- Usimbaji +- **Always Up-to-Date**: Huendesha kwenye latest stable version ya SQL Server na hupokea features na patches mpya kiotomati. +- **Inherited SQL Server security features:** +- Authentication (SQL and/or Entra ID) +- Assigned Managed Identities +- Network restrictions +- Encryption - Backups - … -- **Ukarabati wa data:** Chaguzi 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. +- **Data redundancy:** Chaguo ni local, zone, Geo au Geo-Zone redundant. +- **Ledger:** Huthibitisha kwa cryptography integrity ya data, kuhakikisha kuwa tampering yoyote hugunduliwa. Inafaa kwa taasisi za kifedha, matibabu na kila organization inayosimamia sensitive data. -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. + +SQL database inaweza kuwa sehemu ya **elastic Pool**. Elastic pools ni suluhisho la gharama nafuu kwa kusimamia databases nyingi kwa kushiriki configurable compute (eDTUs) na storage resources kati yao, huku pricing ikitegemea tu resources zilizotengwa badala ya idadi ya databases. #### Azure SQL Column Level Security (Masking) & Row Level Security -**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 dynamic, kuhakikisha kwamba maelezo nyeti kama nambari za kadi za mkopo yanatiliwa mbali. +**Azure SQL's dynamic** data masking ni feature inayosaidia **kulinda sensitive information kwa kuificha** kutoka kwa unauthorized users. Badala ya kubadili actual data, hu-masking data inayoonyeshwa ki-dynamic, kuhakikisha kuwa details nyeti kama credit card numbers zinafichwa. -**Dynamic Data Masking** inawagusa watumiaji wote isipokuwa wale ambao hawajafichwa (watumiaji hawa wanahitaji kuashiriwa) na wasimamizi. Ina chaguo la usanidi linaloeleza ni watumiaji wa SQL gani wanaondolewa kwenye dynamic data masking, huku **wasimamizi wakitengwa kila wakati**. +**Dynamic Data Masking** huathiri watumiaji wote isipokuwa wale ambao hawaja-maskwa (watumiaji hawa wanahitaji kuonyeshwa) na administrators. Ina chaguo la configuration linalobainisha ni SQL users gani wameondolewa kwenye dynamic data masking, huku **administrators kila mara wakitengwa**. -**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 Row Level Security (RLS)** ni feature inayodhibiti ni rows zipi user anaweza kuona au kurekebisha, kuhakikisha kila user anaona tu data inayomhusu. Kwa kuunda security policies zenye filter au block predicates, organizations zinaweza kutekeleza fine-grained access kwenye database level. ### 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 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 Managed Instances** ni kwa larger scale, entire SQL Server instance-scoped deployments. Hutoa karibu 100% compatibility na latest SQL Server on-premises (Enterprise Edition) Database Engine, ambayo hutoa native virtual network (VNet) implementation inayoshughulikia common security concerns, na business model inayofaa kwa on-premises SQL Server customers. ### Azure SQL Virtual Machines -**Azure SQL Virtual Machines** inaruhusu **kudhibiti mfumo wa uendeshaji** na mfano wa SQL Server, kwani VM itazalishwa katika huduma ya VM inayokimbia SQL server. +**Azure SQL Virtual Machines** inaruhusu **kudhibiti operating system** na SQL Server instance, kwani VM itaundwa katika VM service inayoendesha 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 ikifikia baadhi ya VNet(s), inaweza kuwa na **Identiti za Usimamizi zilizounganishwa** nayo, inaweza kuwa na sehemu za faili zilizowekwa… ikifanya **kuhamasisha kutoka 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. +Wakati SQL Virtual Machine inapoundwa inawezekana **kuchagua settings zote za VM** (kama ilivyoonyeshwa katika somo la VM) ambazo zitahost SQL server. +- Hii inamaanisha kuwa VM itakuwa inafikia baadhi ya VNet(s), inaweza kuwa na **Managed Identities attached** kwake, inaweza kuwa na file shares mounted… jambo linalofanya **pivoting kutoka SQL** kwenda VM kuwa la kuvutia sana. +- Zaidi ya hayo, inawezekana kusanidi app id na secret ili **kuruhusu SQL kufikia specific key vault**, ambayo inaweza kuwa na sensitive info. -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. +Pia inawezekana kusanidi mambo kama **automatic SQL updates**, **automatic backups**, **Entra ID authentication** na features nyingi za huduma nyingine za SQL. ## Enumeration @@ -258,7 +261,7 @@ Get-AzSqlVM {{#endtab}} {{#endtabs}} -Zaidi ya hayo, ikiwa unataka kuhesabu Dynamic Data Masking, na sera za Kiwango cha Safu, ndani ya hifadhidata, unaweza kuuliza: +Zaidi, ikiwa unataka kuorodhesha Dynamic Data Masking, na Row Level policies, ndani ya database, unaweza kuuliza: ```sql --Enumerates the masked columns SELECT @@ -283,9 +286,9 @@ JOIN sys.security_predicates AS sp2 ON sp.object_id = sp2.object_id; ``` -### Connect and run SQL queries +### Unganisha na endesha SQL queries -Unaweza kupata mfuatano wa muunganisho (ukijumuisha akidi) kutoka kwa mfano [kuhesabu Az WebApp](az-app-services.md): +Unaweza kupata connection string (inayojumuisha credentials) kutoka mfano [enumerating an Az WebApp](az-app-services.md): ```bash function invoke-sql{ param($query) @@ -304,11 +307,11 @@ $Connection.Close() invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' ``` -Unaweza pia kutumia sqlcmd kufikia hifadhidata. Ni muhimu kujua ikiwa seva inaruhusu muunganisho wa umma `az sql server show --name --resource-group `, na pia ikiwa sheria ya moto inaruhusu IP yetu kufikia: +Unaweza pia kutumia sqlcmd kufikia database. Ni muhimu kujua kama server inaruhusu public connections `az sql server show --name --resource-group `, na pia kama firewall rule inaruhusu IP yetu kufikia: ```bash sqlcmd -S .database.windows.net -U -P -d ``` -## References +## Marejeo - [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)