Beveiliging configureren voor uw PostgreSQL-server met Azure Arc
In dit document worden verschillende aspecten beschreven met betrekking tot de beveiliging van uw servergroep:
- Versleuteling 'at rest'
- Postgres-rollen en gebruikersbeheer
- Algemene perspectieven
- Het wachtwoord van de postgres-gebruiker met beheerdersrechten wijzigen
- Audit
Notitie
Omdat het om een preview-functie gaat, is de technologie die in dit artikel wordt behandeld onderhevig aan de Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.
De meest recente updates zijn beschikbaar in de releaseopmerkingen.
Versleuteling 'at rest'
U kunt versleuteling in rust implementeren door de schijven waarop u uw databases opslaat en/of door databasefuncties te gebruiken om de gegevens die u invoegt of bijwerkt, te versleutelen.
Hardware: Linux-hostvolumeversleuteling
Implementeer systeemgegevensversleuteling om gegevens te beveiligen die zich op de schijven bevinden die worden gebruikt door de installatie van Azure Arc-gegevensservices. Meer informatie over dit onderwerp vindt u:
- Data-at-rest versleuteling in Linux in het algemeen
- Schijfversleuteling met LUKS-opdracht
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) specifiek. Omdat Data Services met Azure Arc wordt uitgevoerd op de fysieke infrastructuur die u levert, bent u verantwoordelijk voor het beveiligen van de infrastructuur.
Software: Gebruik de PostgreSQL-extensie pgcrypto
in uw servergroep
Naast het versleutelen van de schijven die worden gebruikt voor het hosten van uw Azure Arc-installatie, kunt u uw PostgreSQL-server met Azure Arc configureren om mechanismen beschikbaar te stellen die uw toepassingen kunnen gebruiken om gegevens in uw database(s) te versleutelen. De pgcrypto
extensie maakt deel uit van de contrib
extensies van Postgres en is beschikbaar op uw PostgreSQL-server met Azure Arc. Hier vindt u meer informatie over de pgcrypto
extensie.
Kortom, met de volgende opdrachten schakelt u de extensie in, maakt u deze en gebruikt u deze:
pgcrypto
De extensie maken
Maak verbinding met uw servergroep met het clienthulpprogramma van uw keuze en voer de standaard PostgreSQL-query uit:
CREATE EXTENSION pgcrypto;
Controleer de lijst met extensies die klaar zijn voor gebruik in uw servergroep
U kunt controleren of de pgcrypto
extensie gereed is voor gebruik door de extensies weer te geven die beschikbaar zijn in uw servergroep.
Maak verbinding met uw servergroep met het clienthulpprogramma van uw keuze en voer de standaard PostgreSQL-query uit:
select * from pg_extension;
U zou moeten zien pgcrypto
of u deze hebt ingeschakeld en gemaakt met de opdrachten die hierboven zijn aangegeven.
pgcrypto
De extensie gebruiken
U kunt nu de code van uw toepassingen aanpassen zodat ze gebruikmaken van een van de functies die worden aangeboden door pgcrypto
:
- Algemene hash-functies
- Functies voor wachtwoord-hashing
- PGP-versleutelingsfuncties
- Onbewerkte versleutelingsfuncties
- Functies voor willekeurige gegevens
Bijvoorbeeld om hashwaarden te genereren. Voer de opdracht uit:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Retourneert de volgende hash:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
Of bijvoorbeeld:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Retourneert de volgende hash:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
Of bijvoorbeeld om versleutelde gegevens op te slaan, zoals een wachtwoord:
In een toepassing worden geheimen opgeslagen in de volgende tabel:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Hun wachtwoord versleutelen bij het maken van een gebruiker:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
U ziet dat het wachtwoord is versleuteld:
select * from mysecrets;
Uitvoer:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Wanneer u verbinding maakt met de toepassing en een wachtwoord doorgeeft, wordt in de mysecrets
tabel gezocht en wordt de naam van de gebruiker geretourneerd als er een overeenkomst is tussen het wachtwoord dat is opgegeven voor de toepassing en de wachtwoorden die in de tabel zijn opgeslagen. Voorbeeld:
Geef het verkeerde wachtwoord door:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Uitvoer
USERname --------- (0 rows)
Geef het juiste wachtwoord door:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Uitvoer:
USERname --------- Me (1 row)
In dit kleine voorbeeld ziet u dat u data-at-rest kunt versleutelen (versleutelde gegevens opslaan) op een PostgreSQL-server met Azure Arc met behulp van de Postgres-extensie pgcrypto
en dat uw toepassingen functies kunnen gebruiken die worden aangeboden om pgcrypto
deze versleutelde gegevens te manipuleren.
Postgres-rollen en gebruikersbeheer
Algemene perspectieven
Als u rollen en gebruikers in uw PostgreSQL-server met Azure Arc wilt configureren, gebruikt u de standaard Postgres-manier om rollen en gebruikers te beheren. Lees hier voor meer informatie.
Audit
Voor controlescenario's configureert u uw servergroep voor het gebruik van de pgaudit
extensies van Postgres. Zie Het GitHub-project voor meer informatie pgaudit
pgAudit
. Als u de pgaudit
extensie in uw servergroep wilt inschakelen, leest u PostgreSQL-extensies gebruiken.
SSL-verbinding gebruiken
SSL is vereist voor clientverbindingen. In verbindingsreeks mag de parameter SSL-modus niet worden uitgeschakeld. Formulier verbindingsreeks s.