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

This commit is contained in:
Translator
2025-02-20 00:39:29 +00:00
parent ff759b446d
commit a2546773f7
9 changed files with 248 additions and 146 deletions

View File

@@ -35,6 +35,16 @@ Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie
```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`
Mit diesen Berechtigungen können Sie einen MySQL-Server aus einem Backup wiederherstellen:
```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`
Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen MySQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den MySQL-Server gewährt. Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, die verwendet werden können.

View File

@@ -30,14 +30,60 @@ az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
Darüber hinaus können Sie mit den Berechtigungen die zugewiesene Identität aktivieren und mit der verwalteten Identität, die an den Server angehängt ist, arbeiten. Hier finden Sie alle Erweiterungen, die der Azure PostgreSQL Flexible Server unterstützt [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Um diese Erweiterungen nutzen zu können, müssen einige Serverparameter (azure.extensions) geändert werden. Zum Beispiel hier mit einer verwalteten Identität, die auf Azure Storage zugreifen kann:
Zuerst ändern wir die Parameter und stellen sicher, dass die zugewiesene Identität aktiviert ist:
```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;
```
Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um ihn zu aktivieren:
```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`
Mit diesen Berechtigungen können Sie einen Server aus einem Backup wiederherstellen mit:
```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`
Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Prinzipale wird derzeit noch nicht unterstützt, daher müssen Sie, wenn einer erstellt wurde, ihn zuerst löschen.
Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Principal wird derzeit noch nicht unterstützt, daher müssen Sie, wenn einer erstellt wurde, diesen zuerst löschen.
Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, die verwendet werden können.
```bash

View File

@@ -1,8 +1,8 @@
# Az - SQL-Datenbank-Privesc
# Az - SQL-Datenbank Privesc
{{#include ../../../banners/hacktricks-training.md}}
## SQL-Datenbank-Privesc
## SQL-Datenbank Privesc
Für weitere Informationen zur SQL-Datenbank siehe:
@@ -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,
@@ -80,12 +85,12 @@ az sql server firewall-rule update \
--start-ip-address <new-start-ip-address> \
--end-ip-address <new-end-ip-address>
```
Zusätzlich ermöglicht die Berechtigung `Microsoft.Sql/servers/outboundFirewallRules/delete` das Löschen einer Firewallregel.
HINWEIS: Es ist erforderlich, den öffentlichen Zugriff zu aktivieren.
Zusätzlich erlaubt die Berechtigung `Microsoft.Sql/servers/outboundFirewallRules/delete` das Löschen einer Firewall-Regel.
HINWEIS: Es ist notwendig, den öffentlichen Zugriff zu aktivieren.
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
Mit dieser Berechtigung können Sie IPv6-Firewallregeln auf einem Azure SQL-Server erstellen, ändern oder löschen. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, bestehende Netzwerksicherheitskonfigurationen zu umgehen und unbefugten Zugriff auf den Server zu erlangen. Durch das Hinzufügen einer Regel, die den Datenverkehr von jeder IPv6-Adresse erlaubt, könnte der Angreifer den Server für externen Zugriff öffnen.
Mit dieser Berechtigung können Sie IPv6-Firewall-Regeln auf einem Azure SQL Server erstellen, ändern oder löschen. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, bestehende Netzwerksicherheitskonfigurationen zu umgehen und unbefugten Zugriff auf den Server zu erlangen. Durch das Hinzufügen einer Regel, die den Datenverkehr von jeder IPv6-Adresse erlaubt, könnte der Angreifer den Server für externen Zugriff öffnen.
```bash
az sql server firewall-rule create \
--server <server_name> \
@@ -94,7 +99,7 @@ az sql server firewall-rule create \
--start-ip-address <start_ipv6_address> \
--end-ip-address <end_ipv6_address>
```
Zusätzlich ermöglicht die Berechtigung `Microsoft.Sql/servers/ipv6FirewallRules/delete` das Löschen einer Firewallregel.
Zusätzlich ermöglicht die Berechtigung `Microsoft.Sql/servers/ipv6FirewallRules/delete` das Löschen einer Firewall-Regel.
HINWEIS: Es ist erforderlich, den öffentlichen Zugriff zu aktivieren.
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
@@ -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
Ändern (oder deaktivieren) Sie die Datenmaskierungsrichtlinien in Ihren SQL-Datenbanken.
```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"
}
}'
```
### Remove Row Level Security
Wenn Sie sich als Admin anmelden, können Sie die Richtlinien des Admins selbst und anderer Benutzer entfernen.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -10,7 +10,9 @@ Azure Cosmos DB bietet mehrere Datenbank-APIs, um reale Daten mit Dokumenten, re
Ein wichtiger Aspekt von CosmosDB ist das Azure Cosmos-Konto. **Azure Cosmos-Konto** fungiert als Einstiegspunkt zu den Datenbanken. Das Konto bestimmt wichtige Einstellungen wie globale Verteilung, Konsistenzstufen und die spezifische API, die verwendet werden soll, wie z.B. NoSQL. Über das Konto können Sie die globale Replikation konfigurieren, um sicherzustellen, dass Daten in mehreren Regionen für einen latenzarmen Zugriff verfügbar sind. Darüber hinaus können Sie eine Konsistenzstufe wählen, die zwischen Leistung und Datenakkuratheit balanciert, mit Optionen von starker bis eventualer Konsistenz.
### NoSQL (sql)
Azure Cosmos DB unterstützt **benutzerzugewiesene Identitäten** und **systemzugewiesene verwaltete Identitäten**, die automatisch erstellt und an den Lebenszyklus der Ressource gebunden sind, was eine sichere, tokenbasierte Authentifizierung beim Verbinden mit anderen Diensten ermöglicht vorausgesetzt, diese Dienste haben die entsprechenden Rollen zugewiesen. Cosmos DB hat jedoch keinen integrierten Mechanismus, um direkt externe Datenquellen wie Azure Blob Storage abzufragen. Im Gegensatz zu den externen Tabellenfunktionen von SQL Server erfordert Cosmos DB, dass Daten mit externen Tools wie Azure Data Factory, dem Data Migration Tool oder benutzerdefinierten Skripten in seine Container aufgenommen werden, bevor sie mit den nativen Abfragefunktionen abgefragt werden können.
### NoSQL
Die Azure Cosmos DB NoSQL-API ist eine dokumentenbasierte API, die JSON als Datenformat verwendet. Sie bietet eine SQL-ähnliche Abfragesyntax zum Abfragen von JSON-Objekten, was sie geeignet macht, um mit strukturierten und semi-strukturierten Daten zu arbeiten. Der Endpunkt des Dienstes ist:
```bash
https://<Account-Name>.documents.azure.com:443/
@@ -19,7 +21,13 @@ https://<Account-Name>.documents.azure.com:443/
Innerhalb eines Kontos können Sie eine oder mehrere Datenbanken erstellen, die als logische Gruppierungen von Containern dienen. Eine Datenbank fungiert als Grenze für das Ressourcenmanagement und die Benutzerberechtigungen. Datenbanken können entweder die bereitgestellte Durchsatzrate über ihre Container teilen oder dedizierten Durchsatz für einzelne Container zuweisen.
#### Container
Die zentrale Einheit der Datenspeicherung ist der Container, der JSON-Dokumente enthält und automatisch für effizientes Abfragen indiziert wird. Container sind elastisch skalierbar und über Partitionen verteilt, die durch einen benutzerdefinierten Partitionierungsschlüssel bestimmt werden. Der Partitionierungsschlüssel ist entscheidend für die Gewährleistung optimaler Leistung und gleichmäßiger Datenverteilung. Zum Beispiel könnte ein Container Kundendaten speichern, wobei "customerId" als Partitionierungsschlüssel dient.
Die zentrale Einheit der Datenspeicherung ist der Container, der JSON-Dokumente enthält und automatisch für effiziente Abfragen indiziert wird. Container sind elastisch skalierbar und über Partitionen verteilt, die durch einen benutzerdefinierten Partitionierungsschlüssel bestimmt werden. Der Partitionierungsschlüssel ist entscheidend für die Gewährleistung optimaler Leistung und gleichmäßiger Datenverteilung. Zum Beispiel könnte ein Container Kundendaten speichern, wobei "customerId" als Partitionierungsschlüssel dient.
#### Hauptmerkmale
**Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Regionen-Schreibvorgänge für verbesserte Verfügbarkeit.
**Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen.
**Backup & Wiederherstellung**: von periodischen, kontinuierlichen (7 Tage) oder kontinuierlichen (30 Tage) Backup-Richtlinien mit konfigurierbaren Intervallen und Aufbewahrung.
**Datenverschlüsselung**: Standardmäßig verwaltete Dienstschlüssel oder vom Kunden verwaltete Schlüssel (CMK) zur Verschlüsselung (Die Auswahl von CMK ist irreversibel).
#### Aufzählung
@@ -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
Die MongoDB NoSQL-API ist eine dokumentenbasierte API, die JSON-ähnliches BSON (Binary JSON) als Datenformat verwendet. Sie bietet eine Abfragesprache mit Aggregationsfähigkeiten, die sie für die Arbeit mit strukturierten, semi-strukturierten und unstrukturierten Daten geeignet macht. Der Endpunkt des Dienstes folgt typischerweise diesem Format:
Die MongoDB NoSQL API ist eine dokumentenbasierte API, die JSON-ähnliches BSON (Binary JSON) als Datenformat verwendet. Sie bietet eine Abfragesprache mit Aggregationsfähigkeiten, die sie für die Arbeit mit strukturierten, semi-strukturierten und unstrukturierten Daten geeignet macht. Der Endpunkt des Dienstes folgt typischerweise diesem Format:
```bash
mongodb://<hostname>:<port>/<database>
```
@@ -183,7 +191,18 @@ mongodb://<hostname>:<port>/<database>
In MongoDB können Sie eine oder mehrere Datenbanken innerhalb einer Instanz erstellen. Jede Datenbank dient als logische Gruppierung von Sammlungen und bietet eine Grenze für die Organisation und Verwaltung von Ressourcen. Datenbanken helfen, Daten logisch zu trennen und zu verwalten, beispielsweise für verschiedene Anwendungen oder Projekte.
#### Sammlungen
Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokumente enthält und für effizientes Abfragen und flexibles Schema-Design konzipiert ist. Sammlungen sind elastisch skalierbar und können hochgradig durchsatzstarke Operationen über mehrere Knoten in einer verteilten Umgebung unterstützen.
Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokumente enthält und für effiziente Abfragen sowie flexibles Schema-Design konzipiert ist. Sammlungen sind elastisch skalierbar und können hochgradig durchsatzstarke Operationen über mehrere Knoten in einer verteilten Umgebung unterstützen.
#### Hauptmerkmale des Anfrageeinheit (RU) Typs
**Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Regionen-Schreibvorgänge für verbesserte Verfügbarkeit.
**Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen.
**Backup & Wiederherstellung**: von periodischen, kontinuierlichen (7 Tage, kostenlos) oder kontinuierlichen (30 Tage, kostenpflichtig) Backup-Richtlinien mit konfigurierbaren Intervallen und Aufbewahrung.
**Datenverschlüsselung**: Standardmäßig verwaltete Dienstschlüssel oder vom Kunden verwaltete Schlüssel (CMK) zur Verschlüsselung (die Auswahl von CMK ist irreversibel).
#### Hauptmerkmale des vCore-Cluster-Typs
**Globale Verteilung**: Aktivieren Sie ein Lese-Replica in einer anderen Azure-Region für hohe Verfügbarkeit und Failover-Unterstützung. Konfigurieren Sie den Replikatnamen, die Region und den Speicher pro Shard.
**Netzwerk & Sicherheit**: Unterstützt den öffentlichen Zugriff mit zugewiesenen öffentlichen IPs und privaten Zugriff. Beschränken Sie Verbindungen mithilfe von Firewall-Regeln standardmäßig sind keine öffentlichen IPs erlaubt.
**Verschlüsselte Verbindungen**: Erzwingt TLS-Verschlüsselung für sichere Datenübertragung.
#### Aufzählung
@@ -254,7 +273,7 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
#### Verbindung
Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Privesc-Abschnitt beschriebenen Methode finden können.
Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Abschnitt zur Privilegieneskalation beschriebenen Methode finden können.
```python
from pymongo import MongoClient

View File

@@ -6,12 +6,17 @@
Azure Logic Apps ist ein cloudbasierter Dienst von Microsoft Azure, der Entwicklern ermöglicht, **Workflows zu erstellen und auszuführen, die verschiedene Dienste**, Datenquellen und Anwendungen integrieren. Diese Workflows sind darauf ausgelegt, **Geschäftsprozesse zu automatisieren**, Aufgaben zu orchestrieren und Datenintegrationen über verschiedene Plattformen hinweg durchzuführen.
Logic Apps bietet einen visuellen Designer, um Workflows mit einer **breiten Palette von vorgefertigten Konnektoren** zu erstellen, was es einfach macht, sich mit verschiedenen Diensten zu verbinden und zu interagieren, wie z.B. Office 365, Dynamics CRM, Salesforce und vielen anderen. Sie können auch benutzerdefinierte Konnektoren für Ihre spezifischen Bedürfnisse erstellen.
Logic Apps bietet einen visuellen Designer, um Workflows mit einer **breiten Palette von vorgefertigten Konnektoren** zu erstellen, was es einfach macht, sich mit verschiedenen Diensten wie Office 365, Dynamics CRM, Salesforce und vielen anderen zu verbinden und zu interagieren. Sie können auch benutzerdefinierte Konnektoren für Ihre spezifischen Bedürfnisse erstellen.
Beim Erstellen einer Logic App müssen Sie entweder ein externes Speicherkonto erstellen oder verknüpfen, das den Workflow-Zustand, die Ausführungshistorie und Artefakte speichert. Dieser Speicher kann mit Diagnosetools zur Überwachung konfiguriert und mit Netzwerkzugriffsrestriktionen gesichert oder in ein virtuelles Netzwerk integriert werden, um den ein- und ausgehenden Datenverkehr zu steuern.
### Verwaltete Identitäten
Logic Apps hat eine **systemzugeordnete verwaltete Identität**, die an ihren Lebenszyklus gebunden ist. Wenn sie aktiviert ist, erhält sie eine eindeutige Objekt- (Principal-) ID, die mit Azure RBAC verwendet werden kann, um die erforderlichen Berechtigungen für den sicheren Zugriff auf andere Azure-Dienste zu gewähren. Dies beseitigt die Notwendigkeit, Anmeldeinformationen im Code zu speichern, da die Identität über Microsoft Entra ID authentifiziert wird. Darüber hinaus können Sie auch **benutzerzugeordnete verwaltete Identitäten** verwenden, die über mehrere Ressourcen hinweg geteilt werden können. Diese Identitäten ermöglichen es Workflows und Logic Apps, sicher mit externen Systemen zu interagieren und sicherzustellen, dass die erforderlichen Zugriffskontrollen und Berechtigungen zentral über das Sicherheitsframework von Azure verwaltet werden.
### Beispiele
- **Automatisierung von Datenpipelines**: Logic Apps kann **Datenübertragungs- und Transformationsprozesse** in Kombination mit Azure Data Factory automatisieren. Dies ist nützlich, um skalierbare und zuverlässige Datenpipelines zu erstellen, die Daten zwischen verschiedenen Datenspeichern, wie Azure SQL Database und Azure Blob Storage, bewegen und transformieren, was die Analyse- und Business-Intelligence-Operationen unterstützt.
- **Integration mit Azure Functions**: Logic Apps kann zusammen mit Azure Functions verwendet werden, um **anspruchsvolle, ereignisgesteuerte Anwendungen zu entwickeln, die nach Bedarf skalieren** und nahtlos mit anderen Azure-Diensten integriert werden. Ein Beispielanwendungsfall ist die Verwendung einer Logic App, um eine Azure Function als Reaktion auf bestimmte Ereignisse, wie Änderungen in einem Azure Storage-Konto, auszulösen, was eine dynamische Datenverarbeitung ermöglicht.
- **Automatisierung von Datenpipelines**: Logic Apps können **Datenübertragungs- und Transformationsprozesse** in Kombination mit Azure Data Factory automatisieren. Dies ist nützlich, um skalierbare und zuverlässige Datenpipelines zu erstellen, die Daten zwischen verschiedenen Datenspeichern, wie Azure SQL Database und Azure Blob Storage, bewegen und transformieren, was die Analyse- und Business-Intelligence-Operationen unterstützt.
- **Integration mit Azure Functions**: Logic Apps können zusammen mit Azure Functions verwendet werden, um **anspruchsvolle, ereignisgesteuerte Anwendungen zu entwickeln, die nach Bedarf skalieren** und nahtlos mit anderen Azure-Diensten integriert werden. Ein Beispielanwendungsfall ist die Verwendung einer Logic App, um eine Azure Function als Reaktion auf bestimmte Ereignisse, wie Änderungen in einem Azure Storage-Konto, auszulösen, was eine dynamische Datenverarbeitung ermöglicht.
### Visualisieren einer LogicAPP
@@ -37,9 +42,13 @@ Es gibt mehrere Hosting-Optionen:
* **Consumption**
- **Multi-tenant**: bietet gemeinsame Rechenressourcen, arbeitet in der öffentlichen Cloud und folgt einem Preismodell pro Operation. Dies ist ideal für leichte und kosteneffektive Workloads.
* **Standard**
- **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Networking und Gebühren pro Workflow-Service-Plan-Instanz. Es ist geeignet für anspruchsvollere Workloads, die mehr Kontrolle erfordern.
- **App Service Environment V3**: dedizierte Rechenressourcen mit vollständiger Isolation und Skalierbarkeit. Es integriert sich auch mit VNET für Networking und verwendet ein Preismodell, das auf App Service-Instanzen innerhalb der Umgebung basiert. Dies ist ideal für unternehmensgroße Anwendungen, die hohe Isolation benötigen.
- **Hybrid**: entworfen für lokale Verarbeitung und Multi-Cloud-Unterstützung. Es ermöglicht kundenverwaltete Rechenressourcen mit lokalem Netzwerkzugang und nutzt Kubernetes Event-Driven Autoscaling (KEDA).
- **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Networking und Gebühren pro Workflow-Serviceplan-Instanz. Es ist geeignet für anspruchsvollere Workloads, die mehr Kontrolle erfordern.
- **App Service Environment V3** dedizierte Rechenressourcen mit vollständiger Isolation und Skalierbarkeit. Es integriert sich auch mit VNET für Networking und verwendet ein Preismodell basierend auf App Service-Instanzen innerhalb der Umgebung. Dies ist ideal für unternehmensgroße Anwendungen, die hohe Isolation benötigen.
- **Hybrid** entworfen für lokale Verarbeitung und Multi-Cloud-Unterstützung. Es ermöglicht kundenverwaltete Rechenressourcen mit lokalem Netzwerkzugang und nutzt Kubernetes Event-Driven Autoscaling (KEDA).
### Workflows
Workflows in Azure Logic Apps sind die zentralen automatisierten Prozesse, die Aktionen über verschiedene Dienste orchestrieren. Ein Workflow beginnt mit einem Trigger—einem Ereignis oder Zeitplan—und führt dann eine Reihe von Aktionen aus, wie das Aufrufen von APIs, das Verarbeiten von Daten oder das Interagieren mit anderen Azure-Diensten. Workflows können visuell mit einem Designer oder über Code (JSON-Definitionen) definiert werden und werden über Befehle wie az logic workflow create, az logic workflow show und az logic workflow update verwaltet. Sie unterstützen auch das Identitätsmanagement (über die Identitätsuntergruppe), um Berechtigungen und Integrationen mit externen Ressourcen sicher zu verwalten.
### Enumeration
@@ -143,9 +152,9 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
* Schemata: Verwaltet XML-Schemata zur Validierung und Verarbeitung von Nachrichten in Ihrem Integrationskonto.
* Maps: Konfigurieren Sie XSLT-basierte Transformationen, um Datenformate innerhalb Ihrer Integrations-Workflows zu konvertieren.
* Assemblies: Verwaltet Integrationskonten-Assemblies, um Logik und Datenverarbeitung zu optimieren.
* Zertifikate: Handhabt Zertifikate zur Verschlüsselung und Signierung von Nachrichten, um eine sichere Kommunikation zu gewährleisten.
* Zertifikate: Verwaltet Zertifikate zur Verschlüsselung und Signierung von Nachrichten, um eine sichere Kommunikation zu gewährleisten.
* Partner: Verwaltet Informationen über Handelspartner für B2B-Transaktionen und ermöglicht nahtlose Integrationen.
* Vereinbarungen: Konfigurieren Sie Regeln und Einstellungen für den Austausch von Daten mit Handelspartnern (z. B. EDI, AS2).
* Vereinbarungen: Konfigurieren Sie Regeln und Einstellungen für den Datenaustausch mit Handelspartnern (z. B. EDI, AS2).
* Batch-Konfigurationen: Verwaltet Batch-Verarbeitungs-Konfigurationen, um Nachrichten effizient zu gruppieren und zu verarbeiten.
* RosettaNet PIP: Konfigurieren Sie RosettaNet Partner Interface Processes (PIPs), um die B2B-Kommunikation zu standardisieren.
@@ -249,7 +258,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
{{#endtabs }}
## Privilegienerhöhung
## Privilegieneskalation
Gleich wie bei Logic Apps Privesc:

View File

@@ -5,8 +5,8 @@
## Azure MySQL
Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbankdienst, der auf der MySQL Community Edition basiert und darauf ausgelegt ist, Skalierbarkeit, Sicherheit und Flexibilität für verschiedene Anwendungsbedürfnisse zu bieten. Es gibt zwei verschiedene Bereitstellungsmodelle:
* **Single Server** (ist auf dem Weg zur Stilllegung):
- Optimiert für kosteneffiziente und einfach zu verwaltende MySQL-Bereitstellungen.
* **Single Server** (ist auf dem Rückzug):
- Optimiert für kosteneffektive und einfach zu verwaltende MySQL-Bereitstellungen.
- Zu den Funktionen gehören automatisierte Backups, hohe Verfügbarkeit und grundlegende Überwachung.
- Ideal für Anwendungen mit vorhersehbaren Arbeitslasten.
* **Flexible Server**:
@@ -16,12 +16,12 @@ Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbank
- Bietet Stop/Start-Funktionalität zur Kostensenkung.
### Hauptmerkmale
* **Serververwaltung**: Die **ad-admin**-Funktion ermöglicht die Verwaltung von Azure Active Directory (AAD)-Administratoren für MySQL-Server, wodurch die Kontrolle über den administrativen Zugriff über AAD-Anmeldeinformationen bereitgestellt wird, während die **identity**-Funktion die Zuweisung und Verwaltung von Azure Managed Identities ermöglicht, die eine sichere, anmeldefreie Authentifizierung für den Zugriff auf Azure-Ressourcen bieten.
* **Serververwaltung**: Die **ad-admin**-Funktion ermöglicht die Verwaltung von Azure Entra ID-Administratoren für MySQL-Server und bietet Kontrolle über den administrativen Zugriff über Entra ID-Anmeldeinformationen. Mysql unterstützt Benutzerverwaltete Identitäten, die zur Authentifizierung ohne die Notwendigkeit von Anmeldeinformationen verwendet werden und von anderen Diensten genutzt werden können.
* **Lebenszyklusverwaltung**: Optionen zum Starten oder Stoppen eines Servers, Löschen einer flexiblen Serverinstanz, Neustarten eines Servers, um Konfigurationsänderungen schnell anzuwenden, und Warten, um sicherzustellen, dass ein Server bestimmte Bedingungen erfüllt, bevor mit Automatisierungsskripten fortgefahren wird.
* **Sicherheit und Netzwerk**: kann Firewall-Regeln für Server verwalten, um einen sicheren Datenbankzugriff zu gewährleisten, und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen.
* **Datenschutz und Backup**: umfasst Optionen zur Verwaltung von Backups flexibler Server für die Datenwiederherstellung, Durchführung von Geo-Restore zur Wiederherstellung eines Servers in einer anderen Region, Export von Server-Backups zur externen Nutzung (in der Vorschau) und Wiederherstellung eines Servers aus einem Backup zu einem bestimmten Zeitpunkt.
* **Sicherheit und Netzwerk**: Sichern Sie Ihren Server, indem Sie Verbindungen durch Firewall-Regeln einschränken, die nur bestimmte öffentliche IP-Adressen zulassen, oder indem Sie private Endpunkte verwenden, die Ihren Server in ein virtuelles Netzwerk integrieren. Alle Verbindungen sind mit TLS 1.2-Verschlüsselung geschützt. Datenbanken, Backups und Protokolle sind standardmäßig im Ruhezustand mit dienstverwalteten Schlüsseln oder benutzerdefinierten Schlüsseln verschlüsselt.
* **Datenschutz und Backup**: umfasst Optionen zur Verwaltung flexibler Server-Backups für die Datenwiederherstellung, Durchführung von Geo-Wiederherstellungen zur Wiederherstellung eines Servers in einer anderen Region, Export von Server-Backups zur externen Nutzung (in der Vorschau) und Wiederherstellung eines Servers aus einem Backup zu einem bestimmten Zeitpunkt.
### Enumeration
### Aufzählung
{{#tabs }}
{{#tab name="az cli" }}

View File

@@ -6,11 +6,11 @@
**Azure Database for PostgreSQL** ist ein vollständig verwalteter **relationaler Datenbankdienst, der auf der PostgreSQL** Community Edition basiert. Er wurde entwickelt, um Skalierbarkeit, Sicherheit und Flexibilität für unterschiedliche Anwendungsbedürfnisse zu bieten. Ähnlich wie Azure MySQL bietet PostgreSQL zwei Bereitstellungsmodelle:
* **Single Server** (auf dem Rückzugspfad):
- Optimiert für einfache, kosteneffektive PostgreSQL-Bereitstellungen.
- Optimiert für einfache, kosteneffiziente PostgreSQL-Bereitstellungen.
- Bietet automatisierte Backups, grundlegende Überwachung und hohe Verfügbarkeit.
- Ideal für Anwendungen mit vorhersehbaren Arbeitslasten.
* **Flexible Server**:
- Bietet mehr Kontrolle über Datenbankverwaltung und -konfiguration.
- Bietet mehr Kontrolle über Datenbankmanagement und -konfiguration.
- Unterstützt hohe Verfügbarkeit, sowohl in derselben Zone als auch über Zonen hinweg.
- Bietet elastische Skalierung, automatisierte Wartung und kostensparende Funktionen.
- Ermöglicht das Starten und Stoppen des Servers zur Kostenoptimierung.
@@ -22,7 +22,8 @@
* **Server Stop/Start**: Benutzer können den Server stoppen und starten.
* **Automatische Backups**: Eingebaute tägliche Backups mit konfigurierbaren Aufbewahrungsfristen von bis zu 35 Tagen.
* **Rollenbasierter Zugriff**: Steuern Sie Benutzerberechtigungen und administrativen Zugriff über Azure Active Directory.
* **Sicherheit und Netzwerk**: Kann Firewall-Regeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen.
* **Sicherheit und Netzwerk**: können Firewall-Regeln für den Server verwalten, um einen sicheren Datenbankzugriff zu gewährleisten, und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen.
* **Verwaltete Identitäten**: ermöglichen es Ihrem Server, sich sicher bei anderen Azure-Diensten zu authentifizieren, ohne Anmeldeinformationen zu speichern. Es ermöglicht den Zugriff auf andere Dienste, die eine systemzugewiesene verwaltete Identität hätten, und kann von anderen Diensten mit anderen Identitäten, die eine benutzerzugewiesene verwaltete Identität sind, aufgerufen werden.
### Aufzählung
@@ -130,7 +131,7 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
## ToDo
* Überprüfen, wie man mit ad-admin zugreifen kann, um zu verifizieren, dass es sich um eine Privilegieneskalationsmethode handelt
* Suche nach einer Möglichkeit, mit ad-admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegieneskalationsmethode handelt
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,144 +8,92 @@ Azure SQL ist eine Familie von verwalteten, sicheren und intelligenten Produkten
Azure SQL besteht aus vier Hauptangeboten:
1. **Azure SQL Server**: Azure SQL Server ist ein verwalteter relationaler Datenbankdienst, der die Bereitstellung und Verwaltung von SQL Server-Datenbanken vereinfacht, mit integrierten Sicherheits- und Leistungsfunktionen.
2. **Azure SQL-Datenbank**: Dies ist ein **vollständig verwalteter Datenbankdienst**, der es Ihnen ermöglicht, einzelne Datenbanken in der Azure-Cloud zu hosten. Er bietet integrierte Intelligenz, die Ihre einzigartigen Datenbankmuster lernt und maßgeschneiderte Empfehlungen sowie automatische Optimierungen bereitstellt.
3. **Azure SQL Managed Instance**: Dies ist für größere, gesamte SQL Server-Instanz-Umsetzungen gedacht. Es bietet nahezu 100% Kompatibilität mit der neuesten SQL Server On-Premises (Enterprise Edition) Datenbank-Engine, die eine native Implementierung des virtuellen Netzwerks (VNet) bietet, um gängige Sicherheitsbedenken zu adressieren, und ein Geschäftsmodell, das für On-Premises SQL Server-Kunden vorteilhaft ist.
4. **Azure SQL Server auf Azure VMs**: Dies ist Infrastructure as a Service (IaaS) und eignet sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft.
1. **Azure SQL Server**: Ein Server wird für die **Bereitstellung und Verwaltung** von SQL Server-Datenbanken benötigt.
2. **Azure SQL-Datenbank**: Dies ist ein **vollständig verwalteter Datenbankdienst**, der es Ihnen ermöglicht, einzelne Datenbanken in der Azure-Cloud zu hosten.
3. **Azure SQL Managed Instance**: Dies ist für größere, gesamte SQL Server-Instanz-Umsetzungen.
4. **Azure SQL Server auf Azure VMs**: Dies ist am besten für Architekturen geeignet, bei denen Sie **Kontrolle über das Betriebssystem** und die SQL Server-Instanz haben möchten.
### Azure SQL Server
### SQL Server-Sicherheitsfunktionen
Azure SQL Server ist ein relationales Datenbankmanagementsystem (RDBMS), das Transact-SQL für Datenoperationen verwendet und für die Verarbeitung von Unternehmenssystemen ausgelegt ist. Es bietet robuste Funktionen für Leistung, Sicherheit, Skalierbarkeit und Integration mit verschiedenen Microsoft-Anwendungen. Azure SQL-Datenbanken basieren auf diesem Server, da diese auf diesen Servern aufgebaut sind und es der Einstiegspunkt für Benutzer ist, um auf die Datenbanken zuzugreifen.
**Netzwerkzugang:**
#### Netzwerk
- Öffentlicher Endpunkt (kann den Zugriff auf bestimmte Netzwerke beschränken).
- Private Endpunkte.
- Es ist auch möglich, Verbindungen basierend auf Domainnamen einzuschränken.
- Es ist auch möglich, Azure-Dienste den Zugriff zu erlauben (z. B. um den Abfrage-Editor im Portal zu verwenden oder um einer Azure-VM die Verbindung zu erlauben).
**Netzwerkverbindung**: Wählen Sie, ob Sie den Zugriff über einen öffentlichen Endpunkt oder einen privaten Endpunkt aktivieren möchten. Wenn Sie "Kein Zugriff" auswählen, werden keine Endpunkte erstellt, bis dies manuell konfiguriert wird:
- Kein Zugriff: Es sind keine Endpunkte konfiguriert, wodurch eingehende Verbindungen blockiert werden, bis sie manuell eingerichtet werden.
- Öffentlicher Endpunkt: Ermöglicht direkte Verbindungen über das öffentliche Internet, unterliegt Firewall-Regeln und anderen Sicherheitskonfigurationen.
- Privater Endpunkt: Beschränkt die Konnektivität auf ein privates Netzwerk.
**Authentifizierungsmethoden:**
**Verbindungsrichtlinie**: Definieren Sie, wie Clients mit dem SQL-Datenbankserver kommunizieren:
- Standard: Verwendet eine Umleitungsrichtlinie für alle Clientverbindungen von innerhalb von Azure (außer für solche, die private Endpunkte verwenden) und eine Proxy-Richtlinie für Verbindungen von außerhalb von Azure.
- Proxy: Leitet alle Clientverbindungen über das Azure SQL-Datenbank-Gateway.
- Umleitung: Clients verbinden sich direkt mit dem Knoten, der die Datenbank hostet.
- Microsoft **Entra-only**-Authentifizierung: Sie müssen die Entra-Prinzipien angeben, die Zugriff auf den Dienst haben.
- **Sowohl SQL- als auch Microsoft Entra**-Authentifizierung: Traditionelle SQL-Authentifizierung mit Benutzername und Passwort zusammen mit Microsoft Entra.
- **Nur SQL**-Authentifizierung: Nur Zugriff über Datenbankbenutzer zulassen.
#### Authentifizierungsmethoden
Azure SQL unterstützt verschiedene Authentifizierungsmethoden zur Sicherung des Datenbankzugriffs:
Beachten Sie, dass, wenn eine SQL-Authentifizierung erlaubt ist, ein Administrationsbenutzer (Benutzername + Passwort) angegeben werden muss, und wenn die Entra-ID-Authentifizierung ausgewählt ist, muss auch mindestens ein Prinzip mit Administrationszugriff angegeben werden.
- **Microsoft Entra-Only-Authentifizierung**: Verwendet Microsoft Entra (ehemals Azure AD) für zentrales Identitätsmanagement und Single Sign-On.
- **Sowohl SQL- als auch Microsoft Entra-Authentifizierung**: Ermöglicht die Verwendung traditioneller SQL-Authentifizierung zusammen mit Microsoft Entra.
- **SQL-Authentifizierung**: Vertraut ausschließlich auf SQL Server-Benutzernamen und -Passwörter.
**Verschlüsselung:**
#### Sicherheitsmerkmale
- Es wird als „Transparente Datenverschlüsselung“ bezeichnet und verschlüsselt Datenbanken, Backups und Protokolle im Ruhezustand.
- Wie immer wird standardmäßig ein Azure-verwalteter Schlüssel verwendet, aber es könnte auch ein vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK) verwendet werden.
**Verwaltete Identitäten:**
SQL-Server haben **verwaltete Identitäten**. Verwaltete Identitäten ermöglichen es Ihrem Server, sich sicher mit anderen Azure-Diensten zu authentifizieren, ohne Anmeldeinformationen zu speichern. Sie ermöglichen den Zugriff auf andere Dienste, die eine systemzugewiesene verwaltete Identität haben, und können von anderen Diensten mit anderen Identitäten, die eine benutzerzugewiesene verwaltete Identität sind, aufgerufen werden. Einige der Dienste, auf die SQL zugreifen kann, sind Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB oder Cosmos DB API für MongoDB, generisches ODBC, Bulk-Operationen und S3-kompatible Objektspeicherung.
- Es ist möglich, system- und benutzerverwaltete MIs zuzuweisen.
- Wird verwendet, um auf den Verschlüsselungsschlüssel (wenn ein CMEK verwendet wird) und andere Dienste aus den Datenbanken zuzugreifen.
- Wenn mehr als eine UMI zugewiesen ist, ist es möglich, die Standard-UMI anzugeben, die verwendet werden soll.
- Es ist möglich, eine föderierte Client-Identität für den Zugriff über Mandanten hinweg zu konfigurieren.
Weitere Sicherheitsmerkmale, die der SQL-Server hat, sind:
**Microsoft Defender:**
- **Firewall-Regeln**: Firewall-Regeln steuern den Zugriff auf Ihren Server, indem sie den Datenverkehr einschränken oder zulassen. Dies ist auch eine Funktion der Datenbanken selbst.
- **Transparente Datenverschlüsselung (TDE)**: TDE verschlüsselt Ihre Datenbanken, Backups und Protokolle im Ruhezustand, um Ihre Daten zu schützen, selbst wenn der Speicher kompromittiert ist. Dies kann mit einem dienstverwalteten Schlüssel oder einem kundenverwalteten Schlüssel erfolgen.
- **Microsoft Defender für SQL**: Microsoft Defender für SQL kann aktiviert werden und bietet Schwachstellenbewertungen und erweiterten Bedrohungsschutz für einen Server.
- Nützlich zur „Minderung potenzieller Datenbankanfälligkeiten und zur Erkennung anomaler Aktivitäten“.
- Wir werden in einer eigenen Lektion über Defender sprechen (er kann in mehreren anderen Azure-Diensten aktiviert werden).
#### Bereitstellungsmodelle
**Backups:**
- Die Backup-Frequenz wird in den Aufbewahrungsrichtlinien verwaltet.
Azure SQL-Datenbank unterstützt flexible Bereitstellungsoptionen, um verschiedenen Bedürfnissen gerecht zu werden:
**Gelöschte Datenbanken:**
- Es ist möglich, DBs, die aus vorhandenen Backups gelöscht wurden, wiederherzustellen.
- **Einzelne Datenbank**:
- Eine vollständig isolierte Datenbank mit eigenen dedizierten Ressourcen.
- Ideal für Microservices oder Anwendungen, die eine einzelne Datenquelle benötigen.
- **Elastischer Pool**:
- Ermöglicht mehreren Datenbanken, Ressourcen innerhalb eines Pools zu teilen.
- Kosten effizient für Anwendungen mit schwankenden Nutzungsmustern über mehrere Datenbanken.
## Azure SQL-Datenbank
### Azure SQL-Datenbank
**Azure SQL-Datenbank** ist eine **vollständig verwaltete Datenbankplattform als Dienst (PaaS)**, die skalierbare und sichere relationale Datenbanklösungen bietet. Sie basiert auf den neuesten SQL Server-Technologien und beseitigt die Notwendigkeit der Infrastrukturverwaltung, was sie zu einer beliebten Wahl für cloudbasierte Anwendungen macht.
**Azure SQL-Datenbank** ist eine **vollständig verwaltete Datenbankplattform als Dienst (PaaS)**, die skalierbare und sichere relationale Datenbanklösungen bietet. Sie basiert auf den neuesten SQL Server-Technologien und beseitigt die Notwendigkeit für Infrastrukturmanagement, was sie zu einer beliebten Wahl für cloudbasierte Anwendungen macht.
Um eine SQL-Datenbank zu erstellen, muss der SQL-Server angegeben werden, auf dem sie gehostet wird.
#### Hauptmerkmale
### Sicherheitsfunktionen der SQL-Datenbank
- **Immer auf dem neuesten Stand**: Läuft auf der neuesten stabilen Version von SQL Server und erhält automatisch neue Funktionen und Patches.
- **PaaS-Funktionen**: Integrierte hohe Verfügbarkeit, Backups und Updates.
- **Datenflexibilität**: Unterstützt relationale und nicht-relationale Daten (z. B. Grafiken, JSON, räumliche Daten und XML).
- **Vererbte SQL Server-Sicherheitsfunktionen:**
- Authentifizierung (SQL und/oder Entra-ID)
- Zugewiesene verwaltete Identitäten
- Netzwerkbeschränkungen
- Verschlüsselung
- Backups
-
- **Datenredundanz:** Optionen sind lokal, zonen-, geo- oder geo-zonenredundant.
- **Ledger:** Es überprüft kryptografisch die Integrität der Daten und stellt sicher, dass jede Manipulation erkannt wird. Nützlich für Finanz-, Medizin- und jede Organisation, die mit sensiblen Daten umgeht.
#### Netzwerk
Eine SQL-Datenbank könnte Teil eines **elastischen Pools** sein. Elastische Pools sind eine kosteneffektive Lösung zur Verwaltung mehrerer Datenbanken, indem konfigurierbare Rechen- (eDTUs) und Speicherressourcen unter ihnen geteilt werden, wobei die Preisgestaltung ausschließlich auf den zugewiesenen Ressourcen und nicht auf der Anzahl der Datenbanken basiert.
**Netzwerkverbindung**: Wählen Sie, ob Sie den Zugriff über einen öffentlichen Endpunkt oder einen privaten Endpunkt aktivieren möchten. Wenn Sie "Kein Zugriff" auswählen, werden keine Endpunkte erstellt, bis dies manuell konfiguriert wird:
- Kein Zugriff: Es sind keine Endpunkte konfiguriert, wodurch eingehende Verbindungen blockiert werden, bis sie manuell eingerichtet werden.
- Öffentlicher Endpunkt: Ermöglicht direkte Verbindungen über das öffentliche Internet, unterliegt Firewall-Regeln und anderen Sicherheitskonfigurationen.
- Privater Endpunkt: Beschränkt die Konnektivität auf ein privates Netzwerk.
#### Azure SQL-Spaltenebene-Sicherheit (Maskierung) & Zeilenebene-Sicherheit
**Verbindungsrichtlinie**: Definieren Sie, wie Clients mit dem SQL-Datenbankserver kommunizieren:
- Standard: Verwendet eine Umleitungsrichtlinie für alle Clientverbindungen von innerhalb von Azure (außer für solche, die private Endpunkte verwenden) und eine Proxy-Richtlinie für Verbindungen von außerhalb von Azure.
- Proxy: Leitet alle Clientverbindungen über das Azure SQL-Datenbank-Gateway.
- Umleitung: Clients verbinden sich direkt mit dem Knoten, der die Datenbank hostet.
**Die dynamische** Datenmaskierung von Azure SQL ist eine Funktion, die **sensible Informationen schützt, indem sie sie** vor unbefugten Benutzern verbirgt. Anstatt die tatsächlichen Daten zu ändern, maskiert sie dynamisch die angezeigten Daten, sodass sensible Details wie Kreditkartennummern unkenntlich gemacht werden.
#### Sicherheitsmerkmale
Die **dynamische Datenmaskierung** betrifft alle Benutzer, außer denjenigen, die nicht maskiert sind (diese Benutzer müssen angegeben werden) und Administratoren. Sie hat die Konfigurationsoption, die angibt, welche SQL-Benutzer von der dynamischen Datenmaskierung ausgenommen sind, wobei **Administratoren immer ausgeschlossen** sind.
- **Microsoft Defender für SQL**: kann aktiviert werden und bietet Schwachstellenbewertungen und erweiterten Bedrohungsschutz.
- **Ledger**: überprüft kryptografisch die Integrität der Daten und stellt sicher, dass jede Manipulation erkannt wird.
- **Serveridentität**: verwendet systemzugewiesene und benutzerzugewiesene verwaltete Identitäten, um den zentralen Zugriff zu ermöglichen.
- **Verwaltung der transparenten Datenverschlüsselungsschlüssel**: verschlüsselt Datenbanken, Backups und Protokolle im Ruhezustand, ohne dass Änderungen an der Anwendung erforderlich sind. Die Verschlüsselung kann für jede Datenbank aktiviert werden, und wenn sie auf Datenbankebene konfiguriert ist, überschreiben diese Einstellungen die serverseitige Konfiguration.
- **Immer verschlüsselt**: ist eine Suite von erweiterten Datenschutzfunktionen, die das Eigentum an Daten von der Datenverwaltung trennt. Dies stellt sicher, dass Administratoren oder Betreiber mit hohen Berechtigungen nicht auf sensible Daten zugreifen können.
#### Kaufmodelle / Dienststufen
- **vCore-basiert**: Wählen Sie Compute, Speicher und Speicher unabhängig. Für allgemeine Zwecke, geschäftskritisch (mit hoher Resilienz und Leistung für OLTP-Apps) und skaliert bis zu 128 TB Speicher.
- **DTU-basiert**: Bündelt Compute, Speicher und I/O in festen Stufen. Ausgewogene Ressourcen für gängige Aufgaben.
- Standard: Ausgewogene Ressourcen für gängige Aufgaben.
- Premium: Hohe Leistung für anspruchsvolle Workloads.
#### Skalierbare Leistung und Pools
- **Einzelne Datenbanken**: Jede Datenbank ist isoliert und hat ihre eigenen dedizierten Compute-, Speicher- und Speicherressourcen. Ressourcen können dynamisch (nach oben oder unten) ohne Ausfallzeiten skaliert werden (1128 vCores, 32 GB4 TB Speicher und bis zu 128 TB).
- **Elastische Pools**: Teilen Sie Ressourcen über mehrere Datenbanken in einem Pool, um die Effizienz zu maximieren und Kosten zu sparen. Ressourcen können auch dynamisch für den gesamten Pool skaliert werden.
- **Flexibilität der Dienststufen**: Beginnen Sie klein mit einer einzelnen Datenbank in der allgemeinen Zweckstufe. Upgrade auf geschäftskritische oder Hyperscale-Stufen, wenn die Anforderungen wachsen.
- **Skalierungsoptionen**: Dynamische Skalierung oder Autoscaling-Alternativen.
#### Integrierte Überwachung & Optimierung
- **Abfrage-Store**: Verfolgt Leistungsprobleme, identifiziert die größten Ressourcenverbraucher und bietet umsetzbare Empfehlungen.
- **Automatische Optimierung**: Optimiert proaktiv die Leistung mit Funktionen wie automatischer Indizierung und Korrekturen von Abfrageplänen.
- **Telemetrie-Integration**: Unterstützt die Überwachung über Azure Monitor, Event Hubs oder Azure Storage für maßgeschneiderte Einblicke.
#### Notfallwiederherstellung & Verfügbarkeit
- **Automatische Backups**: SQL-Datenbank führt automatisch vollständige, differenzielle und Transaktionsprotokoll-Backups von Datenbanken durch.
- **Punkt-in-Zeit-Wiederherstellung**: Stellen Sie Datenbanken in jeden früheren Zustand innerhalb des Backup-Aufbewahrungszeitraums wieder her.
- **Geo-Redundanz**
- **Failover-Gruppen**: Vereinfacht die Notfallwiederherstellung, indem Datenbanken für automatisches Failover über Regionen gruppiert werden.
**Azure SQL-Zeilenebene-Sicherheit (RLS)** ist eine Funktion, die **steuert, welche Zeilen ein Benutzer anzeigen oder ändern kann**, sodass jeder Benutzer nur die für ihn relevanten Daten sieht. Durch die Erstellung von Sicherheitsrichtlinien mit Filter- oder Blockprädikaten können Organisationen einen feinkörnigen Zugriff auf Datenbankebene durchsetzen.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** ist eine Plattform als Dienst (PaaS) Datenbank-Engine, die nahezu 100% Kompatibilität mit SQL Server bietet und die meisten Verwaltungsaufgaben (z. B. Upgrade, Patchen, Backups, Überwachung) automatisch übernimmt. Es bietet eine Cloud-Lösung für die Migration von On-Premises SQL Server-Datenbanken mit minimalen Änderungen.
**Azure SQL Managed Instances** sind für größere, gesamte SQL Server-Instanz-Umsetzungen. Es bietet nahezu 100% Kompatibilität mit dem neuesten SQL Server vor Ort (Enterprise Edition) Datenbank-Engine, die eine native Implementierung des virtuellen Netzwerks (VNet) bietet, die häufige Sicherheitsbedenken anspricht, und ein Geschäftsmodell, das für lokale SQL Server-Kunden vorteilhaft ist.
#### Dienststufen
### Azure SQL-VMs
- **Allgemeiner Zweck**: Kostenwirksame Option für Anwendungen mit standardmäßigen I/O- und Latenzanforderungen.
- **Geschäftskritisch**: Hochleistungsoption mit niedriger I/O-Latenz für kritische Workloads.
**Azure SQL-VMs** ermöglichen es, **das Betriebssystem** und die SQL Server-Instanz zu **steuern**, da eine VM im VM-Dienst, der den SQL-Server ausführt, erstellt wird.
#### Erweiterte Sicherheitsmerkmale
Wenn eine SQL-VM erstellt wird, ist es möglich, **alle Einstellungen der VM auszuwählen** (wie in der VM-Lektion gezeigt), die den SQL-Server hosten wird.
- Das bedeutet, dass die VM auf einige VNet(s) zugreifen wird, möglicherweise **verwaltete Identitäten angehängt** hat, Datei-Share gemountet haben könnte… was ein **Pivoting vom SQL** zur VM sehr interessant macht.
- Darüber hinaus ist es möglich, eine App-ID und ein Geheimnis zu konfigurieren, um **dem SQL den Zugriff auf einen bestimmten Schlüsselbund** zu ermöglichen, der sensible Informationen enthalten könnte.
* **Bedrohungsschutz**: Erweiteter Bedrohungsschutz warnt vor verdächtigen Aktivitäten und SQL-Injection-Angriffen. Auditing zur Verfolgung und Protokollierung von Datenbankereignissen zur Einhaltung von Vorschriften.
* **Zugriffskontrolle**: Microsoft Entra-Authentifizierung für zentrales Identitätsmanagement. Zeilenebene-Sicherheit und dynamische Datenmaskierung für granulare Zugriffskontrolle.
* **Backups**: Automatisierte und manuelle Backups mit Punkt-in-Zeit-Wiederherstellungsfähigkeit.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** eignet sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft. Es kann verschiedene Maschinen Größen und eine große Auswahl an SQL Server-Versionen und -Editionen haben.
#### Hauptmerkmale
**Automatisiertes Backup**: Planen Sie Backups für SQL-Datenbanken.
**Automatische Patchverwaltung**: Automatisiert die Installation von Windows- und SQL Server-Updates während eines Wartungsfensters.
**Azure Key Vault-Integration**: Konfiguriert automatisch Key Vault für SQL Server VMs.
**Defender für Cloud-Integration**: Anzeigen von Defender für SQL-Empfehlungen im Portal.
**Versions-/Editionen-Flexibilität**: Ändern Sie die SQL Server-Version oder -Edition-Metadaten, ohne die VM neu bereitzustellen.
#### Sicherheitsmerkmale
**Microsoft Defender für SQL**: Sicherheitsinformationen und -warnungen.
**Azure Key Vault-Integration**: Sichere Speicherung von Anmeldeinformationen und Verschlüsselungsschlüsseln.
**Microsoft Entra (Azure AD)**: Authentifizierung und Zugriffskontrolle.
Es ist auch möglich, Dinge wie **automatische SQL-Updates**, **automatische Backups**, **Entra-ID-Authentifizierung** und die meisten Funktionen der anderen SQL-Dienste zu konfigurieren.
## Enumeration
@@ -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}}
Zusätzlich, wenn Sie die Dynamic Data Masking und Row Level-Richtlinien innerhalb der Datenbank auflisten möchten, können Sie abfragen:
```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;
```
### Verbinden und SQL-Abfragen ausführen
Sie könnten eine Verbindungszeichenfolge (die Anmeldeinformationen enthält) aus dem Beispiel [Auflisten einer Az WebApp](az-app-services.md) finden: