23 KiB
Az - SQL
{{#include ../../../banners/hacktricks-training.md}}
Azure SQL
Azure SQL एक प्रबंधित, सुरक्षित और बुद्धिमान उत्पादों का परिवार है जो Azure क्लाउड में SQL Server डेटाबेस इंजन का उपयोग करता है। इसका मतलब है कि आपको अपने सर्वरों के भौतिक प्रशासन की चिंता करने की आवश्यकता नहीं है, और आप अपने डेटा के प्रबंधन पर ध्यान केंद्रित कर सकते हैं।
Azure SQL में तीन मुख्य पेशकशें शामिल हैं:
- Azure SQL Database: यह एक पूर्ण-प्रबंधित डेटाबेस सेवा है, जो आपको Azure क्लाउड में व्यक्तिगत डेटाबेस होस्ट करने की अनुमति देती है। यह अंतर्निहित बुद्धिमत्ता प्रदान करती है जो आपके अद्वितीय डेटाबेस पैटर्न को सीखती है और अनुकूलित सिफारिशें और स्वचालित ट्यूनिंग प्रदान करती है।
- Azure SQL Managed Instance: यह बड़े पैमाने पर, पूरे SQL Server इंस्टेंस-स्कोप्ड डिप्लॉयमेंट के लिए है। यह नवीनतम SQL Server ऑन-प्रिमाइसेस (Enterprise Edition) डेटाबेस इंजन के साथ लगभग 100% संगतता प्रदान करता है, जो सामान्य सुरक्षा चिंताओं को संबोधित करने के लिए एक स्वदेशी वर्चुअल नेटवर्क (VNet) कार्यान्वयन प्रदान करता है, और ऑन-प्रिमाइसेस SQL Server ग्राहकों के लिए एक व्यावसायिक मॉडल अनुकूल है।
- Azure SQL Server on Azure VMs: यह इन्फ्रास्ट्रक्चर एज़ अ सर्विस (IaaS) है और उन माइग्रेशनों के लिए सबसे अच्छा है जहाँ आप ऑपरेटिंग सिस्टम और SQL Server इंस्टेंस पर नियंत्रण चाहते हैं, जैसे कि यह एक ऑन-प्रिमाइसेस सर्वर पर चल रहा हो।
Azure SQL Database
Azure SQL Database एक पूर्ण प्रबंधित डेटाबेस प्लेटफ़ॉर्म एज़ अ सर्विस (PaaS) है जो स्केलेबल और सुरक्षित रिलेशनल डेटाबेस समाधान प्रदान करता है। यह नवीनतम SQL Server तकनीकों पर आधारित है और इन्फ्रास्ट्रक्चर प्रबंधन की आवश्यकता को समाप्त करता है, जिससे यह क्लाउड-आधारित अनुप्रयोगों के लिए एक लोकप्रिय विकल्प बनता है।
Key Features
- हमेशा अद्यतित: नवीनतम स्थिर संस्करण पर चलता है और नए फीचर्स और पैच स्वचालित रूप से प्राप्त करता है।
- PaaS क्षमताएँ: अंतर्निहित उच्च उपलब्धता, बैकअप, और अपडेट।
- डेटा लचीलापन: रिलेशनल और गैर-रिलेशनल डेटा का समर्थन करता है (जैसे, ग्राफ, JSON, स्पैटियल, और XML)।
Purchasing Models / Service Tiers
- vCore-आधारित: स्वतंत्र रूप से कंप्यूट, मेमोरी, और स्टोरेज चुनें। सामान्य उद्देश्य, व्यवसायिक महत्वपूर्ण (OLTP ऐप्स के लिए उच्च लचीलापन और प्रदर्शन के साथ), और 128 TB स्टोरेज तक स्केल करता है।
- DTU-आधारित: कंप्यूट, मेमोरी, और I/O को निश्चित स्तरों में बंडल करता है। सामान्य कार्यों के लिए संतुलित संसाधन।
- मानक: सामान्य कार्यों के लिए संतुलित संसाधन।
- प्रीमियम: मांग वाले कार्यभार के लिए उच्च प्रदर्शन।
Deployment Models
Azure SQL Database विभिन्न आवश्यकताओं के अनुसार लचीले तैनाती विकल्पों का समर्थन करता है:
- एकल डेटाबेस:
- अपने समर्पित संसाधनों के साथ पूरी तरह से अलग डेटाबेस।
- माइक्रोसर्विसेज या अनुप्रयोगों के लिए महान जो एकल डेटा स्रोत की आवश्यकता होती है।
- इलास्टिक पूल:
- एक पूल के भीतर संसाधनों को साझा करने की अनुमति देता है।
- कई डेटाबेस के बीच उतार-चढ़ाव वाले उपयोग पैटर्न वाले अनुप्रयोगों के लिए लागत-कुशल।
Scalable performance and pools
- एकल डेटाबेस: प्रत्येक डेटाबेस अलग है और इसके अपने समर्पित कंप्यूट, मेमोरी, और स्टोरेज संसाधन हैं। संसाधनों को बिना डाउनटाइम (1–128 vCores, 32 GB–4 TB स्टोरेज, और 128 TB तक) गतिशील रूप से स्केल किया जा सकता है।
- इलास्टिक पूल: अधिकतम दक्षता और लागत बचाने के लिए एक पूल में कई डेटाबेस के बीच संसाधनों को साझा करें। पूरे पूल के लिए संसाधनों को भी गतिशील रूप से स्केल किया जा सकता है।
- सेवा स्तर लचीलापन: सामान्य उद्देश्य स्तर में एकल डेटाबेस के साथ छोटे स्तर पर शुरू करें। आवश्यकताओं के बढ़ने पर व्यवसायिक महत्वपूर्ण या हाइपरस्केल स्तरों में अपग्रेड करें।
- स्केलिंग विकल्प: गतिशील स्केलिंग या ऑटोस्केलिंग विकल्प।
Built-In Monitoring & Optimization
- क्वेरी स्टोर: प्रदर्शन समस्याओं को ट्रैक करता है, शीर्ष संसाधन उपभोक्ताओं की पहचान करता है, और कार्यान्वयन योग्य सिफारिशें प्रदान करता है।
- स्वचालित ट्यूनिंग: स्वचालित अनुक्रमणिका और क्वेरी योजना सुधार जैसी सुविधाओं के साथ प्रदर्शन को सक्रिय रूप से अनुकूलित करता है।
- टेलीमेट्री एकीकरण: अनुकूलित अंतर्दृष्टि के लिए Azure Monitor, Event Hubs, या Azure Storage के माध्यम से निगरानी का समर्थन करता है।
Disaster Recovery & Availability
- स्वचालित बैकअप: SQL Database स्वचालित रूप से डेटाबेस के पूर्ण, विभेदक, और लेनदेन लॉग बैकअप करता है।
- पॉइंट-इन-टाइम पुनर्स्थापना: बैकअप संरक्षण अवधि के भीतर किसी भी पिछले राज्य में डेटाबेस को पुनर्प्राप्त करें।
- जियो-रेडंडेंसी
- फेलओवर समूह: क्षेत्रों के बीच स्वचालित फेलओवर के लिए डेटाबेस को समूहित करके आपदा पुनर्प्राप्ति को सरल बनाता है।
Azure SQL Managed Instance
Azure SQL Managed Instance एक प्लेटफ़ॉर्म एज़ अ सर्विस (PaaS) डेटाबेस इंजन है जो SQL Server के साथ लगभग 100% संगतता प्रदान करता है और अधिकांश प्रबंधन कार्यों (जैसे, अपग्रेडिंग, पैचिंग, बैकअप, निगरानी) को स्वचालित रूप से संभालता है। यह न्यूनतम परिवर्तनों के साथ ऑन-प्रिमाइसेस SQL Server डेटाबेस को माइग्रेट करने के लिए एक क्लाउड समाधान प्रदान करता है।
Service Tiers
- सामान्य उद्देश्य: मानक I/O और विलंबता आवश्यकताओं वाले अनुप्रयोगों के लिए लागत-कुशल विकल्प।
- व्यवसायिक महत्वपूर्ण: महत्वपूर्ण कार्यभार के लिए कम I/O विलंबता के साथ उच्च-प्रदर्शन विकल्प।
Advanced Security Features
- धमकी सुरक्षा: संदिग्ध गतिविधियों और SQL इंजेक्शन हमलों के लिए उन्नत धमकी सुरक्षा अलर्ट। अनुपालन के लिए डेटाबेस घटनाओं को ट्रैक और लॉग करने के लिए ऑडिटिंग।
- एक्सेस नियंत्रण: केंद्रीकृत पहचान प्रबंधन के लिए Microsoft Entra प्रमाणीकरण। ग्रैन्युलर एक्सेस नियंत्रण के लिए रो-लेवल सुरक्षा और डायनामिक डेटा मास्किंग।
- बैकअप: पॉइंट-इन-टाइम पुनर्स्थापना क्षमता के साथ स्वचालित और मैनुअल बैकअप।
Azure SQL Virtual Machines
Azure SQL Virtual Machines उन माइग्रेशनों के लिए सबसे अच्छा है जहाँ आप ऑपरेटिंग सिस्टम और SQL Server इंस्टेंस पर नियंत्रण चाहते हैं, जैसे कि यह एक ऑन-प्रिमाइसेस सर्वर पर चल रहा हो। इसमें विभिन्न मशीन आकार हो सकते हैं, और SQL Server के संस्करणों और संपादनों का एक विस्तृत चयन हो सकता है।
Key Features
स्वचालित बैकअप: SQL डेटाबेस के लिए बैकअप शेड्यूल करें। स्वचालित पैचिंग: रखरखाव विंडो के दौरान Windows और SQL Server अपडेट की स्थापना को स्वचालित करता है। Azure Key Vault एकीकरण: SQL Server VMs के लिए Key Vault को स्वचालित रूप से कॉन्फ़िगर करता है। Cloud के लिए डिफेंडर एकीकरण: पोर्टल में SQL के लिए डिफेंडर सिफारिशें देखें। संस्करण/संस्करण लचीलापन: VM को फिर से तैनात किए बिना SQL Server संस्करण या संस्करण मेटाडेटा बदलें।
Security Features
Microsoft Defender for SQL: सुरक्षा अंतर्दृष्टि और अलर्ट। Azure Key Vault एकीकरण: क्रेडेंशियल और एन्क्रिप्शन कुंजियों का सुरक्षित भंडारण। Microsoft Entra (Azure AD): प्रमाणीकरण और एक्सेस नियंत्रण।
Enumeration
{{#tabs}} {{#tab name="az cli"}}
# List Servers
az sql server list # --output table
## List Server Usages
az sql server list-usages --name <server_name> --resource-group <resource_group>
## List Server Firewalls
az sql server firewall-rule list --resource-group <resource_group> --server <server_name>
## List of Azure Active Directory administrators in a server.
az sql server ad-admin list --resource-group <resource_group> --server <server_name>
## Gets an advanced threat protection
az sql server advanced-threat-protection-setting show --resource-group <resource_group> --name <server_name>
## Get server's auditing policy.
az sql server audit-policy show --resource-group <resource_group> --name <server_name>
## Gets a server's secure connection policy.
az sql server conn-policy show --resource-group <resource_group> --server <server_name>
## Gets a list of server DNS aliases for a server.
az sql server dns-alias list --resource-group <resource_group> --server <server_name>
## List of server keys.
az sql server key list --resource-group <resource_group> --server <server_name>
## Gets a server encryption protector.
az sql server tde-key show --resource-group <resource_group> --server <server_name>
# List Databases in a SQL server
az sql db list --server <server_name> --resource-group <resource_group> #--output table
## Get details of a specific database
az sql db show --name <database_name> --server <server_name> --resource-group <resource_group>
## List database usages
az sql db list-usages --name <database_name> --server <server_name> --resource-group <resource_group>
## List of operations performed on the database.
az sql db op list --database <database_name> --server <server_name> --resource-group <resource_group>
## List sql database classification
az sql db classification list --name <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention backups for a SQL database
az sql db ltr-backup list --database <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention policy
az sql db ltr-policy --name <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention policy
az sql db str-policy --name <database_name> --server <server_name> --resource-group <resource_group>
## List the replicas of a database and their replication status
az sql db replica list-links --name <database_name> --server <server_name> --resource-group <resource_group>
## List deleted SQL databases
az sql db list-deleted --server <server_name> --resource-group <resource_group>
## List database usages
az sql db list-usages --name <database_name> --server <server_name> --resource-group <resource_group>
## List restorable dropped databases in a SQL server
az sql db list-deleted --server <server_name> --resource-group <resource_group>
## List advanced threat protection setting show
az sql db advanced-threat-protection-setting --name <database_name> --server <server_name> --resource-group <resource_group>
# List all elastic pools in a SQL server
az sql elastic-pool list --server <server_name> --resource-group <resource_group> #--output table
## List all databases in a specific elastic pool
az sql elastic-pool show --name <elastic_pool_name> --server <server_name> --resource-group <resource_group>
## List of databases in an elastic pool.
az sql elastic-pool list-dbs --name <elastic_pool_name> --server <server_name> --resource-group <resource_group>
# List all managed Instances
az sql mi list
az sql mi show --resource-group <res-grp> --name <name>
az sql midb list
az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
{{#endtab}}
{{#tab name="Az PowerShell"}}
# List Servers
Get-AzSqlServer -ResourceGroupName "<resource-group-name>"
# List All Databases in a SQL Server
Get-AzSqlDatabase -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# Get Details of a Specific Database
Get-AzSqlDatabase -Name "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Operations Performed on the Database
Get-AzSqlDatabaseActivity -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List SQL Database Classification
Get-AzSqlDatabaseSensitivityClassification -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Long-Term Retention Backups for a SQL Database
Get-AzSqlDatabaseLongTermRetentionBackup -ResourceGroupName "<resource_group>" -Location "<location>"
# List Replicas of a Database and Their Replication Status
Get-AzSqlDatabaseReplicationLink -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Deleted SQL Databases
Get-AzSqlDeletedDatabaseBackup -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List All Elastic Pools in a SQL Server
Get-AzSqlElasticPool -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List All Databases in a Specific Elastic Pool
Get-AzSqlElasticPoolDatabase -ElasticPoolName "<elastic_pool_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List all managed Instances
Get-AzSqlInstance
Get-AzSqlInstance -ResourceGroupName <ResourceGroupName> -Name <ManagedInstanceName>
# List All Databases in a SQL Managed Instance
Get-AzSqlInstanceDatabase -ResourceGroupName <ResourceGroupName> -InstanceName <ManagedInstanceName>
# Lis all sql VM
Get-AzSqlVM
{{#endtab}} {{#endtabs}}
कनेक्ट करें और SQL क्वेरी चलाएँ
आप एक कनेक्शन स्ट्रिंग (जिसमें क्रेडेंशियल्स शामिल हैं) उदाहरण एक Az WebApp की गणना करना से पा सकते हैं:
function invoke-sql{
param($query)
$Connection_string = "Server=tcp:supercorp.database.windows.net,1433;Initial Catalog=flag;Persist Security Info=False;User ID=db_read;Password=gAegH!324fAG!#1fht;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
$Connection = New-Object System.Data.SqlClient.SqlConnection $Connection_string
$Connection.Open()
$Command = New-Object System.Data.SqlClient.SqlCommand
$Command.Connection = $Connection
$Command.CommandText = $query
$Reader = $Command.ExecuteReader()
while ($Reader.Read()) {
$Reader.GetValue(0)
}
$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 को पहुँचने की अनुमति देता है:
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
संदर्भ
- 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/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
विशेषाधिकार वृद्धि
{{#ref}} ../az-privilege-escalation/az-sql-privesc.md {{#endref}}
पोस्ट एक्सप्लोइटेशन
{{#ref}} ../az-post-exploitation/az-sql-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}