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

This commit is contained in:
Translator
2026-07-13 14:07:12 +00:00
parent ca0d89b0a9
commit bfb7c742ab
@@ -4,45 +4,47 @@
## Azure SQL
Azure SQL एक प्रबंधित, सुरक्षित और बुद्धिमान उत्पादों का परिवार है जो **Azure क्लाउड में SQL Server डेटाबेस इंजन** का उपयोग करता है। इसका मतलब है कि आपको अपने सर्वरों के भौतिक प्रशासन की चिंता करने की आवश्यकता नहीं है, और आप अपने डेटा के प्रबंधन पर ध्यान केंद्रित कर सकते हैं।
Azure SQL एक managed, secure, और intelligent products का family है जो **Azure cloud में SQL Server database engine** का उपयोग करता है। इसका मतलब है कि आपको अपने servers के physical administration की चिंता नहीं करनी पड़ती, और आप अपने data को manage करने पर focus कर सकते हैं।
Azure SQL में चार मुख्य पेशकशें शामिल है:
Azure SQL चार main offerings से बना है:
1. **Azure SQL Server**: SQL Server डेटाबेस के **तैनाती और प्रबंधन** के लिए एक सर्वर की आवश्यकता होती है।
2. **Azure SQL Database**: यह एक **पूर्ण-प्रबंधित डेटाबेस सेवा** है, जो आपको Azure क्लाउड में व्यक्तिगत डेटाबेस होस्ट करने की अनुमति देत है।
3. **Azure SQL Managed Instance**: यह बड़े पैमाने पर, पूरे SQL Server इंस्टेंस-स्कोप्ड तैनातियों के लिए है।
4. **Azure SQL Server on Azure VMs**: यह उन आर्किटेक्चर के लिए सबसे अच्छा है जहा आप **ऑपरेटिंग सिस्टम** और SQL Server इंस्टेंस पर नियंत्रण चाहते हैं।
1. **Azure SQL Server**: SQL Server databases के **deployment and management** के लिए एक server की जरूरत होती है।
2. **Azure SQL Database**: यह एक **fully-managed database service** है, जो आपको Azure cloud में individual databases host करने की अनुमति देत है।
3. **Azure SQL Managed Instance**: यह larger scale, पूरे SQL Server instance-scoped deployments के लिए है।
4. **Azure SQL Server on Azure VMs**: यह उन architectures के लिए best है जहा आप **operating system **और SQL Server instance पर control चाहते हैं।
### SQL Server सुरक्षा विशेषताएँ
### SQL Server Security Features
**नेटवर्क एक्सेस:**
**Network access:**
- सार्वजनिक एंडपॉइंट (विशिष्ट नेटवर्कों तक पहुंच को सीमित कर सकता है)।
- निजी एंडपॉइंट।
- डोमेन नामों के आधार पर कनेक्शनों को प्रतिबंधित करना भी संभव है।
- Azure सेवाओं को इसे एक्सेस करने की अनुमति देना भी संभव है (जैसे पोर्टल में क्वेरी संपादक का उपयोग करने के लिए या Azure VM को कनेक्ट करने की अनुमति देना)।
- Public endpoint (specific networks तक access limit कर सकता है)।
- Private endpoints.
- domain names के आधार पर connections को restrict करना भी possible है।
- Azure services को access करने देने की भी possibility है (जैसे portal में Query editor use करने के लिए या किसी Azure VM को connect करने देने के लिए)।
- अगर किसी SQL Server पर *Allow Azure services and resources to access this server* "Enabled" पर set है, तो Azure automatically एक hidden firewall rule create करेगा जो Azure से originating सभी network traffic को SQL Server से connect करने की अनुमति देता है — जिसमें any tenant के resources भी शामिल हैं।
- इसका मतलब है कि अगर आपके पास valid SQL credentials हैं, तो आप अपने own attackercontrolled tenant के अंदर किसी Azure VM से victim Azure SQL Server से connect कर सकते हैं। [MS docs यह explain करता है](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
**प्रमाणीकरण विधियाँ:**
**Authentication Methods:**
- Microsoft **Entra-only** प्रमाणीकरण: आपको उन Entra प्रिंसिपल को इंगित करने की आवश्यकता है जिनके पास सेवा तक पहुंच होगी
- **SQL और Microsoft Entra** दोनों प्रमाणीकरण: उपयोगकर्ता नाम और पासवर्ड के साथ पारंपरिक SQL प्रमाणीकरण Microsoft Entra के साथ।
- **केवल SQL** प्रमाणीकरण: केवल डेटाबेस उपयोगकर्ताओं के माध्यम से पहुंच की अनुमति दें।
- Microsoft **Entra-only** authentication: आपको उन Entra principals को indicate करना होगा जिन्हें service access मिलेगा
- **Both SQL and Microsoft Entra** authentication: Microsoft Entra के साथ traditional SQL authentication, username और password के साथ।
- **Only SQL** authentication: केवल database users के जरिए access allow करें।
ध्यान दें कि यदि कोई SQL प्रमाणीकरण अनुमति दी जाती है, तो एक व्यवस्थापक उपयोगकर्ता (उपयोगकर्ता नाम + पासवर्ड) को इंगित करना आवश्यक है और यदि Entra ID प्रमाणीकरण चुना गया है, तो कम से कम एक प्रिंसिपल को व्यवस्थापक पहुंच के साथ इंगित करना भी आवश्यक है।
ध्यान दें कि अगर कोई SQL auth allow है तो एक admin user (username + password) indicate करना जरूरी है, और अगर Entra ID auth selected है तो कम से कम एक principal with admin access भी indicate करना जरूरी है।
**एन्क्रिप्शन:**
**Encryption:**
- इसे "पारदर्शी डेटा एन्क्रिप्शन" कहा जाता है और यह डेटाबेस, बैकअप और लॉग को विश्राम में एन्क्रिप्ट करता है।
- हमेशा की तरह, डिफ़ॉल्ट रूप से Azure प्रबंधित कुंजी का उपयोग किया जाता है लेकिन ग्राहक प्रबंधित एन्क्रिप्शन कुंजी (CMEK) का भी उपयोग किया जा सकत है।
**प्रबंधित पहचान:**
- इसे “Transparent data encryption” कहा जाता है और यह databases, backups, और logs को at rest encrypt करता है।
- हमेशा की तरह, by default Azure managed key use होती है, लेकिन customer managed encryption key (CMEK) भी use की जा सकत है।
**Managed Identities:**
- सिस्टम और उपयोगकर्ता प्रबंधित MIs को असाइन करना संभव है।
- एन्क्रिप्शन कुंजी (यदि CMEK का उपयोग किया गया है) और डेटाबेस से अन्य सेवाओं तक पहुंच के लिए उपयोग किया जाता है।
- डेटाबेस से एक्सेस की जा सकने वाली Azure सेवाओं के कुछ उदाहरणों के लिए [इस पृष्ठ को देखें](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
- यदि एक से अधिक UMI असाइन किया गया है, तो उपयोग के लिए डिफ़ॉल्ट एक को इंगित करना संभव है।
- क्रॉस-टेनेंट एक्सेस के लिए एक संघीय क्लाइंट पहचान को कॉन्फ़िगर करना संभव है।
- system और user managed MIs assign करना possible है।
- इसका उपयोग encryption key access करने के लिए (अगर CMEK use की गई है) और databases से अन्य services access करने के लिए होता है।
- database से access की जा सकने वाली Azure services के कुछ examples के लिए [docs का यह page](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) देखें
- अगर एक से अधिक UMI assigned है, तो use करने के लिए default one indicate करना possible है।
- cross-tenant access के लिए federated client identity configure करना possible है।
SQL डेटाबेस से एक ब्लॉब स्टोरेज के अंदर जानकारी तक पहुंचने के लिए कुछ कमांड:
blob storage के अंदर की info को SQL database से access करने के लिए कुछ commands:
```sql
-- Create a credential for the managed identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
@@ -69,57 +71,57 @@ GO
```
**Microsoft Defender:**
-संभावित डेटाबेस कमजोरियों को कम करने और असामान्य गतिविधियों का पता लगाने” के लिए उपयोगी
- हम Defender के बारे में अपनी एक पाठ में बात करेंगे (इसे कई अन्य Azure सेवाओं में सक्षम किया जा सकता है)
-mitigating potential database vulnerabilities, and detecting anomalous activities” के लिए उपयोगी
- हम Defender के बारे में इसकी अपनी lesson में बात करेंगे (इसे कई अन्य Azure services में सक्षम किया जा सकता है)
**Backups:**
- बैकअप की आवृत्ति को रिटेंशन नीतियों में प्रबंधित किया जाता है।
- Backup frequency retention policies में managed होती है।
**Deleted databases:**
- मौजूदा बैकअप से हटाए DBs को पुनर्स्थापित करना संभव है।
- Existing backups से delete की DBs को restore करना संभव है।
## Azure SQL Database
**Azure SQL Database** एक **पूर्ण रूप से प्रबंधित डेटाबेस प्लेटफ़ॉर्म के रूप में सेवा (PaaS)** है जो स्केलेबल और सुरक्षित संबंधपरक डेटाबेस समाधान प्रदान करता है। यह नवीनतम SQL Server तकनीकों पर आधारित है और अवसंरचना प्रबंधन की आवश्यकता को समाप्त करता है, जिससे यह क्लाउड-आधारित अनुप्रयोगों के लिए एक लोकप्रिय विकल्प बन जाता है।
**Azure SQL Database** एक **fully managed database platform as a service (PaaS)** है जो scalable और secure relational database solutions प्रदान करता है। यह latest SQL Server technologies पर बना है और infrastructure management की आवश्यकता को समाप्त करता है, जिससे यह cloud-based applications के लिए एक लोकप्रिय choice बनता है।
SQL डेटाबेस बनाने के लिए यह आवश्यक है कि SQL सर्वर को इंगित किया जाए जहाँ इसे होस्ट किया जाएगा।
SQL database बनाने के लिए यह बताना जरूरी है कि इसे कौन-सा SQL server host करेगा।
### SQL Database Security Features
- **हमेशा अद्यतित**: नवीनतम स्थिर संस्करण पर चलता है SQL Server का और स्वचालित रूप से नए फीचर्स और पैच प्राप्त करता है।
- **विरासत में प्राप्त SQL Server सुरक्षा विशेषताएँ:**
- प्रमाणीकरण (SQL और/या Entra ID)
- असाइन किए गए प्रबंधित पहचान
- नेटवर्क प्रतिबंध
- एन्क्रिप्शन
- बैकअप
- **Always Up-to-Date**: latest stable version of SQL Server पर चलता है और नए features तथा patches automatically प्राप्त करता है।
- **Inherited SQL Server security features:**
- Authentication (SQL and/or Entra ID)
- Assigned Managed Identities
- Network restrictions
- Encryption
- Backups
-
- **डेटा पुनरावृत्ति:** विकल्प स्थानीय, क्षेत्र, भू-क्षेत्र या भू-क्षेत्र पुनरावृत्ति हैं।
- **लेजर:** यह डेटा की अखंडता को क्रिप्टोग्राफिक रूप से सत्यापित करता है, यह सुनिश्चित करत कि किसी भी छेड़छाड़ का पता लगाया जाए। वित्तीय, चिकित्सा और किसी भी संगठन के लिए उपयोगी जो संवेदनशील डेटा का प्रबंधन करता है
- **Data redundancy:** Options local, zone, Geo या Geo-Zone redundant हैं।
- **Ledger:** यह cryptographically data की integrity verify करता है, यह सुनिश्चित करतुए कि किसी भी tampering का पता ल जाए। वित्तीय, medical और sensitive data manage करने वाले किसी भी organization के लिए उपयोगी
एक SQL डेटाबेस एक **इलास्टिक पूल** का हिस्सा हो सकता है। इलास्टिक पूल कई डेटाबेस का प्रबंधन करने के लिए एक लागत-कुशल समाधान है, जो उनके बीच कॉन्फ़िगर करने योग्य कंप्यूट (eDTUs) और स्टोरेज संसाधनों को साझा करत है, जिसमें मूल्य निर्धारण केवल आवंटित संसाधनों के आधार पर होत है न कि डेटाबेस की संख्या के आधार पर।
A SQL database **elastic Pool** का हिस्सा हो सकता है। Elastic pools multiple databases को manage करने के लिए एक cost-effective solution है, जो उनके बीच configurable compute (eDTUs) और storage resources share करत है, और pricing केवल allocated resources पर आधारित होत है, databases की संख्या पर नहीं
#### Azure SQL Column Level Security (Masking) & Row Level Security
**Azure SQL का डायनामिक** डेटा मास्किंग एक विशेषता है जो **संवेदनशील जानकारी की सुरक्षा में मदद करती है** इसे अनधिकृत उपयोगकर्ताओं से छिपाकर। वास्तविक डेटा को बदलने के बजाय, यह प्रदर्शित डेटा को डायनामिक रूप से मास्क करता है, यह सुनिश्चित करता है कि संवेदनशील विवरण जैसे क्रेडिट कार्ड नंबर अस्पष्ट हैं।
**Azure SQL's dynamic** data masking एक feature है जो **sensitive information को छिपाकर** unauthorized users से उसकी protection करने में मदद करता है। Actual data को बदलने के बजाय, यह dynamically displayed data को mask करता है, जिससे credit card numbers जैसी sensitive details obscured रहती हैं।
**डायनामिक डेटा मास्किंग** सभी उपयोगकर्ताओं पर प्रभाव डालती है सिवाय उन लोगों के जो अनमास्क किए गए हैं (इन उपयोगकर्ताओं को इंगित करने की आवश्यकता है) और प्रशासकों। इसमें वह कॉन्फ़िगरेशन विकल्प है जो निर्दिष्ट करता है कि कौन से SQL उपयोगकर्ता डायनामिक डेटा मास्किंग से छूट प्राप्त करते हैं, **प्रशासक हमेशा बाहर होते हैं**
**Dynamic Data Masking** administrators और unmasked users (इन users को indicate करना होता है) को छोड़कर सभी users पर affect करता है। इसमें configuration option होता है जो बताता है कि कौन-से SQL users dynamic data masking से exempt हैं, जबकि **administrators हमेशा excluded** रहते हैं।
**Azure SQL रो लेवल सुरक्षा (RLS)** एक विशेषता है जो **नियंत्रित करत है कि कौन से पंक्तियाँ एक उपयोगकर्ता देख या संशोधित कर सकता है**, यह सुनिश्चित करते हुए कि प्रत्येक उपयोगकर्ता केवल उनके लिए प्रासंगिक डेटा देखता है। फ़िल्टर या ब्लॉक प्रीडिकेट के साथ सुरक्षा नीतियाँ बनाकर, संगठन डेटाबेस स्तर पर बारीक-बारीक पहुंच लागू कर सकत हैं।
**Azure SQL Row Level Security (RLS)** एक feature है जो **control करत है कि user कौन-सी rows देख या modify कर सकता है**, जिससे यह सुनिश्चित होता है कि हर user केवल अपने लिए relevant data ही देखे। Filter या block predicates के साथ security policies बनाकर organizations database level पर fine-grained access enforce कर सकत हैं।
### Azure SQL Managed Instance
**Azure SQL Managed Instances** बड़े पैमाने पर, पूरे SQL Server इंस्टेंस-स्कोप्ड डिप्लॉयमेंट के लिए हैं। यह नवीनतम SQL Server ऑन-प्रिमाइसेस (Enterprise Edition) डेटाबेस इंजन के साथ लगभग 100% संगतता प्रदान करता है, जो सामान्य सुरक्षा चिंताओं को संबोधित करने के लिए एक स्वदेशी वर्चुअल नेटवर्क (VNet) कार्यान्वयन प्रदान करता है, और ऑन-प्रिमाइसेस SQL Server ग्राहकों के लिए अनुकूल व्यावसायिक मॉडल
**Azure SQL Managed Instances** बड़े scale, पूरे SQL Server instance-scoped deployments के लिए हैं। यह latest SQL Server on-premises (Enterprise Edition) Database Engine के साथ लगभग 100% compatibility प्रदान करता है, जो एक native virtual network (VNet) implementation देता है जो common security concerns को address करता है, और on-premises SQL Server customers के लिए favorable business model प्रदान करता है
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** को **ऑपरेटिंग सिस्टम** और SQL Server इंस्टेंस को नियंत्रित करने की अनुमति देत है, क्योंकि एक VM SQL सर्वर चलाने वाली VM सेवा में उत्पन्न होग
**Azure SQL Virtual Machines** **operating system** और SQL Server instance को control करने की अनुमति देत है, क्योंकि VM service में एक VM spawn होगी जो SQL server चला रही होग
जब एक SQL वर्चुअल मशीन बनाई जाती है, तो यह संभव है कि **VM की सभी सेटिंग्स का चयन किया जाए** (जैसा कि VM पाठ में दिखाया गया है) जो SQL सर्वर को होस्ट करेग
- इसका मतलब है कि VM कुछ VNet(s) तक पहुँच प्राप्त करेगा, समें **प्रबंधित पहचानें संलग्न** हो सकती हैं, फ़ाइल शेयर माउंट किए जा सकते हैं... जिससे SQL से VM में **पिवोटिंग** करना बहुत दिलचस्प हो जाता है।
- इसके अलावा, यह एक ऐप आईडी और सीक्रेट को कॉन्फ़िगर करना संभव है ताकि **SQL को एक विशिष्ट की वॉल्ट तक पहुँचने की अनुमति दी जा सके**, जिसमें संवेदनशील जानकारी हो सकती है।
जब SQL Virtual Machine बनाई जाती है, तो **VM की सभी settings select करना** संभव है (जैसा VM lesson में दिखाया गया है) जो SQL server को host करेग
- इसका मतलब है कि VM कुछ VNet(s) को access कर रही होगी, समें **Managed Identities attached** हो सकती हैं, file shares mounted हो सकते हैं जिससे **SQL से VM तक pivoting** बहुत interesting हो जाता है।
- इसके अलावा, app id और secret configure करना संभव है ताकि **SQL किसी specific key vault को access कर सके**, जिसमें sensitive info हो सकती है।
यह भी संभव है कि **स्वचालित SQL अपडेट**, **स्वचालित बैकअप**, **Entra ID प्रमाणीकरण** और अन्य SQL सेवाओं की अधिकांश विशेषताओं को कॉन्फ़िगर किया जाए
**automatic SQL updates**, **automatic backups**, **Entra ID authentication** और अन्य SQL services की अधिकांश features को configure करना भी संभव है
## Enumeration
@@ -258,7 +260,7 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
इसके अतिरिक्त, यदि आप डेटाबेस के भीतर डायनामिक डेटा मास्किंग और रो लेवल नीतियों की गणना करना चाहते हैं, तो आप क्वेरी कर सकते हैं:
इसके अलावा, यदि आप database के भीतर Dynamic Data Masking और Row Level policies enumerate करना चाहते हैं, तो आप query कर सकते हैं:
```sql
--Enumerates the masked columns
SELECT
@@ -283,9 +285,9 @@ JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Connect and run SQL queries
### कनेक्ट करें और SQL queries चलाएँ
आप एक कनेक्शन स्ट्रिंग (जिसमें क्रेडेंशियल्स होते हैं) पा सकते हैं उदाहरण [enumerating an Az WebApp](az-app-services.md):
आप example [enumerating an Az WebApp](az-app-services.md) से एक connection string (जिसमें credentials होते हैं) पा सकते हैं:
```bash
function invoke-sql{
param($query)
@@ -304,7 +306,7 @@ $Connection.Close()
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
```
आप sqlcmd का उपयोग करके डेटाबेस तक भी पहुँच सकते हैं। यह जानना महत्वपूर्ण है कि क्या सर्वर सार्वजनिक कनेक्शनों की अनुमति देता है `az sql server show --name <server-name> --resource-group <resource-group>` और यह भी कि क्या फ़ायरवॉल नियम हमारे IP को पहुँचने की अनुमति देता है:
आप database तक access करने के लिए sqlcmd का भी उपयोग कर सकते हैं। यह जानना महत्वपूर्ण है कि क्या server public connections की अनुमति देता है `az sql server show --name <server-name> --resource-group <resource-group>`, और यह भी कि क्या firewall rule हमारे IP को access करने देता है:
```bash
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
```