Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-20 00:40:14 +00:00
parent 2156b38aaa
commit 45d08a7c55
9 changed files with 269 additions and 167 deletions

View File

@@ -11,7 +11,7 @@
### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри MySQL Flexible Server на Azure. Це включає в себеProvisioning нових серверів, модифікацію існуючих конфігурацій серверів або виведення серверів з експлуатації.
З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри MySQL Flexible Server на Azure. Це включає в себе постачання нових серверів, модифікацію існуючих конфігурацій серверів або виведення серверів з експлуатації.
```bash
az mysql flexible-server create \
--name <ServerName> \
@@ -24,20 +24,30 @@ az mysql flexible-server create \
--tier <PricingTier> \
--version <MySQLVersion>
```
Наприклад, ці дозволи дозволяють змінювати пароль MySQL, що, звичайно, корисно у випадку, якщо автентифікація MySQL увімкнена.
Ці дозволи дозволяють змінювати пароль MySQL, що, звичайно, корисно в разі, якщо автентифікація MySQL увімкнена.
```bash
az mysql flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
З цими дозволами ви можете відновити сервер MySQL з резервної копії:
```bash
az mysql flexible-server restore \
--resource-group <resource_group_name> \
--name <restore_server_name> \
--source-server <server_name> \
--yes
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для MySQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над MySQL сервером. Важливо, щоб flexible-server мав призначені користувачеві керовані ідентичності для використання.
З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для MySQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над MySQL сервером. Важливо, щоб у flexible-server були призначені керовані ідентичності користувача для використання.
```bash
az mysql flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -31,15 +31,61 @@ az postgres flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
Крім того, з правами ви можете активувати призначену ідентичність, працюючи з керованою ідентичністю, прикріпленою до сервера. Тут ви можете знайти всі розширення, які підтримує Azure PostgreSQL flexible server [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Щоб мати можливість використовувати ці розширення, потрібно змінити деякі параметри сервера (azure.extensions). Наприклад, тут з керованою ідентичністю, яка може отримати доступ до Azure Storage:
Спочатку ми змінюємо параметри і переконуємося, що призначена ідентичність активована:
```bash
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
```
```sql
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
```
Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
З цими дозволами ви можете відновити сервер з резервної копії за допомогою:
```bash
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для PostgreSQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над сервером PostgreSQL. Оновлення існуючого принципала поки що не підтримується, тому, якщо він вже створений, ви повинні спочатку видалити його.
З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для PostgreSQL Flexible Server. Це можна використати, встановивши себе або інший обліковий запис як адміністратора AD, що надає повний адміністративний контроль над сервером PostgreSQL. Оновлення існуючого принципала поки що не підтримується, тому, якщо він вже створений, ви повинні спочатку видалити його.
Важливо, щоб flexible-server мав призначені користувачеві керовані ідентичності для використання.
Важливо, щоб у flexible-server були призначені керовані ідентичності для використання.
```bash
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -12,7 +12,7 @@
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним в середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть експлуатувати SQL-автентифікацію для отримання необмеженого доступу.
З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним в середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть використовувати SQL-автентифікацію для отримання необмеженого доступу.
```bash
# Change the server password
az sql server update \
@@ -28,7 +28,7 @@ az sql server create \
--admin-user <admin_username> \
--admin-password <admin_passwor d>
```
Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:
Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватної точки доступу, щоб увімкнути це:
```bash
az sql server update \
--name <server-name> \
@@ -44,6 +44,11 @@ az sql server update \
```
```sql
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
@@ -85,7 +90,7 @@ az sql server firewall-rule update \
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
З цим дозволом ви можете створювати, змінювати або видаляти правила брандмауера IPv6 на Azure SQL Server. Це може дозволити зловмиснику або уповноваженому користувачу обійти існуючі конфігурації мережевої безпеки та отримати несанкціонований доступ до сервера. Додавши правило, яке дозволяє трафік з будь-якої IPv6 адреси, зловмисник може відкрити сервер для зовнішнього доступу.
З цим дозволом ви можете створювати, змінювати або видаляти правила брандмауера IPv6 на Azure SQL Server. Це може дозволити зловмиснику або авторизованому користувачу обійти існуючі конфігурації мережевої безпеки та отримати несанкціонований доступ до сервера. Додавши правило, яке дозволяє трафік з будь-якої IPv6 адреси, зловмисник може відкрити сервер для зовнішнього доступу.
```bash
az sql server firewall-rule create \
--server <server_name> \
@@ -99,7 +104,7 @@ az sql server firewall-rule create \
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо "Microsoft Entra Authentication Only" увімкнено, ви зможете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера:
З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо увімкнено "Microsoft Entra Authentication Only", ви зможете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера:
```bash
az sql server ad-admin create \
--server <server_name> \
@@ -109,7 +114,7 @@ az sql server ad-admin create \
```
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
З цими дозволами ви можете налаштувати та забезпечити "Тільки автентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути автентифікацію лише для Azure AD.
З цими дозволами ви можете налаштувати та впровадити "Тільки аутентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути аутентифікацію лише через Azure AD.
```bash
#Enable
az sql server azure-ad-only-auth enable \
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
```
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Змініть (або вимкніть) політики маскування даних у ваших SQL базах даних.
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
```
### Видалити безпеку на рівні рядків
Якщо ви увійшли як адміністратор, ви можете видалити політики самого адміністратора та інших користувачів.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,16 @@
## Azure CosmosDB
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка пропонує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона забезпечує швидшу розробку додатків завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
Azure Cosmos DB надає кілька API бази даних для моделювання реальних даних, використовуючи документи, реляційні, ключ-значення, графові та колонові моделі даних, серед яких NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin та Table.
Одним з ключових аспектів CosmosDB є Azure Cosmos Account. **Azure Cosmos Account** є точкою входу до баз даних. Обліковий запис визначає ключові налаштування, такі як глобальний розподіл, рівні узгодженості та конкретний API, який буде використовуватися, наприклад, NoSQL. Через обліковий запис ви можете налаштувати глобальну реплікацію, щоб забезпечити доступність даних у кількох регіонах для доступу з низькою затримкою. Крім того, ви можете вибрати рівень узгодженості, який балансує між продуктивністю та точністю даних, з варіантами від сильної до остаточної узгодженості.
### NoSQL (sql)
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів до об'єктів JSON, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу сервісу:
Azure Cosmos DB підтримує **призначені користувачем ідентичності** та **системно призначені керовані ідентичності**, які автоматично створюються та пов'язані з життєвим циклом ресурсу, що дозволяє безпечну аутентифікацію на основі токенів при підключенні до інших служб — за умови, що ці служби мають відповідні призначення ролей. Однак Cosmos DB не має вбудованого механізму для безпосереднього запиту зовнішніх джерел даних, таких як Azure Blob Storage. На відміну від функцій зовнішніх таблиць SQL Server, Cosmos DB вимагає, щоб дані були імпортовані в його контейнери за допомогою зовнішніх інструментів, таких як Azure Data Factory, інструмент міграції даних або користувацькі скрипти, перш ніж їх можна буде запитувати за допомогою його рідних можливостей запиту.
### NoSQL
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів JSON-об'єктів, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу служби:
```bash
https://<Account-Name>.documents.azure.com:443/
```
@@ -19,7 +21,13 @@ https://<Account-Name>.documents.azure.com:443/
У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів.
#### Контейнери
Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запитування. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу.
Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запиту. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу.
#### Ключові особливості
**Глобальне розподілення**: Увімкніть або вимкніть гео-резервування для міжрегіональної реплікації та багаторегіональних записів для покращення доступності.
**Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Обмін ресурсами між джерелами) для контрольованого доступу до ресурсів.
**Резервне копіювання та відновлення**: з періодичних, безперервних (7 днів) або безперервних (30 днів) політик резервного копіювання з налаштовуваними інтервалами та зберіганням.
**Шифрування даних**: Ключі, що керуються за замовчуванням, або ключі, що керуються клієнтом (CMK) для шифрування (вибір CMK є незворотним).
#### Перерахування
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
## List the NoSQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
## List all NoSQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
## List all NoSQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
## List the NoSQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
@@ -175,7 +183,7 @@ container.create_item(item)
print("Document inserted.")
```
### MongoDB
API MongoDB NoSQL є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат:
MongoDB NoSQL API є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат:
```bash
mongodb://<hostname>:<port>/<database>
```
@@ -183,7 +191,18 @@ mongodb://<hostname>:<port>/<database>
У MongoDB ви можете створити одну або кілька баз даних в межах екземпляра. Кожна база даних слугує логічною групою колекцій і забезпечує межу для організації та управління ресурсами. Бази даних допомагають логічно розділяти та управляти даними, наприклад, для різних додатків або проектів.
#### Колекції
Основною одиницею зберігання даних у MongoDB є колекція, яка містить документи і призначена для ефективного запитування та гнучкого проектування схеми. Колекції еластично масштабуються і можуть підтримувати операції з високою пропускною здатністю на кількох вузлах у розподіленій конфігурації.
Основною одиницею зберігання даних у MongoDB є колекція, яка містить документи і призначена для ефективного запитування та гнучкого проектування схеми. Колекції еластично масштабуються і можуть підтримувати операції з високою пропускною здатністю на кількох вузлах у розподіленій системі.
#### Ключові особливості типу Request unit (RU)
**Глобальне розповсюдження**: Увімкніть або вимкніть гео-резервування для міжрегіональної реплікації та багаторегіональних записів для покращення доступності.
**Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Cross-Origin Resource Sharing) для контрольованого доступу до ресурсів.
**Резервне копіювання та відновлення**: з періодичних, безперервних (7 днів, безкоштовно) або безперервних (30 днів, платно) політик резервного копіювання з налаштовуваними інтервалами та збереженням.
**Шифрування даних**: Ключі, що керуються за замовчуванням, або ключі, що керуються клієнтом (CMK) для шифрування (вибір CMK є незворотним).
#### Ключові особливості типу vCore кластеру
**Глобальне розповсюдження**: Увімкніть репліку для читання в іншому регіоні Azure для високої доступності та підтримки аварійного переключення. Налаштуйте ім'я репліки, регіон і зберігання на шард.
**Мережа та безпека**: Підтримує публічний доступ з призначеними публічними IP-адресами та приватний доступ. Обмежте з'єднання за допомогою правил брандмауера — за замовчуванням публічні IP-адреси не дозволені.
**Зашифровані з'єднання**: Зобов'язує використовувати шифрування TLS для безпечної передачі даних.
#### Перерахування
@@ -300,7 +319,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
../az-privilege-escalation/az-cosmosDB-privesc.md
{{#endref}}
## Постексплуатація
## Після експлуатації
{{#ref}}
../az-post-exploitation/az-sql-post-exploitation.md
@@ -309,7 +328,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
## ToDo
* Решта БД тут, таблиці, cassandra, gremlin...
* Ознайомтеся з постексплуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв
* Ознайомтеся з пост-експлуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв
* Ознайомтеся з відновленнями

View File

@@ -4,14 +4,19 @@
## Основна інформація
Azure Logic Apps - це хмарний сервіс, наданий Microsoft Azure, який дозволяє розробникам **створювати та виконувати робочі процеси, що інтегрують різні сервіси**, джерела даних та додатки. Ці робочі процеси призначені для **автоматизації бізнес-процесів**, оркестрації завдань та виконання інтеграцій даних між різними платформами.
Azure Logic Apps - це хмарний сервіс, наданий Microsoft Azure, який дозволяє розробникам **створювати та виконувати робочі процеси, що інтегрують різні сервіси**, джерела даних та програми. Ці робочі процеси призначені для **автоматизації бізнес-процесів**, оркестрації завдань та виконання інтеграцій даних між різними платформами.
Logic Apps надає візуальний дизайнер для створення робочих процесів з **широким спектром готових конекторів**, що спрощує підключення та взаємодію з різними сервісами, такими як Office 365, Dynamics CRM, Salesforce та багатьма іншими. Ви також можете створювати власні конектори для своїх специфічних потреб.
При створенні Logic App ви повинні або створити, або зв'язати зовнішній обліковий запис зберігання, який зберігає стан робочого процесу, історію виконання та артефакти. Це зберігання можна налаштувати з діагностичними налаштуваннями для моніторингу та можна захистити обмеженнями доступу до мережі або інтегрувати в віртуальну мережу для контролю вхідного та вихідного трафіку.
### Керовані ідентичності
Logic Apps має **системно призначену керовану ідентичність**, пов'язану з її життєвим циклом. Коли вона активована, вона отримує унікальний об'єкт (принципал) ID, який можна використовувати з Azure RBAC для надання необхідних дозволів для безпечного доступу до інших сервісів Azure. Це усуває необхідність зберігати облікові дані в коді, оскільки ідентичність аутентифікується через Microsoft Entra ID. Крім того, ви також можете використовувати **ідентичності, призначені користувачем**, які можуть бути спільними для кількох ресурсів. Ці ідентичності дозволяють робочим процесам та Logic Apps безпечно взаємодіяти з зовнішніми системами, забезпечуючи централізоване управління необхідними контролями доступу та дозволами через безпекову структуру Azure.
### Приклади
- **Автоматизація даних**: Logic Apps може автоматизувати **процеси передачі та перетворення даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та перетворюють дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
- **Інтеграція з Azure Functions**: Logic Apps може працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безперешкодно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані.
- **Автоматизація даних**: Logic Apps можуть автоматизувати **процеси передачі та перетворення даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та перетворюють дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
- **Інтеграція з Azure Functions**: Logic Apps можуть працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безшовно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані.
### Візуалізація LogicAPP
@@ -19,29 +24,33 @@ Logic Apps надає візуальний дизайнер для створе
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
або перевірити код у розділі "**Перегляд коду логічного додатку**".
або перевірити код у розділі "**Перегляд коду Logic app**".
### Захист від SSRF
Навіть якщо ви знайдете **Logic App вразливим до SSRF**, ви не зможете отримати доступ до облікових даних з метаданих, оскільки Logic Apps цього не дозволяє.
Навіть якщо ви знайдете **Logic App вразливим до SSRF**, ви не зможете отримати облікові дані з метаданих, оскільки Logic Apps цього не дозволяє.
Наприклад, щось на кшталт цього не поверне токен:
```bash
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
```
### Hosting options
### Варіанти хостингу
Є кілька варіантів хостингу:
Існує кілька варіантів хостингу:
* **Consumption**
- **Multi-tenant**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень.
* **Standard**
- **Workflow Service Plan**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягнення плати за кожен екземпляр плану служби робочого процесу. Це підходить для більш вимогливих навантажень, які потребують більшого контролю.
- **App Service Environment V3** виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів App Service в середовищі. Це ідеально підходить для корпоративних додатків, які потребують високої ізоляції.
- **Hybrid** розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA).
* **Споживання**
- **Багатоорендний**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень.
* **Стандартний**
- **План служби робочого процесу**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягнення плати за екземпляр плану служби робочого процесу. Він підходить для більш вимогливих навантажень, які потребують більшого контролю.
- **Середовище служби додатків V3**: виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів служби додатків у середовищі. Це ідеально підходить для корпоративних додатків, які потребують високої ізоляції.
- **Гібридний**: розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA).
### Enumeration
### Робочі процеси
Робочі процеси в Azure Logic Apps є основними автоматизованими процесами, які координують дії між різними службами. Робочий процес починається з тригера — події або розкладу — а потім виконує серію дій, таких як виклик API, обробка даних або взаємодія з іншими службами Azure. Робочі процеси можна визначати візуально за допомогою конструктора або через код (визначення JSON) і керувати ними за допомогою команд, таких як az logic workflow create, az logic workflow show та az logic workflow update. Вони також підтримують управління ідентичністю (через підгрупу ідентичності) для безпечного управління дозволами та інтеграціями з зовнішніми ресурсами.
### Перерахування
{{#tabs }}
{{#tab name="az cli" }}
@@ -138,7 +147,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtabs }}
### Інтеграційні облікові записи
**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, забезпечуючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps:
**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, надаючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps:
* Схеми: Управління XML-схемами для валідації та обробки повідомлень у вашому інтеграційному обліковому записі.
* Карти: Налаштування трансформацій на основі XSLT для перетворення форматів даних у ваших інтеграційних робочих процесах.
@@ -251,7 +260,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
## Підвищення Привілеїв
Те ж саме, що і privesc логічних додатків:
Те ж саме, що і підвищення привілеїв логічних додатків:
{{#ref}}
../az-privilege-escalation/az-logic-apps-privesc.md

View File

@@ -3,23 +3,23 @@
{{#include ../../../banners/hacktricks-training.md}}
## Azure MySQL
Azure Database for MySQL є повністю керованою реляційною базою даних, заснованою на MySQL Community Edition, розробленою для забезпечення масштабованості, безпеки та гнучкості для різних потреб додатків. Вона має дві різні моделі розгортання:
Azure Database for MySQL є повністю керованою реляційною базою даних, заснованою на MySQL Community Edition, розробленою для забезпечення масштабованості, безпеки та гнучкості для різних потреб застосунків. Вона має дві різні моделі розгортання:
* **Single Server** (перебуває на шляху до закриття):
- Оптимізовано для економічних та легких у керуванні розгортань MySQL.
- До складу входять автоматизовані резервні копії, висока доступність та базове моніторинг.
- Ідеально підходить для додатків з передбачуваними навантаженнями.
- Ідеально підходить для застосунків з передбачуваними навантаженнями.
* **Flexible Server**:
- Забезпечує більше контролю над управлінням базами даних та конфігурацією.
- Підтримує високу доступність (в одній зоні та зони-резерву).
- Надає більше контролю над управлінням базами даних та конфігурацією.
- Підтримує високу доступність (в одній зоні та зони-резервні).
- Має еластичне масштабування, управління патчами та оптимізацію навантаження.
- Пропонує функціональність зупинки/запуску для економії витрат.
### Key Features
* **Server Management**: Функція **ad-admin** дозволяє керувати адміністраторами Azure Active Directory (AAD) для серверів MySQL, забезпечуючи контроль над адміністративним доступом через облікові дані AAD, тоді як функція **identity** дозволяє призначати та керувати Azure Managed Identities, пропонуючи безпечну аутентифікацію без облікових даних для доступу до ресурсів Azure.
* **Server Management**: Функція **ad-admin** дозволяє керувати адміністраторами Azure Entra ID для MySQL серверів, забезпечуючи контроль над адміністративним доступом через облікові дані Entra ID. Mysql підтримує User Managed Identities, які використовуються для автентифікації без необхідності в облікових даних, і можуть використовуватися іншими службами.
* **Lifecycle Management**: опції для запуску або зупинки сервера, видалення екземпляра гнучкого сервера, перезавантаження сервера для швидкого застосування змін конфігурації та очікування, щоб переконатися, що сервер відповідає певним умовам перед продовженням автоматизаційних скриптів.
* **Security and Networking**: може керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби.
* **Data Protection and Backup**: включає опції для управління резервними копіями гнучкого сервера для відновлення даних, виконання гео-відновлення для відновлення сервера в іншому регіоні, експорту резервних копій сервера для зовнішнього використання (в Preview) та відновлення сервера з резервної копії до певного моменту часу.
* **Security and Networking**: Захистіть свій сервер, обмеживши з'єднання через правила брандмауера, які дозволяють лише певні публічні IP-адреси, або використовуючи приватні кінцеві точки, які інтегрують ваш сервер у віртуальну мережу. Усі з'єднання захищені шифруванням TLS 1.2. Бази даних, резервні копії та журнали за замовчуванням шифруються в спокої за допомогою ключів, керованих службою, або користувацьких ключів.
* **Data Protection and Backup**: включає опції для управління резервними копіями гнучкого сервера для відновлення даних, виконання гео-відновлення для відновлення сервера в іншому регіоні, експорту резервних копій сервера для зовнішнього використання (в попередньому перегляді) та відновлення сервера з резервної копії до певного моменту часу.
### Enumeration
@@ -97,7 +97,7 @@ Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerNam
### З'єднання
За допомогою розширення rdbms-connect ви можете отримати доступ до бази даних за допомогою:
З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою:
```bash
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive

View File

@@ -3,7 +3,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Azure PostgreSQL
**Azure Database for PostgreSQL** є повністю керованою **реляційною базою даних на основі PostgreSQL** Community Edition. Вона розроблена для забезпечення масштабованості, безпеки та гнучкості для різноманітних потреб додатків. Подібно до Azure MySQL, PostgreSQL пропонує дві моделі розгортання:
**Azure Database for PostgreSQL** є повністю керованою **реляційною базою даних, заснованою на PostgreSQL** Community Edition. Вона розроблена для забезпечення масштабованості, безпеки та гнучкості для різноманітних потреб додатків. Подібно до Azure MySQL, PostgreSQL пропонує дві моделі розгортання:
* **Single Server** (на етапі виведення з експлуатації):
- Оптимізовано для простих, економічних розгортань PostgreSQL.
@@ -18,11 +18,12 @@
### Key Features
* **Custom Maintenance Windows**: Заплануйте оновлення, щоб мінімізувати перерви.
* **Active Monitoring**: Доступ до детальних метрик та журналів для відстеження та покращення продуктивності бази даних.
* **Active Monitoring**: Отримуйте детальні метрики та журнали для відстеження та покращення продуктивності бази даних.
* **Stop/Start Server**: Користувачі можуть зупиняти та запускати сервер.
* **Automatic Backups**: Вбудовані щоденні резервні копії з періодами зберігання, які можна налаштувати до 35 днів.
* **Role-Based Access**: Контролюйте дозволи користувачів та адміністративний доступ через Azure Active Directory.
* **Security and Networking**: можна керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби.
* **Managed Identities**: дозволяють вашому серверу безпечно автентифікуватися з іншими службами Azure без зберігання облікових даних. Це дозволяє отримувати доступ до інших служб, які матимуть системно призначену керовану ідентичність і можуть бути доступні іншими службами з іншими ідентичностями, які є користувацькими призначеними керованими ідентичностями.
### Enumeration
@@ -93,7 +94,7 @@ Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
### З'єднання
За допомогою розширення rdbms-connect ви можете отримати доступ до бази даних за допомогою:
З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою:
```bash
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
@@ -110,25 +111,25 @@ az postgres flexible-server execute \
```bash
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
```
## Посилання
## References
- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
## Підвищення привілеїв
## Підвищення Привілеїв
{{#ref}}
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}
## Після експлуатації
## Постексплуатація
{{#ref}}
../az-post-exploitation/az-postgresql-post-exploitation.md
{{#endref}}
## Завдання
## ToDo
* Знайти спосіб доступу з ad-admin, щоб перевірити, чи це метод підвищення привілеїв

View File

@@ -4,150 +4,98 @@
## Azure SQL
Azure SQL - це сімейство керованих, безпечних та інтелектуальних продуктів, які використовують **движок бази даних SQL Server в хмарі Azure**. Це означає, що вам не потрібно турбуватися про фізичне адміністрування ваших серверів, і ви можете зосередитися на управлінні вашими даними.
Azure SQL - це сімейство керованих, безпечних та інтелектуальних продуктів, які використовують **SQL Server database engine в хмарі Azure**. Це означає, що вам не потрібно турбуватися про фізичне адміністрування ваших серверів, і ви можете зосередитися на управлінні вашими даними.
Azure SQL складається з чотирьох основних пропозицій:
1. **Azure SQL Server**: Azure SQL Server - це керована служба реляційних баз даних, яка спрощує розгортання та управління базами даних SQL Server, з вбудованими функціями безпеки та продуктивності.
2. **Azure SQL Database**: Це **повністю керована служба бази даних**, яка дозволяє вам розміщувати окремі бази даних в хмарі Azure. Вона пропонує вбудовану інтелектуальність, яка вивчає ваші унікальні шаблони бази даних і надає індивідуальні рекомендації та автоматичну оптимізацію.
3. **Azure SQL Managed Instance**: Це для масштабних, повних розгортань SQL Server. Вона забезпечує майже 100% сумісність з останнім SQL Server на місцях (Enterprise Edition) Database Engine, що забезпечує рідну реалізацію віртуальної мережі (VNet), яка вирішує загальні проблеми безпеки, і бізнес-модель, вигідну для клієнтів SQL Server на місцях.
4. **Azure SQL Server на Azure VMs**: Це Інфраструктура як Служба (IaaS) і найкраще підходить для міграцій, де ви хочете **контролювати операційну систему та екземпляр SQL Server**, як це було на сервері, що працює на місцях.
1. **Azure SQL Server**: Сервер потрібен для **розгортання та управління** базами даних SQL Server.
2. **Azure SQL Database**: Це **повністю керована служба бази даних**, яка дозволяє вам розміщувати окремі бази даних у хмарі Azure.
3. **Azure SQL Managed Instance**: Це для розгортань на більших масштабах, що охоплюють всю SQL Server instance.
4. **Azure SQL Server на Azure VMs**: Це найкраще для архітектур, де ви хочете **контролювати операційну систему** та екземпляр SQL Server.
### Azure SQL Server
### SQL Server Security Features
Azure SQL Server - це система управління реляційними базами даних (RDBMS), яка використовує Transact-SQL для операцій з даними і побудована для обробки систем рівня підприємства. Вона пропонує потужні функції для продуктивності, безпеки, масштабованості та інтеграції з різними додатками Microsoft. Бази даних Azure SQL покладаються на цей сервер, оскільки вони побудовані на цих серверах, і це точка входу для користувачів для доступу до баз даних.
**Доступ до мережі:**
#### Мережа
- Публічний кінцевий пункт (можна обмежити доступ до конкретних мереж).
- Приватні кінцеві пункти.
- Також можливо обмежити з'єднання на основі доменних імен.
- Також можливо дозволити службам Azure отримувати доступ (наприклад, для використання редактора запитів у порталі або для дозволу підключення Azure VM).
**Мережева підключеність**: Виберіть, чи дозволити доступ через публічний кінець або приватний кінець. Якщо ви виберете Немає доступу, жодні кінцеві точки не створюються, поки не буде налаштовано вручну:
- Немає доступу: Жодні кінцеві точки не налаштовані, блокуючи вхідні з'єднання, поки не буде налаштовано вручну.
- Публічний кінець: Дозволяє прямі з'єднання через публічний інтернет, підлягаючи правилам брандмауера та іншим конфігураціям безпеки.
- Приватний кінець: Обмежує підключення до приватної мережі.
**Методи аутентифікації:**
**Політика підключення**: Визначте, як клієнти спілкуються з сервером бази даних SQL:
- За замовчуванням: Використовує політику перенаправлення для всіх з'єднань клієнтів зсередини Azure (за винятком тих, що використовують приватні кінцеві точки) і політику проксі для з'єднань ззовні Azure.
- Проксі: Направляє всі з'єднання клієнтів через шлюз Azure SQL Database.
- Перенаправлення: Клієнти підключаються безпосередньо до вузла, що хостить базу даних.
- Аутентифікація **тільки Entra** від Microsoft: Вам потрібно вказати принципали Entra, які матимуть доступ до служби.
- **Аутентифікація як SQL, так і Microsoft Entra**: Традиційна SQL аутентифікація з ім'ям користувача та паролем разом з Microsoft Entra.
- **Тільки SQL** аутентифікація: Дозволяє доступ лише через користувачів бази даних.
#### Методи аутентифікації
Azure SQL підтримує різні методи аутентифікації для забезпечення доступу до бази даних:
Зверніть увагу, що якщо дозволена будь-яка SQL аутентифікація, потрібно вказати адміністративного користувача (ім'я користувача + пароль), а якщо вибрана аутентифікація Entra ID, також потрібно вказати принаймні одного принципала з адміністративним доступом.
- **Аутентифікація лише Microsoft Entra**: Використовує Microsoft Entra (раніше Azure AD) для централізованого управління ідентичністю та єдиного входу.
- **Аутентифікація SQL та Microsoft Entra**: Дозволяє використовувати традиційну аутентифікацію SQL разом з Microsoft Entra.
- **Аутентифікація SQL**: Покладається виключно на імена користувачів та паролі SQL Server.
**Шифрування:**
#### Функції безпеки
- Це називається "Прозоре шифрування даних" і шифрує бази даних, резервні копії та журнали в спокої.
- Як завжди, за замовчуванням використовується керований ключ Azure, але також може бути використаний ключ шифрування, керований клієнтом (CMEK).
**Керовані ідентичності:**
SQL сервери мають **Керовані Ідентичності**. Керовані ідентичності дозволяють вашому серверу безпечно аутентифікуватися з іншими службами Azure без зберігання облікових даних. Це дозволяє отримувати доступ до інших служб, які будуть системно призначеними керованими ідентичностями, і бути доступними іншими службами з іншими ідентичностями, які є користувацькими призначеними керованими ідентичностями. Деякі з служб, до яких SQL може отримати доступ, це Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB або Cosmos DB API для MongoDB, Generic ODBC, Bulk Operations та S3-сумісне об'єктне сховище.
- Можливо призначити системні та користувацькі керовані MI.
- Використовується для доступу до ключа шифрування (якщо використовується CMEK) та інших служб з баз даних.
- Якщо призначено більше ніж одну UMI, можливо вказати за замовчуванням, яку використовувати.
- Можливо налаштувати федеративну клієнтську ідентичність для доступу між орендарями.
Інші функції безпеки, які має SQL сервер, це:
**Microsoft Defender:**
- **Правила брандмауера**: Правила брандмауера контролюють доступ до вашого сервера, обмежуючи або дозволяючи трафік. Це також є функцією самих баз даних.
- **Прозоре шифрування даних (TDE)**: TDE шифрує ваші бази даних, резервні копії та журнали в спокої, щоб захистити ваші дані, навіть якщо сховище скомпрометоване. Це може бути зроблено за допомогою ключа, керованого службою, або ключа, керованого клієнтом.
- **Microsoft Defender для SQL**: Microsoft Defender для SQL може бути активований, пропонуючи оцінки вразливостей та розширений захист від загроз для сервера.
- Корисний для "зменшення потенційних вразливостей бази даних та виявлення аномальних дій".
- Ми поговоримо про Defender у власному уроці (його можна активувати в кількох інших службах Azure).
#### Моделі розгортання
**Резервні копії:**
- Частота резервного копіювання керується політиками зберігання.
Azure SQL Database підтримує гнучкі варіанти розгортання для різних потреб:
**Видалені бази даних:**
- Можливо відновити бази даних, які були видалені з існуючих резервних копій.
- **Одна база даних**:
- Повністю ізольована база даних з власними виділеними ресурсами.
- Чудово підходить для мікросервісів або додатків, які потребують єдиного джерела даних.
- **Еластичний пул**:
- Дозволяє кільком базам даних ділитися ресурсами в межах пулу.
- Економічно вигідно для додатків з коливаннями в патернах використання серед кількох баз даних.
### Azure SQL Database
## Azure SQL Database
**Azure SQL Database** - це **повністю керована платформа бази даних як служба (PaaS)**, яка надає масштабовані та безпечні рішення реляційних баз даних. Вона побудована на останніх технологіях SQL Server і усуває потребу в управлінні інфраструктурою, що робить її популярним вибором для хмарних додатків.
#### Ключові функції
Щоб створити базу даних SQL, потрібно вказати SQL сервер, на якому вона буде розміщена.
### SQL Database Security Features
- **Завжди актуальна**: Працює на останній стабільній версії SQL Server і автоматично отримує нові функції та патчі.
- **Можливості PaaS**: Вбудована висока доступність, резервні копії та оновлення.
- **Гнучкість даних**: Підтримує реляційні та нереляційні дані (наприклад, графіки, JSON, просторові дані та XML).
- **Спадкові функції безпеки SQL Server:**
- Аутентифікація (SQL та/або Entra ID)
- Призначені керовані ідентичності
- Обмеження мережі
- Шифрування
- Резервні копії
-
- **Резервування даних:** Варіанти - локальне, зональне, гео або гео-зональне резервування.
- **Леджер:** Він криптографічно перевіряє цілісність даних, забезпечуючи виявлення будь-якого підроблення. Корисно для фінансових, медичних та будь-яких організацій, що управляють чутливими даними.
#### Мережа
База даних SQL може бути частиною **еластичного пулу**. Еластичні пулі є економічно вигідним рішенням для управління кількома базами даних, ділячи налаштовувані обчислювальні (eDTUs) та сховищні ресурси між ними, з цінами, що базуються виключно на виділених ресурсах, а не на кількості баз даних.
**Мережева підключеність**: Виберіть, чи дозволити доступ через публічний кінець або приватний кінець. Якщо ви виберете Немає доступу, жодні кінцеві точки не створюються, поки не буде налаштовано вручну:
- Немає доступу: Жодні кінцеві точки не налаштовані, блокуючи вхідні з'єднання, поки не буде налаштовано вручну.
- Публічний кінець: Дозволяє прямі з'єднання через публічний інтернет, підлягаючи правилам брандмауера та іншим конфігураціям безпеки.
- Приватний кінець: Обмежує підключення до приватної мережі.
#### Azure SQL Column Level Security (Masking) & Row Level Security
**Політика підключення**: Визначте, як клієнти спілкуються з сервером бази даних SQL:
- За замовчуванням: Використовує політику перенаправлення для всіх з'єднань клієнтів зсередини Azure (за винятком тих, що використовують приватні кінцеві точки) і політику проксі для з'єднань ззовні Azure.
- Проксі: Направляє всі з'єднання клієнтів через шлюз Azure SQL Database.
- Перенаправлення: Клієнти підключаються безпосередньо до вузла, що хостить базу даних.
**Динамічне** маскування даних Azure SQL - це функція, яка допомагає **захистити чутливу інформацію, приховуючи її** від несанкціонованих користувачів. Замість того, щоб змінювати фактичні дані, вона динамічно маскує відображувані дані, забезпечуючи, щоб чутливі деталі, такі як номери кредитних карток, були приховані.
#### Функції безпеки
**Динамічне маскування даних** впливає на всіх користувачів, крім тих, хто не підлягає маскуванню (ціх користувачів потрібно вказати) та адміністраторів. Має конфігураційний параметр, який вказує, які SQL користувачі звільнені від динамічного маскування даних, з **адміністраторами завжди виключеними**.
- **Microsoft Defender для SQL**: може бути активований, пропонуючи оцінки вразливостей та розширений захист від загроз.
- **Леджер**: криптографічно перевіряє цілісність даних, забезпечуючи виявлення будь-якого підроблення.
- **Ідентичність сервера**: використовує системно призначені та користувацькі призначені керовані ідентичності для забезпечення централізованого доступу.
- **Управління ключами прозорого шифрування даних**: шифрує бази даних, резервні копії та журнали в спокої без необхідності вносити зміни до програми. Шифрування може бути активоване на кожній базі даних, і якщо налаштовано на рівні бази даних, ці налаштування переважають конфігурацію на рівні сервера.
- **Завжди зашифровано**: це набір розширених функцій захисту даних, які відокремлюють володіння даними від управління даними. Це забезпечує, що адміністратори або оператори з високими привілеями не можуть отримати доступ до чутливих даних.
#### Моделі покупки / Тарифи на послуги
- **На основі vCore**: Виберіть обчислення, пам'ять і зберігання незалежно. Для загального призначення, бізнес-критичних (з високою стійкістю та продуктивністю для OLTP додатків) і масштабується до 128 ТБ зберігання.
- **На основі DTU**: Об'єднує обчислення, пам'ять і I/O в фіксовані тарифи. Збалансовані ресурси для загальних завдань.
- Стандартний: Збалансовані ресурси для загальних завдань.
- Преміум: Висока продуктивність для вимогливих навантажень.
#### Масштабована продуктивність і пули
- **Одині бази даних**: Кожна база даних ізольована і має свої власні виділені ресурси обчислення, пам'яті та зберігання. Ресурси можуть бути масштабовані динамічно (вгору або вниз) без простою (1128 vCores, 32 ГБ4 ТБ зберігання та до 128 ТБ).
- **Еластичні пули**: Ділять ресурси між кількома базами даних у пулі для максимізації ефективності та економії витрат. Ресурси також можуть бути масштабовані динамічно для всього пулу.
- **Гнучкість тарифного плану**: Почніть з невеликої бази даних у тарифному плані загального призначення. Оновіть до бізнес-критичних або гіпермасштабних тарифів, коли потреби зростають.
- **Варіанти масштабування**: Динамічне масштабування або альтернативи автоматичного масштабування.
#### Вбудоване моніторинг та оптимізація
- **Сховище запитів**: Відстежує проблеми продуктивності, визначає основних споживачів ресурсів і пропонує практичні рекомендації.
- **Автоматичне налаштування**: Проактивно оптимізує продуктивність за допомогою функцій, таких як автоматичне індексування та корекція планів запитів.
- **Інтеграція телеметрії**: Підтримує моніторинг через Azure Monitor, Event Hubs або Azure Storage для індивідуальних інсайтів.
#### Відновлення після катастроф та доступність
- **Автоматичні резервні копії**: SQL Database автоматично виконує повні, диференційні та журнали транзакцій резервних копій баз даних.
- **Відновлення до певного моменту**: Відновлює бази даних до будь-якого минулого стану в межах періоду зберігання резервних копій.
- **Гео-резервування**
- **Групи відмови**: Спрощує відновлення після катастроф, групуючи бази даних для автоматичного переключення між регіонами.
**Azure SQL Row Level Security (RLS)** - це функція, яка **контролює, які рядки користувач може переглядати або змінювати**, забезпечуючи, щоб кожен користувач бачив лише дані, що стосуються його. Створюючи політики безпеки з фільтрами або блокуючими предикатами, організації можуть забезпечити детальний доступ на рівні бази даних.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** - це платформа як служба (PaaS) бази даних, яка пропонує майже 100% сумісність з SQL Server і автоматично обробляє більшість завдань управління (наприклад, оновлення, патчування, резервні копії, моніторинг). Вона забезпечує хмарне рішення для міграції баз даних SQL Server на місцях з мінімальними змінами.
#### Тарифи на послуги
- **Загальне призначення**: Економічний варіант для додатків зі стандартними вимогами до I/O та затримки.
- **Бізнес-критичний**: Високопродуктивний варіант з низькою затримкою I/O для критичних навантажень.
#### Розширені функції безпеки
* **Захист від загроз**: Розширений захист від загроз сповіщає про підозрілі дії та атаки SQL-ін'єкцій. Аудит для відстеження та реєстрації подій бази даних для відповідності.
* **Контроль доступу**: Аутентифікація Microsoft Entra для централізованого управління ідентичністю. Безпека на рівні рядків та динамічне маскування даних для детального контролю доступу.
* **Резервні копії**: Автоматизовані та ручні резервні копії з можливістю відновлення до певного моменту.
**Azure SQL Managed Instances** призначені для розгортань на більших масштабах, що охоплюють всю SQL Server instance. Вона забезпечує майже 100% сумісність з останнім SQL Server на місцях (Enterprise Edition) Database Engine, що забезпечує рідну реалізацію віртуальної мережі (VNet), яка вирішує загальні проблеми безпеки, і бізнес-модель, вигідну для клієнтів SQL Server на місцях.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** найкраще підходять для міграцій, де ви хочете **контролювати операційну систему та екземпляр SQL Server**, як це було на сервері, що працює на місцях. Вони можуть мати різні розміри машин і широкий вибір версій та редакцій SQL Server.
**Azure SQL Virtual Machines** дозволяє **контролювати операційну систему** та екземпляр SQL Server, оскільки віртуальна машина буде запущена в службі віртуальних машин, що працює на SQL Server.
#### Ключові функції
Коли створюється SQL Virtual Machine, можливо **вибрати всі налаштування віртуальної машини** (як показано в уроці про віртуальні машини), яка буде хостити SQL Server.
- Це означає, що віртуальна машина буде отримувати доступ до деяких VNet(ів), може мати **прикріплені керовані ідентичності**, може мати змонтовані файлові спільноти... що робить **переходи з SQL** на віртуальну машину дуже цікавими.
- Більше того, можливо налаштувати ідентифікатор програми та секрет для **дозволу SQL отримувати доступ до конкретного сховища ключів**, яке може містити чутливу інформацію.
**Автоматизоване резервне копіювання**: Заплануйте резервні копії для SQL баз даних.
**Автоматичне патчування**: Автоматизує установку оновлень Windows та SQL Server під час вікна обслуговування.
**Інтеграція з Azure Key Vault**: Автоматично налаштовує Key Vault для SQL Server VMs.
**Інтеграція з Defender for Cloud**: Переглядайте рекомендації Defender для SQL у порталі.
**Гнучкість версії/редакції**: Змінюйте метадані версії або редакції SQL Server без повторного розгортання VM.
Також можливо налаштувати такі речі, як **автоматичні оновлення SQL**, **автоматичні резервні копії**, **аутентифікацію Entra ID** та більшість функцій інших служб SQL.
#### Функції безпеки
**Microsoft Defender для SQL**: Інсайти та сповіщення про безпеку.
**Інтеграція з Azure Key Vault**: Безпечне зберігання облікових даних та ключів шифрування.
**Microsoft Entra (Azure AD)**: Аутентифікація та контроль доступу.
## Перерахування
## Enumeration
{{#tabs}}
{{#tab name="az cli"}}
@@ -216,6 +164,30 @@ 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>
# List schema by the database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
# Get tables of a database with the schema
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
# Get columns of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
# Get columns of a table
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
# Get DataMaskingPolicies of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
```
{{#endtab}}
@@ -260,6 +232,31 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
Додатково, якщо ви хочете перерахувати Dynamic Data Masking та Row Level policies у базі даних, ви можете виконати запит:
```sql
--Enumerates the masked columns
SELECT
OBJECT_NAME(mc.object_id) AS TableName,
c.name AS ColumnName,
mc.masking_function AS MaskingFunction
FROM sys.masked_columns AS mc
JOIN sys.columns AS c
ON mc.object_id = c.object_id
AND mc.column_id = c.column_id
--Enumerates Row level policies
SELECT
sp.name AS PolicyName,
sp.is_enabled,
sp.create_date,
sp.modify_date,
OBJECT_NAME(sp.object_id) AS TableName,
sp2.predicate_definition AS PredicateDefinition
FROM sys.security_policies AS sp
JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Підключення та виконання SQL запитів
Ви можете знайти рядок підключення (що містить облікові дані) з прикладу [перерахування Az WebApp](az-app-services.md):