Ochrona bazy danych i serwera

Ukończone

Uwierzytelnianie i autoryzacja bazy danych to sposób, w jaki tradycyjnie zabezpieczasz bazę danych typu open source. Hostowanie tej bazy danych na platformie Azure daje szansę na zwiększenie tej ochrony.

Jako deweloper bazy danych firmy Adventureworks chcesz poprawić ochronę firm w usłudze Azure Database for PostgreSQL.

W tej lekcji dowiesz się, jaka jest dodatkowa ochrona po przeprowadzeniu migracji lokalnej bazy danych PostgreSQL na platformę Azure.

Ochrona danych

Bazy danych PostgreSQL i MySQL mają własne mechanizmy uwierzytelniania i autoryzacji, które kontrolują, którzy użytkownicy mogą uzyskiwać dostęp do baz danych, oraz uprawnienia, które mają nad elementami w tych bazach danych. Nadal należy zarządzać użytkownikami i uprawnieniami w taki sam sposób, jak przed migracją. Pamiętaj, że możesz używać narzędzi administracyjnych, takich jak pg Administracja i MySQL Workbench, aby nawiązać połączenie z serwerami hostowanymi przez platformę Azure.

Jednak platforma Azure zapewnia dodatkową ochronę serwerów. Ta ochrona działa na trzech poziomach:

  1. Kontroluje dostęp do serwera, filtrując ruch z nieznanych lub niezaufanych źródeł.
  2. Chroni ruch, zapewniając, że nie można go manipulować ani przechwycić, ponieważ przepływa z klienta do serwera i z powrotem.
  3. Chroni sam serwer przed typowymi zagrożeniami zewnętrznymi.

W poniższych sekcjach omówiono te elementy bardziej szczegółowo.

Filtrowanie ruchu przy użyciu reguł zapory

Usługa Azure Database for MySQL lub PostgreSQL działa wewnątrz zapory zarządzanej przez firmę Microsoft. Domyślnie nic nie może przechodzić przez tę zaporę. Reguły zapory umożliwiają włączenie ruchu z wyznaczonych bloków adresów IP zgodnie z opisem w poprzednich modułach. Zaleca się, aby aktywnie przeglądać adresy IP, które mogą wysyłać ruch w częstych odstępach czasu, i usuwać adresy IP dla klientów, którzy nie są już wymagane.

Jeśli korzystasz z innych usług platformy Azure, które muszą używać baz danych, musisz otworzyć zaporę dla tych usług. W witrynie Azure Portal na stronie zabezpieczeń Połączenie ion dla usługi Azure Database for MySQL lub PostgreSQL wybierz ustawienie akcji Zezwalaj na dostęp do usług platformy Azure, aby było włączone.

Image highlighting the Allow access to Azure services action setting in the firewall configuration for Azure Database for MySQL or PostgreSQL

Uwaga

Może upłynąć do pięciu minut, aby wszelkie zmiany wprowadzone w zaporze stały się aktywne.

W niektórych sytuacjach otwarcie serwera dla wszystkich usług platformy Azure może być zbyt nadmierne. Jeśli używasz wersji Ogólnego przeznaczenia lub Zoptymalizowane pod kątem pamięci usługi Azure Database for MySQL lub PostgreSQL, przefiltrujesz ruch na poziomie sieci wirtualnej przy użyciu reguł sieci wirtualnej platformy Azure. Reguła sieci wirtualnej umożliwia zezwalanie na dostęp do serwera ruchu pochodzącego z własnych sieci wirtualnych. Ruch z innych sieci zostanie zablokowany.

Image showing the virtual network rules for Azure Database for MySQL or PostgreSQL

Jeśli musisz wykonać skrypt zadań konserwacji zapory, użyj interfejsu wiersza polecenia platformy Azure. W poniższych przykładach, które dodają, usuwają i wyświetlają reguły zapory, użyj az mysql polecenia, które wykonuje operacje w usłudze Azure Database for MySQL. Jeśli używasz polecenia PostgreSQL, użyj odpowiednich az postgres poleceń — parametry są takie same:

Zezwalaj na dostęp do klientów z zakresu 13.83.152.0 do 13.83.152.15

az mysql server firewall-rule create \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1 \
    --start-ip-address 13.83.152.0 \
    --end-ip-address 13.83.152.15

Wyświetl listę wszystkich reguł zapory

az mysql server firewall-rule list \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name]

Wyświetlanie szczegółów elementu FirewallRule1

az mysql server firewall-rule show \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Usuń regułę FirewallRule1. Klienci w zakresie adresów dla tej reguły będą blokowani dostęp

az mysql server firewall-rule delete \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Aby włączyć dostęp do usług platformy Azure, utwórz regułę zapory z wartością start-ip-address 0.0.0.0i end-ip-address .

Reguły sieci wirtualnej są tworzone i zarządzane w podobny sposób przy użyciu az msysql server vnet-rule poleceń .

Ochrona ruchu przy użyciu protokołu SSL

Ochrona SSL dla usługi Azure Database for MySQL lub PostgreSQL jest domyślnie włączona. Protokół SSL można wyłączyć i ponownie włączyć przy użyciu ustawienia Wymuszaj połączenie SSL na stronie zabezpieczeń Połączenie ion dla usługi Azure Database for MySQL lub PostgreSQL w witrynie Azure Portal:

Image highlighting the Enforce SSL connection setting on the Connection security page for Azure Database for MySQL or PostgreSQL

