Konfigurowanie zabezpieczeń serwera PostgreSQL z obsługą usługi Azure Arc
W tym dokumencie opisano różne aspekty związane z zabezpieczeniami grupy serwerów:
- Szyfrowanie w spoczynku
- Role postgres i zarządzanie użytkownikami
- Ogólne perspektywy
- Zmienianie hasła użytkownika administracyjnego postgres
- Audit
Uwaga
Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega dodatkowym warunkom użytkowania dla wersji zapoznawczych platformy Microsoft Azure.
Szyfrowanie w spoczynku
Szyfrowanie magazynowane można zaimplementować przez szyfrowanie dysków, na których są przechowywane bazy danych i/lub za pomocą funkcji bazy danych w celu szyfrowania wstawiania lub aktualizowania danych.
Sprzęt: szyfrowanie woluminów hosta z systemem Linux
Zaimplementuj szyfrowanie danych systemowych, aby zabezpieczyć wszystkie dane znajdujące się na dyskach używanych przez konfigurację usług Danych z obsługą usługi Azure Arc. Więcej informacji na temat tego tematu można przeczytać:
- Szyfrowanie danych magazynowanych w systemie Linux w ogóle
- Szyfrowanie dysków za pomocą polecenia LUKS
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) w szczególności. Ponieważ usługi danych z obsługą usługi Azure Arc działają w podanej infrastrukturze fizycznej, są odpowiedzialne za zabezpieczenie infrastruktury.
Oprogramowanie: użyj rozszerzenia PostgreSQL pgcrypto
w grupie serwerów
Oprócz szyfrowania dysków używanych do hostowania konfiguracji usługi Azure Arc można skonfigurować serwer PostgreSQL z obsługą usługi Azure Arc w celu uwidocznienia mechanizmów, których aplikacje mogą używać do szyfrowania danych w bazach danych. pgcrypto
Rozszerzenie jest częścią contrib
rozszerzeń bazy danych Postgres i jest dostępne na serwerze PostgreSQL z obsługą usługi Azure Arc. Szczegółowe informacje o pgcrypto
rozszerzeniu znajdziesz tutaj.
Podsumowując, przy użyciu następujących poleceń włączysz rozszerzenie, utworzysz je i użyjesz go:
pgcrypto
Tworzenie rozszerzenia
Połącz się z grupą serwerów przy użyciu wybranego narzędzia klienckiego i uruchom standardowe zapytanie PostgreSQL:
CREATE EXTENSION pgcrypto;
Szczegółowe informacje na temat nawiązywania połączenia można znaleźć tutaj .
Sprawdź listę rozszerzeń gotowych do użycia w grupie serwerów
Możesz sprawdzić, czy pgcrypto
rozszerzenie jest gotowe do użycia, wyświetlając listę rozszerzeń dostępnych w grupie serwerów.
Połącz się z grupą serwerów przy użyciu wybranego narzędzia klienckiego i uruchom standardowe zapytanie PostgreSQL:
select * from pg_extension;
Powinna zostać wyświetlona pgcrypto
opcja włączenia i utworzenia jej za pomocą poleceń wskazanych powyżej.
Korzystanie z pgcrypto
rozszerzenia
Teraz możesz dostosować kod aplikacji, aby korzystały z dowolnych funkcji oferowanych przez pgcrypto
usługę :
- Ogólne funkcje tworzenia skrótów
- Funkcje tworzenia skrótów haseł
- Funkcje szyfrowania PGP
- Nieprzetworzone funkcje szyfrowania
- Funkcje danych losowych
Na przykład w celu wygenerowania wartości skrótu. Uruchom polecenie:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Zwraca następujący skrót:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
Lub, na przykład:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Zwraca następujący skrót:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
Możesz na przykład przechowywać zaszyfrowane dane, takie jak hasło:
Aplikacja przechowuje wpisy tajne w poniższej tabeli:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Szyfruj swoje hasło podczas tworzenia użytkownika:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
Zwróć uwagę, że hasło jest szyfrowane:
select * from mysecrets;
Wyjście:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Po nawiązaniu połączenia z aplikacją i przekazaniu hasła funkcja wyszukuje ją w mysecrets
tabeli i zwraca nazwę użytkownika, jeśli istnieje dopasowanie hasła dostarczonego do aplikacji i haseł przechowywanych w tabeli. Na przykład:
Przekaż nieprawidłowe hasło:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Wyjście
USERname --------- (0 rows)
Przekaż poprawne hasło:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Wyjście:
USERname --------- Me (1 row)
W tym małym przykładzie pokazano, że można szyfrować dane magazynowane (przechowywać zaszyfrowane dane) na serwerze PostgreSQL z obsługą usługi Azure Arc przy użyciu rozszerzenia Postgres pgcrypto
, a aplikacje mogą używać funkcji oferowanych przez pgcrypto
program do manipulowania zaszyfrowanymi danymi.
Role postgres i zarządzanie użytkownikami
Ogólne perspektywy
Aby skonfigurować role i użytkowników na serwerze PostgreSQL z obsługą usługi Azure Arc, użyj standardowego sposobu postgres do zarządzania rolami i użytkownikami. Aby uzyskać więcej informacji, przeczytaj tutaj.
Audit
W przypadku scenariuszy inspekcji skonfiguruj grupę serwerów tak, aby korzystała z pgaudit
rozszerzeń bazy danych Postgres. Aby uzyskać więcej informacji na temat pgaudit
tego tematu, zobacz pgAudit
Projekt GitHub. Aby włączyć pgaudit
rozszerzenie w grupie serwerów, przeczytaj Używanie rozszerzeń PostgreSQL.
Korzystanie z połączenia SSL
Protokół SSL jest wymagany w przypadku połączeń klienckich. W parametry połączenia parametr trybu SSL nie powinien być wyłączony. Parametry połączenia formularza.