mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 23:39:52 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']
This commit is contained in:
@@ -8,10 +8,10 @@ Azure SQL è una famiglia di prodotti gestiti, sicuri e intelligenti che utilizz
|
||||
|
||||
Azure SQL consiste in quattro offerte principali:
|
||||
|
||||
1. **Azure SQL Server**: Un server è necessario per il **deployment e la gestione** dei database SQL Server.
|
||||
1. **Azure SQL Server**: È necessario un server per il **deployment e la gestione** dei database SQL Server.
|
||||
2. **Azure SQL Database**: Questo è un **servizio di database completamente gestito**, che ti consente di ospitare database individuali nel cloud Azure.
|
||||
3. **Azure SQL Managed Instance**: Questo è per implementazioni su larga scala, a livello di intera istanza SQL Server.
|
||||
4. **Azure SQL Server su Azure VMs**: Questo è il migliore per architetture in cui desideri **controllo sul sistema operativo** e sull'istanza SQL Server.
|
||||
4. **Azure SQL Server su Azure VMs**: Questo è migliore per architetture in cui desideri **controllo sul sistema operativo** e sull'istanza SQL Server.
|
||||
|
||||
### Caratteristiche di Sicurezza di SQL Server
|
||||
|
||||
@@ -20,7 +20,7 @@ Azure SQL consiste in quattro offerte principali:
|
||||
- Endpoint pubblico (può limitare l'accesso a reti specifiche).
|
||||
- Endpoint privati.
|
||||
- È anche possibile limitare le connessioni in base ai nomi di dominio.
|
||||
- È anche possibile consentire ai servizi Azure di accedervi (come per utilizzare l'editor di query nel portale o per consentire a una VM Azure di connettersi).
|
||||
- È anche possibile consentire ai servizi Azure di accedervi (come utilizzare l'editor di query nel portale o consentire a una VM Azure di connettersi).
|
||||
|
||||
**Metodi di autenticazione:**
|
||||
|
||||
@@ -28,24 +28,49 @@ Azure SQL consiste in quattro offerte principali:
|
||||
- Autenticazione **sia SQL che Microsoft Entra**: Autenticazione SQL tradizionale con nome utente e password insieme a Microsoft Entra.
|
||||
- Autenticazione **solo SQL**: Consente l'accesso solo tramite utenti del database.
|
||||
|
||||
Nota che se è consentita qualsiasi autenticazione SQL, è necessario indicare un utente admin (nome utente + password) e se è selezionata l'autenticazione Entra ID è anche necessario indicare almeno un principio con accesso admin.
|
||||
Nota che se è consentita qualsiasi autenticazione SQL, è necessario indicare un utente admin (nome utente + password) e se viene selezionata l'autenticazione Entra ID è anche necessario indicare almeno un principio con accesso admin.
|
||||
|
||||
**Crittografia:**
|
||||
|
||||
- Si chiama “Crittografia dei dati trasparente” e crittografa database, backup e log a riposo.
|
||||
- Come sempre, viene utilizzata per impostazione predefinita una chiave gestita da Azure, ma potrebbe essere utilizzata anche una chiave di crittografia gestita dal cliente (CMEK).
|
||||
|
||||
**Identità Gestite:**
|
||||
|
||||
- È possibile assegnare identità gestite di sistema e utente.
|
||||
- Utilizzate per accedere alla chiave di crittografia (se viene utilizzata una CMEK) e ad altri servizi dai database.
|
||||
- Per alcuni esempi dei servizi Azure che possono essere accessibili dal database, controlla [questa pagina della documentazione](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
|
||||
- Se viene assegnata più di una UMI, è possibile indicare quella predefinita da utilizzare.
|
||||
- È possibile configurare un'identità client federata per l'accesso cross-tenant.
|
||||
|
||||
Alcuni comandi per accedere alle informazioni all'interno di uno storage blob da un database SQL:
|
||||
```sql
|
||||
-- Create a credential for the managed identity
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
WITH IDENTITY = 'Managed Identity';
|
||||
GO
|
||||
|
||||
-- Create an external data source pointing to the blob storage to access
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
WITH (
|
||||
TYPE = BLOB_STORAGE,
|
||||
LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer',
|
||||
CREDENTIAL = ManagedIdentityCredential
|
||||
);
|
||||
GO
|
||||
|
||||
-- Read a file from ths storage and return it
|
||||
SELECT *
|
||||
FROM OPENROWSET(
|
||||
BULK 'message.txt',
|
||||
DATA_SOURCE = 'ManagedIdentity',
|
||||
SINGLE_CLOB
|
||||
) AS DataFile;
|
||||
GO
|
||||
```
|
||||
**Microsoft Defender:**
|
||||
|
||||
- Utile per “mitigare potenziali vulnerabilità del database e rilevare attività anomale”.
|
||||
- Parleremo di Defender in una lezione a parte (può essere abilitato in diversi altri servizi Azure).
|
||||
- Utile per “mitigare potenziali vulnerabilità del database e rilevare attività anomale”
|
||||
- Parleremo di Defender in una lezione a parte (può essere abilitato in diversi altri servizi Azure)
|
||||
|
||||
**Backup:**
|
||||
- La frequenza dei backup è gestita nelle politiche di retention.
|
||||
@@ -55,7 +80,7 @@ Nota che se è consentita qualsiasi autenticazione SQL, è necessario indicare u
|
||||
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** è una **piattaforma di database completamente gestita come servizio (PaaS)** che fornisce soluzioni di database relazionali scalabili e sicure. È costruita sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendola una scelta popolare per le applicazioni basate su cloud.
|
||||
**Azure SQL Database** è una **piattaforma di database completamente gestita come servizio (PaaS)** che fornisce soluzioni di database relazionali scalabili e sicure. È costruita sulle ultime tecnologie di SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendola una scelta popolare per le applicazioni basate su cloud.
|
||||
|
||||
Per creare un database SQL è necessario indicare il server SQL dove sarà ospitato.
|
||||
|
||||
@@ -72,23 +97,23 @@ Per creare un database SQL è necessario indicare il server SQL dove sarà ospit
|
||||
- **Ridondanza dei dati:** Le opzioni sono locale, zona, Geo o Geo-Zona ridondante.
|
||||
- **Registro:** Verifica crittograficamente l'integrità dei dati, assicurando che qualsiasi manomissione venga rilevata. Utile per finanziarie, mediche e qualsiasi organizzazione che gestisce dati sensibili.
|
||||
|
||||
Un database SQL potrebbe far parte di un **pool elastico**. I pool elastici sono una soluzione economica per gestire più database condividendo risorse di calcolo configurabili (eDTUs) e di archiviazione tra di essi, con prezzi basati esclusivamente sulle risorse allocate piuttosto che sul numero di database.
|
||||
Un database SQL potrebbe far parte di un **elastic Pool**. Gli elastic pool sono una soluzione economica per gestire più database condividendo risorse di calcolo (eDTUs) e di archiviazione configurabili tra di loro, con prezzi basati esclusivamente sulle risorse allocate piuttosto che sul numero di database.
|
||||
|
||||
#### Sicurezza a Livello di Colonna (Mascheramento) e Sicurezza a Livello di Riga di Azure SQL
|
||||
|
||||
Il **mascheramento dei dati dinamico** di Azure SQL è una funzionalità che aiuta a **proteggere le informazioni sensibili nascondendole** agli utenti non autorizzati. Invece di alterare i dati reali, maschera dinamicamente i dati visualizzati, assicurando che dettagli sensibili come i numeri di carta di credito siano oscurati.
|
||||
Il **mascheramento dei dati dinamico** di Azure SQL è una funzionalità che aiuta a **proteggere informazioni sensibili nascondendole** agli utenti non autorizzati. Invece di alterare i dati reali, maschera dinamicamente i dati visualizzati, assicurando che dettagli sensibili come i numeri di carta di credito siano oscurati.
|
||||
|
||||
Il **Mascheramento dei Dati Dinamico** influisce su tutti gli utenti tranne quelli che sono non mascherati (questi utenti devono essere indicati) e sugli amministratori. Ha l'opzione di configurazione che specifica quali utenti SQL sono esenti dal mascheramento dei dati dinamico, con **amministratori sempre esclusi**.
|
||||
Il **Mascheramento dei Dati Dinamico** si applica a tutti gli utenti tranne a quelli che sono non mascherati (questi utenti devono essere indicati) e agli amministratori. Ha l'opzione di configurazione che specifica quali utenti SQL sono esenti dal mascheramento dinamico dei dati, con **amministratori sempre esclusi**.
|
||||
|
||||
La **Sicurezza a Livello di Riga (RLS)** di Azure SQL è una funzionalità che **controlla quali righe un utente può visualizzare o modificare**, assicurando che ogni utente veda solo i dati a lui pertinenti. Creando politiche di sicurezza con filtri o predicati di blocco, le organizzazioni possono applicare un accesso dettagliato a livello di database.
|
||||
La **Sicurezza a Livello di Riga di Azure SQL (RLS)** è una funzionalità che **controlla quali righe un utente può visualizzare o modificare**, assicurando che ogni utente veda solo i dati rilevanti per lui. Creando politiche di sicurezza con filtri o predicati di blocco, le organizzazioni possono applicare un accesso dettagliato a livello di database.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
Le **Azure SQL Managed Instances** sono per implementazioni su larga scala, a livello di intera istanza SQL Server. Forniscono quasi il 100% di compatibilità con l'ultima versione di SQL Server on-premises (Enterprise Edition) Database Engine, che offre un'implementazione nativa della rete virtuale (VNet) che affronta le comuni preoccupazioni di sicurezza, e un modello di business favorevole per i clienti SQL Server on-premises.
|
||||
Le **Azure SQL Managed Instances** sono per distribuzioni su larga scala, a livello di intera istanza di SQL Server. Forniscono una compatibilità quasi totale con l'ultima versione del motore di database SQL Server on-premises (Enterprise Edition), che offre un'implementazione nativa della rete virtuale (VNet) che affronta comuni preoccupazioni di sicurezza, e un modello di business favorevole per i clienti di SQL Server on-premises.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
Le **Azure SQL Virtual Machines** consentono di **controllare il sistema operativo** e l'istanza SQL Server, poiché una VM verrà avviata nel servizio VM che esegue il server SQL.
|
||||
Le **Azure SQL Virtual Machines** consentono di **controllare il sistema operativo** e l'istanza di SQL Server, poiché una VM verrà avviata nel servizio VM che esegue il server SQL.
|
||||
|
||||
Quando viene creata una macchina virtuale SQL, è possibile **selezionare tutte le impostazioni della VM** (come mostrato nella lezione sulla VM) che ospiterà il server SQL.
|
||||
- Questo significa che la VM accederà a alcune VNet, potrebbe avere **Identità Gestite collegate** ad essa, potrebbe avere condivisioni di file montate… rendendo un **pivoting dal SQL** alla VM molto interessante.
|
||||
@@ -305,7 +330,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
### Persistenza
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-sql-persistance.md
|
||||
../az-persistence/az-sql-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user