Ochrona serwera przy użyciu usługi Azure Advanced Threat Protection

Zaawansowana ochrona przed zagrożeniami to dodatkowa warstwa zabezpieczeń zapewniana przez platformę Azure. Usługa Advanced Threat Protection monitoruje dostęp do serwera i wyszukuje wzorce nietypowego lub potencjalnie złośliwego zachowania. Po wykryciu takiego zachowania należy zaplanować wysłanie alertu na określone adresy e-mail.

Wykryte wzorce nietypowych działań obejmują:

  • Dostęp z nieoczekiwanej lub nietypowej lokalizacji.
  • Dostęp z nietypowego centrum danych platformy Azure.
  • Dostęp z aplikacji, która może być szkodliwa, na przykład rozpoznane narzędzie do ataku.
  • Duża liczba nieudanych logowań w krótkim odstępie czasu wskazująca możliwy atak siłowy.

Usługę Advanced Threat Protection można włączyć na stronie Advanced Threat Protection dla usługi w witrynie Azure Portal:

Image showing the Advanced Threat Protection page for Azure Database for MySQL or PostgreSQL

Tworzenie kopii zapasowej i przywracanie serwera

Usługa Azure Database for MySQL lub PostgreSQL automatycznie wykonuje kopię zapasową serwera zgodnie z następującym harmonogramem:

  • Pełna kopia zapasowa jest wykonywana co tydzień z pierwszą pełną kopią zapasową wykonywaną zaraz po utworzeniu serwera.
  • Różnicowa kopia zapasowa jest wykonywana dwa razy dziennie.
  • Kopia zapasowa dziennika transakcji jest wykonywana co pięć minut.

Kopia zapasowa całego serwera jest tworzona. Nie można utworzyć kopii zapasowej poszczególnych baz danych i nie można ręcznie wymusić tworzenia kopii zapasowej.

Ustawianie opcji tworzenia kopii zapasowej

Te kopie zapasowe służą do przywracania do dowolnego punktu w czasie, dla którego zostały zachowane pliki kopii zapasowej. Domyślnie kopie zapasowe są przechowywane przez siedem dni, ale można je przechowywać przez maksymalnie 35 dni. Określasz również sposób przechowywania kopii zapasowych — lokalnie nadmiarowe kopie zapasowe są przechowywane w tym samym regionie co serwer, a kopie zapasowe geograficznie nadmiarowe są kopiowane do centrów danych w innych regionach. Opcja geograficznie nadmiarowa jest dostępna tylko dla serwerów w warstwach cenowych Ogólnego przeznaczenia i Zoptymalizowane pod kątem pamięci. Opcje tworzenia kopii zapasowej można ustawić na stronie Warstwy cenowe serwera w witrynie Azure Portal:

Image showing the backup configuration section of the pricing tiers page for Azure Database for MySQL or PostgreSQL

Przywracanie serwera

Usługa Azure Database for MySQL lub PostgreSQL obsługuje dwa typy operacji przywracania serwera — punkt w czasie i przywracanie geograficzne. W obu przypadkach akcja przywracania tworzy nowy serwer. Oryginalny serwer pozostaje dostępny. Jeśli chcesz, aby aplikacje używały przywróconych danych, należy je ponownie skonfigurować, aby korzystały z nowego serwera. Ponadto należy pamiętać, aby otworzyć zaporę nowego serwera, aby umożliwić klientom i usługom nawiązywanie połączenia.

Ważne

Nie można przywrócić usuniętego serwera. Usunięcie serwera powoduje również usunięcie skojarzonych z nim kopii zapasowych.

Przywracanie do punktu w czasie

Przywracanie do punktu w czasie tworzy nowy serwer przy użyciu kopii zapasowych z oryginalnego serwera i przekazuje serwer do określonego czasu. Operację przywracania należy zainicjować przy użyciu polecenia Przywróć na pasku narzędzi na stronie Przegląd serwera w witrynie Azure Portal. Zostanie wyświetlony monit o nazwę nowego serwera i punkt w czasie.

Image showing the point-in-time restore page for Azure Database for MySQL or PostgreSQL

Interfejs wiersza polecenia platformy Azure obsługuje az mysql/postgres server restorepolecenia, jeśli wolisz wykonywać operacje przywracania z wiersza polecenia. Na przykład:

az mysql server restore \
    --resource-group [resource group name] \
    --name [new Azure Database for MySQL server name] \
    --source-server [original Azure Database for MySQL server name] \
    --restore-point-in-time "2019-10-23T02:10:00+08:00"

Przywracanie geograficzne

Przywracanie geograficzne to całkowite przywrócenie serwera przy użyciu kopii zapasowej przechowywanej w magazynie geograficznie nadmiarowym. Podczas tworzenia nowego serwera przy użyciu witryny Azure Portal należy określić geograficznie nadmiarową kopię zapasową jako źródło danych. Po utworzeniu nowego serwera zostanie on wypełniony bazami danych w tej kopii zapasowej.

Image showing the server details section when creating an Azure Database for MySQL or PostgreSQL server

Interfejs wiersza polecenia platformy Azure udostępnia az mysql/postgres server georestore polecenia do wykonania przywracania geograficznego z wiersza polecenia.

Replikacja geograficznie nadmiarowej kopii zapasowej do innego regionu może potrwać do godziny. Może to spowodować utratę do godziny wartości danych, jeśli musisz wykonać przywracanie geograficzne z innego regionu.