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.

Najnowsze aktualizacje są dostępne w informacjach o wersji.

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ć:

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łączenie do grupy 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łączenie do grupy 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 pgcryptousł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;
    

Dane wyjściowe:

- 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));
    

    Dane wyjściowe:

      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.