Configurare la sicurezza per il server PostgreSQL abilitato per Azure Arc
Questo documento descrive vari aspetti correlati alla sicurezza del gruppo di server:
- Crittografia di dati inattivi
- Gestione di ruoli e utenti Postgres
- Prospettive generali
- Modificare la password dell'utente amministratore di Postgres
- Controllo
Nota
In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.
Gli aggiornamenti più recenti sono disponibili nelle note sulla versione.
Crittografia di dati inattivi
È possibile implementare la crittografia dei dati inattivi crittografando i dischi in cui si archiviano i database e/o usando funzioni di database per crittografare i dati inseriti o aggiornati.
Hardware: crittografia del volume dell'host Linux
Implementare la crittografia dei dati di sistema per proteggere tutti i dati che risiedono nei dischi usati dalla configurazione di Servizi dati abilitati per Azure Arc. Per altre informazioni su questo argomento, vedere:
- Crittografia dei dati inattivi in Linux in generale
- Crittografia del disco con il comando
cryptsetup
LUKS (Linux) (https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) in particolare. Poiché i Servizi dati abilitati per Azure Arc vengono eseguiti nell'infrastruttura fisica che si fornisce, si è responsabili della protezione dell'infrastruttura.
Software: usare l'estensione pgcrypto
PostgreSQL nel gruppo di server
Oltre a crittografare i dischi usati per ospitare la configurazione di Azure Arc, è possibile configurare il server PostgreSQL abilitato per Azure Arc per esporre meccanismi che le applicazioni possono usare per crittografare i dati nei database. L'estensione pgcrypto
fa parte delle estensioni contrib
di Postgres ed è disponibile nel server PostgreSQL abilitato per Azure Arc. Per informazioni dettagliate sull'estensione pgcrypto
, vedere qui.
In sintesi, con i comandi seguenti, si abilita, si crea e si usa l'estensione:
Creare l’estensione pgcrypto
Connettersi al gruppo di server con lo strumento client preferito ed eseguire la query PostgreSQL standard:
CREATE EXTENSION pgcrypto;
Trovare i dettagli qui su come connettersi.
Verificare l'elenco delle estensioni pronte per l'uso nel gruppo di server
È possibile verificare che l'estensione pgcrypto
sia pronta per l'uso elencando le estensioni disponibili nel gruppo di server.
Connettersi al gruppo di server con lo strumento client preferito ed eseguire la query PostgreSQL standard:
select * from pg_extension;
Verrà visualizzato pgcrypto
se è stato abilitato e creato con i comandi indicati in precedenza.
Usare l'estensione pgcrypto
È ora possibile modificare il codice delle applicazioni in modo che usino una delle funzioni offerte da pgcrypto
:
- Funzioni di hashing generali
- Funzioni di hashing della password
- Funzioni di crittografia PGP
- Funzioni di crittografia non elaborate
- Funzioni dati casuali
Ad esempio, per generare valori hash. Eseguire il comando :
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Restituisce l'hash seguente:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
O ad esempio:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Restituisce l'hash seguente:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
In alternativa, ad esempio, per archiviare dati crittografati come una password:
Un'applicazione archivia i segreti nella seguente tabella:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Crittografare la password durante la creazione di un utente:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
Notare che la password è crittografata:
select * from mysecrets;
Output:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Quando ci si connette all'applicazione e si passa una password, cerca nella tabella mysecrets
e restituisce il nome dell'utente se esiste una corrispondenza tra la password fornita all'applicazione e le password archiviate nella tabella. Ad esempio:
Passare la password errata:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Output
USERname --------- (0 rows)
Passare la password corretta:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Output:
USERname --------- Me (1 row)
Questo piccolo esempio dimostra che è possibile crittografare i dati inattivi (archiviare dati crittografati) nel server PostgreSQL abilitato per Azure Arc usando l'estensione Postgres pgcrypto
e le applicazioni possono usare funzioni offerte da pgcrypto
per modificare questi dati crittografati.
Gestione di ruoli e utenti Postgres
Prospettive generali
Per configurare ruoli e utenti nel server PostgreSQL abilitato per Azure Arc, usare il modo Postgres standard per gestire ruoli e utenti. Per altre dettagli, vedere qui.
Controllo
Per gli scenari di controllo, configurare il gruppo di server per l'uso delle estensioni pgaudit
di Postgres. Per altri dettagli sulle pgaudit
vedere progetto GitHub pgAudit
. Per abilitare l'estensione pgaudit
nel gruppo di server, leggere Usare le estensioni PostgreSQL.
Usare la connessione SSL
SSL è obbligatorio per le connessioni client. Nella stringa di connessione, il parametro della modalità SSL non deve essere disabilitato. Formare le stringhe di connessione.
Contenuto correlato
- Vedere l’estensione
pgcrypto
- Vedere Usare le estensioni di PostgreSQL