# Az - SQL {{#include ../../../banners/hacktricks-training.md}} ## Azure SQL Azure SQL - це сімейство керованих, безпечних та інтелектуальних продуктів, які використовують **SQL Server database engine в хмарі Azure**. Це означає, що вам не потрібно турбуватися про фізичне адміністрування ваших серверів, і ви можете зосередитися на управлінні вашими даними. Azure SQL складається з трьох основних пропозицій: 1. **Azure SQL Database**: Це **повністю керована служба бази даних**, яка дозволяє вам розміщувати окремі бази даних у хмарі Azure. Вона пропонує вбудовану інтелектуальність, яка вивчає ваші унікальні шаблони бази даних і надає індивідуальні рекомендації та автоматичну оптимізацію. 2. **Azure SQL Managed Instance**: Це для масштабних, повних розгортань SQL Server. Вона забезпечує майже 100% сумісність з останнім SQL Server на місцях (Enterprise Edition) Database Engine, що забезпечує рідну реалізацію віртуальної мережі (VNet), яка вирішує загальні проблеми безпеки, і бізнес-модель, вигідну для клієнтів SQL Server на місцях. 3. **Azure SQL Server на Azure VMs**: Це Інфраструктура як Служба (IaaS) і найкраще підходить для міграцій, де ви хочете **контролювати операційну систему та екземпляр SQL Server**, як це було на сервері на місцях. ### Azure SQL Database **Azure SQL Database** - це **повністю керована платформа бази даних як служба (PaaS)**, яка забезпечує масштабовані та безпечні рішення реляційних баз даних. Вона побудована на останніх технологіях SQL Server і усуває необхідність в управлінні інфраструктурою, що робить її популярним вибором для хмарних додатків. #### Основні функції - **Завжди актуально**: Працює на останній стабільній версії SQL Server і автоматично отримує нові функції та патчі. - **Можливості PaaS**: Вбудована висока доступність, резервне копіювання та оновлення. - **Гнучкість даних**: Підтримує реляційні та нереляційні дані (наприклад, графіки, JSON, просторові дані та XML). #### Моделі покупки / Рівні послуг - **vCore-based**: Вибір обчислювальних потужностей, пам'яті та зберігання незалежно. Для загального призначення, бізнес-критичних (з високою стійкістю та продуктивністю для OLTP додатків) і масштабується до 128 ТБ зберігання. - **DTU-based**: Об'єднує обчислювальні потужності, пам'ять та I/O в фіксовані рівні. Збалансовані ресурси для загальних завдань. - Стандартний: Збалансовані ресурси для загальних завдань. - Преміум: Висока продуктивність для вимогливих навантажень. #### Моделі розгортання Azure SQL Database підтримує гнучкі варіанти розгортання для різних потреб: - **Окрема база даних**: - Повністю ізольована база даних з власними виділеними ресурсами. - Чудово підходить для мікросервісів або додатків, які потребують єдиного джерела даних. - **Еластичний пул**: - Дозволяє кільком базам даних ділити ресурси в межах пулу. - Економічно вигідно для додатків з коливаннями в режимі використання через кілька баз даних. #### Масштабована продуктивність і пули - **Окремі бази даних**: Кожна база даних ізольована і має власні виділені ресурси обчислень, пам'яті та зберігання. Ресурси можуть бути масштабовані динамічно (вгору або вниз) без простою (1–128 vCores, 32 ГБ–4 ТБ зберігання та до 128 ТБ). - **Еластичні пули**: Ділять ресурси між кількома базами даних у пулі для максимізації ефективності та економії витрат. Ресурси також можуть бути масштабовані динамічно для всього пулу. - **Гнучкість рівня послуг**: Почніть з невеликої бази даних у рівні загального призначення. Оновіть до бізнес-критичного або гіпермасштабного рівнів, коли потреби зростають. - **Варіанти масштабування**: Динамічне масштабування або альтернативи автоматичного масштабування. #### Вбудоване моніторинг та оптимізація - **Query Store**: Відстежує проблеми з продуктивністю, визначає основних споживачів ресурсів і пропонує практичні рекомендації. - **Автоматична оптимізація**: Проактивно оптимізує продуктивність за допомогою функцій, таких як автоматичне індексування та корекція планів запитів. - **Інтеграція телеметрії**: Підтримує моніторинг через Azure Monitor, Event Hubs або Azure Storage для індивідуальних інсайтів. #### Відновлення після катастроф та доступність - **Автоматичні резервні копії**: SQL Database автоматично виконує повні, диференційні та резервні копії журналу транзакцій бази даних. - **Відновлення до певного моменту**: Відновлює бази даних до будь-якого минулого стану в межах періоду зберігання резервних копій. - **Гео-резервування** - **Групи відмови**: Спрощує відновлення після катастроф, об'єднуючи бази даних для автоматичного переключення між регіонами. ### Azure SQL Managed Instance **Azure SQL Managed Instance** - це платформа як служба (PaaS) бази даних, яка пропонує майже 100% сумісність з SQL Server і автоматично виконує більшість управлінських завдань (наприклад, оновлення, патчинг, резервне копіювання, моніторинг). Вона забезпечує хмарне рішення для міграції баз даних SQL Server на місцях з мінімальними змінами. #### Рівні послуг - **Загальне призначення**: Економічний варіант для додатків зі стандартними вимогами до I/O та затримки. - **Бізнес-критичний**: Високопродуктивний варіант з низькою затримкою I/O для критичних навантажень. #### Розширені функції безпеки * **Захист від загроз**: Розширений захист від загроз сповіщає про підозрілі дії та атаки SQL-ін'єкцій. Аудит для відстеження та реєстрації подій бази даних для відповідності. * **Контроль доступу**: Аутентифікація Microsoft Entra для централізованого управління ідентичністю. Безпека на рівні рядків та динамічне маскування даних для детального контролю доступу. * **Резервні копії**: Автоматизовані та ручні резервні копії з можливістю відновлення до певного моменту. ### Azure SQL Virtual Machines **Azure SQL Virtual Machines** найкраще підходять для міграцій, де ви хочете **контролювати операційну систему та екземпляр SQL Server**, як це було на сервері на місцях. Вони можуть мати різні розміри машин і широкий вибір версій та редакцій SQL Server. #### Основні функції **Автоматизоване резервне копіювання**: Заплануйте резервні копії для SQL баз даних. **Автоматичне патчування**: Автоматизує установку оновлень Windows та SQL Server під час вікна обслуговування. **Інтеграція Azure Key Vault**: Автоматично налаштовує Key Vault для SQL Server VMs. **Інтеграція Defender for Cloud**: Переглядайте рекомендації Defender for SQL у порталі. **Гнучкість версії/редакції**: Змінюйте метадані версії або редакції SQL Server без повторного розгортання VM. #### Функції безпеки **Microsoft Defender for SQL**: Інсайти та сповіщення про безпеку. **Інтеграція Azure Key Vault**: Безпечне зберігання облікових даних та ключів шифрування. **Microsoft Entra (Azure AD)**: Аутентифікація та контроль доступу. ## Enumeration {{#tabs}} {{#tab name="az cli"}} ```bash # List Servers az sql server list # --output table ## List Server Usages az sql server list-usages --name --resource-group ## List Server Firewalls az sql server firewall-rule list --resource-group --server ## List of Azure Active Directory administrators in a server. az sql server ad-admin list --resource-group --server ## Gets an advanced threat protection az sql server advanced-threat-protection-setting show --resource-group --name ## Get server's auditing policy. az sql server audit-policy show --resource-group --name ## Gets a server's secure connection policy. az sql server conn-policy show --resource-group --server ## Gets a list of server DNS aliases for a server. az sql server dns-alias list --resource-group --server ## List of server keys. az sql server key list --resource-group --server ## Gets a server encryption protector. az sql server tde-key show --resource-group --server # List Databases in a SQL server az sql db list --server --resource-group #--output table ## Get details of a specific database az sql db show --name --server --resource-group ## List database usages az sql db list-usages --name --server --resource-group ## List of operations performed on the database. az sql db op list --database --server --resource-group ## List sql database classification az sql db classification list --name --server --resource-group ## List long-term retention backups for a SQL database az sql db ltr-backup list --database --server --resource-group ## List long-term retention policy az sql db ltr-policy --name --server --resource-group ## List long-term retention policy az sql db str-policy --name --server --resource-group ## List the replicas of a database and their replication status az sql db replica list-links --name --server --resource-group ## List deleted SQL databases az sql db list-deleted --server --resource-group ## List database usages az sql db list-usages --name --server --resource-group ## List restorable dropped databases in a SQL server az sql db list-deleted --server --resource-group ## List advanced threat protection setting show az sql db advanced-threat-protection-setting --name --server --resource-group # List all elastic pools in a SQL server az sql elastic-pool list --server --resource-group #--output table ## List all databases in a specific elastic pool az sql elastic-pool show --name --server --resource-group ## List of databases in an elastic pool. az sql elastic-pool list-dbs --name --server --resource-group # List all managed Instances az sql mi list az sql mi show --resource-group --name az sql midb list az sql midb show --resource-group --name # Lis all sql VM az sql vm list az sql vm show --resource-group --name ``` {{#endtab}} {{#tab name="Az PowerShell"}} ```powershell # List Servers Get-AzSqlServer -ResourceGroupName "" # List All Databases in a SQL Server Get-AzSqlDatabase -ServerName "" -ResourceGroupName "" # Get Details of a Specific Database Get-AzSqlDatabase -Name "" -ServerName "" -ResourceGroupName "" # List Operations Performed on the Database Get-AzSqlDatabaseActivity -DatabaseName "" -ServerName "" -ResourceGroupName "" # List SQL Database Classification Get-AzSqlDatabaseSensitivityClassification -DatabaseName "" -ServerName "" -ResourceGroupName "" # List Long-Term Retention Backups for a SQL Database Get-AzSqlDatabaseLongTermRetentionBackup -ResourceGroupName "" -Location "" # List Replicas of a Database and Their Replication Status Get-AzSqlDatabaseReplicationLink -DatabaseName "" -ServerName "" -ResourceGroupName "" # List Deleted SQL Databases Get-AzSqlDeletedDatabaseBackup -ServerName "" -ResourceGroupName "" # List All Elastic Pools in a SQL Server Get-AzSqlElasticPool -ServerName "" -ResourceGroupName "" # List All Databases in a Specific Elastic Pool Get-AzSqlElasticPoolDatabase -ElasticPoolName "" -ServerName "" -ResourceGroupName "" # List all managed Instances Get-AzSqlInstance Get-AzSqlInstance -ResourceGroupName -Name # List All Databases in a SQL Managed Instance Get-AzSqlInstanceDatabase -ResourceGroupName -InstanceName # Lis all sql VM Get-AzSqlVM ``` {{#endtab}} {{#endtabs}} ### Підключення та виконання SQL запитів Ви можете знайти рядок підключення (що містить облікові дані) з прикладу [перерахування Az WebApp](az-app-services.md): ```powershell 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 --resource-group `, а також чи дозволяє правило брандмауера нашій IP-адресі доступ: ```powershell sqlcmd -S .database.windows.net -U -P -d ``` ## Посилання - [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) ## Підвищення привілеїв {{#ref}} ../az-privilege-escalation/az-sql-privesc.md {{#endref}} ## Після експлуатації {{#ref}} ../az-post-exploitation/az-sql-post-exploitation.md {{#endref}} {{#include ../../../banners/hacktricks-training.md}}