mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']
This commit is contained in:
@@ -4,13 +4,13 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL - це сімейство керованих, безпечних та інтелектуальних продуктів, які використовують **SQL Server database engine в хмарі Azure**. Це означає, що вам не потрібно турбуватися про фізичне адміністрування ваших серверів, і ви можете зосередитися на управлінні вашими даними.
|
||||
Azure SQL - це сімейство керованих, безпечних та інтелектуальних продуктів, які використовують **движок бази даних SQL Server в хмарі Azure**. Це означає, що вам не потрібно турбуватися про фізичне адміністрування ваших серверів, і ви можете зосередитися на управлінні вашими даними.
|
||||
|
||||
Azure SQL складається з чотирьох основних пропозицій:
|
||||
|
||||
1. **Azure SQL Server**: Сервер потрібен для **розгортання та управління** базами даних SQL Server.
|
||||
2. **Azure SQL Database**: Це **повністю керована служба бази даних**, яка дозволяє вам розміщувати окремі бази даних у хмарі Azure.
|
||||
3. **Azure SQL Managed Instance**: Це для розгортань на більших масштабах, що охоплюють всю SQL Server instance.
|
||||
2. **Azure SQL Database**: Це **повністю керована служба бази даних**, яка дозволяє вам розміщувати окремі бази даних в хмарі Azure.
|
||||
3. **Azure SQL Managed Instance**: Це для розгортань на більших масштабах, що охоплюють всю екземпляр SQL Server.
|
||||
4. **Azure SQL Server на Azure VMs**: Це найкраще для архітектур, де ви хочете **контролювати операційну систему** та екземпляр SQL Server.
|
||||
|
||||
### SQL Server Security Features
|
||||
@@ -24,11 +24,11 @@ Azure SQL складається з чотирьох основних пропо
|
||||
|
||||
**Методи аутентифікації:**
|
||||
|
||||
- Аутентифікація **тільки Entra** від Microsoft: Вам потрібно вказати принципали Entra, які матимуть доступ до служби.
|
||||
- Аутентифікація **тільки для Microsoft Entra**: Вам потрібно вказати принципи Entra, які матимуть доступ до служби.
|
||||
- **Аутентифікація як SQL, так і Microsoft Entra**: Традиційна SQL аутентифікація з ім'ям користувача та паролем разом з Microsoft Entra.
|
||||
- **Тільки SQL** аутентифікація: Дозволяє доступ лише через користувачів бази даних.
|
||||
|
||||
Зверніть увагу, що якщо дозволена будь-яка SQL аутентифікація, потрібно вказати адміністративного користувача (ім'я користувача + пароль), а якщо вибрана аутентифікація Entra ID, також потрібно вказати принаймні одного принципала з адміністративним доступом.
|
||||
Зверніть увагу, що якщо дозволена будь-яка SQL аутентифікація, потрібно вказати адміністративного користувача (ім'я користувача + пароль), а якщо вибрана аутентифікація Entra ID, також потрібно вказати принаймні одного принципа з адміністративним доступом.
|
||||
|
||||
**Шифрування:**
|
||||
|
||||
@@ -38,25 +38,51 @@ Azure SQL складається з чотирьох основних пропо
|
||||
|
||||
- Можливо призначити системні та користувацькі керовані MI.
|
||||
- Використовується для доступу до ключа шифрування (якщо використовується CMEK) та інших служб з баз даних.
|
||||
- Якщо призначено більше ніж одну UMI, можливо вказати за замовчуванням, яку використовувати.
|
||||
- Можливо налаштувати федеративну клієнтську ідентичність для доступу між орендарями.
|
||||
- Для деяких прикладів служб Azure, до яких можна отримати доступ з бази даних, перегляньте [цю сторінку документації](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
|
||||
- Якщо призначено більше ніж одну UMI, можливо вказати за замовчуванням ту, що буде використовуватися.
|
||||
- Можливо налаштувати федеративну ідентичність клієнта для доступу між орендарями.
|
||||
|
||||
Деякі команди для доступу до інформації всередині блоб-сховища з бази даних 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:**
|
||||
|
||||
- Корисний для "зменшення потенційних вразливостей бази даних та виявлення аномальних дій".
|
||||
- Ми поговоримо про Defender у власному уроці (його можна активувати в кількох інших службах Azure).
|
||||
- Корисний для “зменшення потенційних вразливостей бази даних та виявлення аномальних активностей”
|
||||
- Ми поговоримо про Defender в окремому уроці (його можна активувати в кількох інших службах Azure)
|
||||
|
||||
**Резервні копії:**
|
||||
- Частота резервного копіювання керується політиками зберігання.
|
||||
|
||||
**Видалені бази даних:**
|
||||
- Можливо відновити бази даних, які були видалені з існуючих резервних копій.
|
||||
- Можливо відновити БД, які були видалені з існуючих резервних копій.
|
||||
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** - це **повністю керована платформа бази даних як служба (PaaS)**, яка надає масштабовані та безпечні рішення реляційних баз даних. Вона побудована на останніх технологіях SQL Server і усуває потребу в управлінні інфраструктурою, що робить її популярним вибором для хмарних додатків.
|
||||
**Azure SQL Database** є **повністю керованою платформою бази даних як послуга (PaaS)**, яка надає масштабовані та безпечні рішення реляційних баз даних. Вона побудована на останніх технологіях SQL Server і усуває потребу в управлінні інфраструктурою, що робить її популярним вибором для хмарних додатків.
|
||||
|
||||
Щоб створити базу даних SQL, потрібно вказати SQL сервер, на якому вона буде розміщена.
|
||||
Щоб створити SQL базу даних, потрібно вказати SQL сервер, на якому вона буде розміщена.
|
||||
|
||||
### SQL Database Security Features
|
||||
|
||||
@@ -64,34 +90,34 @@ Azure SQL складається з чотирьох основних пропо
|
||||
- **Спадкові функції безпеки SQL Server:**
|
||||
- Аутентифікація (SQL та/або Entra ID)
|
||||
- Призначені керовані ідентичності
|
||||
- Обмеження мережі
|
||||
- Мережеві обмеження
|
||||
- Шифрування
|
||||
- Резервні копії
|
||||
- …
|
||||
- **Резервування даних:** Варіанти - локальне, зональне, гео або гео-зональне резервування.
|
||||
- **Леджер:** Він криптографічно перевіряє цілісність даних, забезпечуючи виявлення будь-якого підроблення. Корисно для фінансових, медичних та будь-яких організацій, що управляють чутливими даними.
|
||||
|
||||
База даних SQL може бути частиною **еластичного пулу**. Еластичні пулі є економічно вигідним рішенням для управління кількома базами даних шляхом спільного використання налаштовуваних обчислювальних (eDTUs) та сховищ ресурсів між ними, з цінами, що базуються виключно на виділених ресурсах, а не на кількості баз даних.
|
||||
SQL база даних може бути частиною **еластичного пулу**. Еластичні пулу є економічно вигідним рішенням для управління кількома базами даних шляхом спільного використання налаштовуваних обчислювальних (eDTUs) та сховищ ресурсів між ними, з ціноутворенням, що базується виключно на виділених ресурсах, а не на кількості баз даних.
|
||||
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
**Динамічне** маскування даних Azure SQL - це функція, яка допомагає **захистити чутливу інформацію, приховуючи її** від несанкціонованих користувачів. Замість того, щоб змінювати фактичні дані, вона динамічно маскує відображувані дані, забезпечуючи, щоб чутливі деталі, такі як номери кредитних карток, були приховані.
|
||||
**Динамічне** маскування даних Azure SQL є функцією, яка допомагає **захистити чутливу інформацію, приховуючи її** від несанкціонованих користувачів. Замість зміни фактичних даних, вона динамічно маскує відображувані дані, забезпечуючи, щоб чутливі деталі, такі як номери кредитних карток, були приховані.
|
||||
|
||||
**Динамічне маскування даних** впливає на всіх користувачів, крім тих, хто не підлягає маскуванню (ціх користувачів потрібно вказати) та адміністраторів. Існує опція конфігурації, яка вказує, які SQL користувачі звільнені від динамічного маскування даних, при цьому **адміністратори завжди виключені**.
|
||||
**Динамічне маскування даних** впливає на всіх користувачів, крім тих, хто не підлягає маскуванню (ціх користувачів потрібно вказати) та адміністраторів. Є опція конфігурації, яка вказує, які SQL користувачі звільнені від динамічного маскування даних, при цьому **адміністратори завжди виключені**.
|
||||
|
||||
**Azure SQL Row Level Security (RLS)** - це функція, яка **контролює, які рядки користувач може переглядати або змінювати**, забезпечуючи, щоб кожен користувач бачив лише дані, що стосуються його. Створюючи політики безпеки з фільтрами або блокуючими предикатами, організації можуть забезпечити детальний доступ на рівні бази даних.
|
||||
**Azure SQL Row Level Security (RLS)** є функцією, яка **контролює, які рядки користувач може переглядати або змінювати**, забезпечуючи, щоб кожен користувач бачив лише дані, що стосуються його. Створюючи політики безпеки з фільтрами або блокуючими предикатами, організації можуть забезпечити детальний доступ на рівні бази даних.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instances** призначені для розгортань на більших масштабах, що охоплюють всю SQL Server instance. Вона забезпечує майже 100% сумісність з останнім SQL Server на місцях (Enterprise Edition) Database Engine, що забезпечує рідну реалізацію віртуальної мережі (VNet), яка вирішує загальні проблеми безпеки, та бізнес-модель, вигідну для клієнтів SQL Server на місцях.
|
||||
**Azure SQL Managed Instances** призначені для масштабних, повномасштабних розгортань SQL Server. Вона забезпечує майже 100% сумісність з останнім SQL Server на місцях (Enterprise Edition) Database Engine, що забезпечує рідну реалізацію віртуальної мережі (VNet), яка вирішує поширені проблеми безпеки, та бізнес-модель, вигідну для клієнтів SQL Server на місцях.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines** дозволяє **контролювати операційну систему** та екземпляр SQL Server, оскільки віртуальна машина буде запущена в службі ВМ, що працює на SQL сервері.
|
||||
|
||||
Коли створюється SQL Virtual Machine, можливо **вибрати всі налаштування ВМ** (як показано в уроці ВМ), які будуть розміщувати SQL сервер.
|
||||
- Це означає, що ВМ буде отримувати доступ до деяких VNet(ів), може мати **прикріплені керовані ідентичності**, може мати змонтовані файлові спільноти... що робить **поворот з SQL** на ВМ надзвичайно цікавим.
|
||||
- Більше того, можливо налаштувати ідентифікатор програми та секрет для **дозволу SQL отримувати доступ до конкретного сховища ключів**, яке може містити чутливу інформацію.
|
||||
Коли створюється SQL Virtual Machine, можливо **вибрати всі налаштування ВМ** (як показано в уроці ВМ), які будуть хостити SQL сервер.
|
||||
- Це означає, що ВМ буде отримувати доступ до деяких VNet(ів), може мати **прикріплені керовані ідентичності**, може мати змонтовані файлові спільноти… що робить **поворот з SQL** на ВМ дуже цікавим.
|
||||
- Більше того, можливо налаштувати ідентифікатор програми та секрет для **дозволу SQL доступу до конкретного сховища ключів**, яке може містити чутливу інформацію.
|
||||
|
||||
Також можливо налаштувати такі речі, як **автоматичні оновлення SQL**, **автоматичні резервні копії**, **аутентифікацію Entra ID** та більшість функцій інших служб SQL.
|
||||
|
||||
@@ -232,7 +258,7 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
Додатково, якщо ви хочете перерахувати Динамічне Маскування Даних та Політики Рівня Рядка в базі даних, ви можете виконати запит:
|
||||
Додатково, якщо ви хочете перерахувати Dynamic Data Masking та Row Level policies у базі даних, ви можете виконати запит:
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
@@ -295,7 +321,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-privilege-escalation/az-sql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Постексплуатація
|
||||
## Після експлуатації
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
@@ -304,7 +330,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
### Постійність
|
||||
|
||||
{{#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