MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Zabezpieczanie MySQL — korzystanie z uprawnień dostępu do danych w celu bezpiecznej instalacji

Bezpieczeństwo instalacji MySQL to coś, o czym powinien pamiętać każdy administrator bazy danych MySQL. Chociaż omówiliśmy, w jaki sposób należy zadbać o bezpieczeństwo MySQL jako całość (spójrz na niektóre z naszych poprzednich postów, w szczególności z serii zabezpieczeń MySQL, część pierwsza i część druga), nie omawialiśmy konkretnych kwestii związanych z bezpieczeństwem, w tym kwestie związane z uprawnieniami. Robimy to tutaj.

Czym są uprawnienia w MySQL?

Uprawnienia w MySQL można nadawać kontom. Jeśli przyznajesz uprawnienia kont w MySQL, określasz, jakie operacje konto może wykonywać. Uprawnienia można nadawać zarówno bazom danych, jak i obiektom baz danych (tabele, indeksy, widoki itp.). Uprawnienia mogą być również dynamiczne lub statyczne. Uprawnienia statyczne są wbudowane w serwer, podczas gdy uprawnienia dynamiczne można zdefiniować w czasie wykonywania.

Jak korzystać z uprawnień do zabezpieczenia MySQL

Aby korzystać z uprawnień w MySQL, musisz pamiętać:

  • Aby przypisać lub odebrać uprawnienia, musisz mieć użytkownika MySQL. Użytkowników można tworzyć, uruchamiając zapytanie CREATE USER:
     

    CREATE USER ‘demouser’@’localhost’ IDENTIFIED BY ‘password’;

  • Aby przypisać lub odebrać uprawnienia, użyj odpowiednio instrukcji GRANT i REVOKE:
     

    GRANT ALL ON demo_db.* TO ‘demouser’@’localhost’;
    REVOKE INSERT ON *.* FROM ‘demouser’@’localhost’;

  • Możesz zapisać uprawnienia, uruchamiając UPRAWNIENIA FLUSH. Wyświetl je, uruchamiając POKAŻ DOTACJE.

  • Instrukcji GRANT nie można używać do nadawania zarówno uprawnień, jak i ról; oświadczenie musi przyznawać uprawnienia lub role.

Aby zwiększyć bezpieczeństwo instalacji MySQL, rozważ następujące kwestie:

  • Przyznaj swoim użytkownikom tylko uprawnienia niezbędne do wykonywania ich zadań (np. nie używaj GRANT ALL, jeśli to jest nie jest konieczne)

  • Na ogół unikaj uruchamiania MySQL jako root systemu Unix, ponieważ każdy użytkownik z uprawnieniem FILE może spowodować serwer do tworzenia plików jako root.

  • Nie przydzielaj uprawnień FILE użytkownikom, którzy nie są administratorami (patrz wyjaśnienie powyżej)

  • Rozważ uruchomienie mysqld jako zwykły nieuprzywilejowany użytkownik.

  • Nie przydzielaj uprawnień PROCESS ani SUPER użytkownikom, którzy nie są administratorami. Uprawnienie PROCESS umożliwia użytkownikowi przeglądanie wszystkich procesów działających w MySQL. Uprawnienie SUPER umożliwia m.in. zmiany konfiguracji serwera, umożliwia korzystanie z wyciągów CREATE SERVER, ALTER SERVER i DROP SERVER, a także umożliwia korzystanie z wyciągu KILL, który pozwala użytkownikowi zabić wyciągi należące do innych kont. Pamiętaj, że MySQL rezerwuje dodatkowe połączenie dla użytkowników posiadających uprawnienie SUPER. Uprawnienie SUPER pozwala również użytkownikowi kontrolować serwery replikacji.

Postępuj zgodnie z powyższymi radami, a powinieneś być na dobrej drodze do bezpieczniejszej instalacji MySQL. Jeśli jednak używasz nowszej wersji MySQL, jest jeszcze jedna rzecz, o której musisz wiedzieć - MySQL wprowadził role w MySQL 8.0.16.

Role w zabezpieczeniach MySQL

Jeśli nigdy nie słyszałeś o rolach w MySQL, nie martw się. Role są bardzo podobne do uprawnień, dlatego uwzględniliśmy je w tym poście na blogu. W rzeczywistości role są po prostu takie – są zbiorami uprawnień, tj. gdy rola jest przypisywana użytkownikowi, użytkownik otrzymuje wszystkie uprawnienia związane z tą rolą. Role można dodawać i usuwać za pomocą instrukcji CREATE ROLE i DROP ROLE. Aby skorzystać z ról w MySQL, utwórz nazwę roli, nadaj uprawnienia do tej roli, a następnie przypisz ją użytkownikowi w ten sposób:

CREATE ROLE [IF NOT EXISTS] ‘role_1’;
GRANT SELECT ON db_name.* TO user_name;
GRANT role_1 TO [email protected];

Jakie przywileje należy przyznać?

Nadając uprawnienia, postępuj zgodnie z zasadą najmniejszych uprawnień:kontu MySQL należy nadawać tylko uprawnienia wymagane do jego celów. Najczęściej używane uprawnienia to:

  • WSZYSTKIE UPRAWNIENIA, które nadają wszystkie uprawnienia kontu.

  • CREATE nadaje uprawnienia niezbędne do tworzenia baz danych i tabel.

  • DROP przyznaje uprawnienia niezbędne do usuwania baz danych i tabel.

  • DELETE nadaje uprawnienia niezbędne do usuwania wierszy z tabel.

  • INSERT przyznaje uprawnienia niezbędne do wstawiania wierszy do tabel.

  • SELECT nadaje uprawnienia niezbędne do uruchamiania zapytań SELECT.

  • UPDATE nadaje uprawnienia niezbędne do aktualizacji wierszy w tabeli (w celu uruchomienia zapytań UPDATE)

Ogólnie rzecz biorąc, dobrym pomysłem jest unikanie przyznawania wszystkich uprawnień kontu; zamiast tego rozważ przestrzeganie zasady najmniejszych przywilejów. Należy również pamiętać, że przyznanie dodatkowych uprawnień określonemu użytkownikowi nie usuwa uprawnień, które były wcześniej dostępne. Możesz również wyświetlić uprawnienia określonego użytkownika, używając tej składni (zastąp nazwę użytkownika nazwą użytkownika swojego użytkownika):

SHOW GRANTS FOR ‘username’;

Podsumowanie

Mając do czynienia z uprawnieniami w MySQL, pamiętaj, że powinieneś przestrzegać zasady najmniejszych uprawnień (tzn. nadawać tylko niezbędne uprawnienia). Postępowanie zgodnie z radami przedstawionymi na tym blogu powinno pomóc w zwiększeniu bezpieczeństwa instalacji MySQL. Pamiętaj, że Twoje uprawnienia muszą zostać zapisane, aby zaczęły obowiązywać (pomoże Ci w tym instrukcja FLUSH PRIVILEGES), ponadto pamiętaj, że od wersji MySQL 8.0.16 możesz korzystać z ról w MySQL do przypisywania zestawów uprawnień do konkretnego użytkownika.

Mamy nadzieję, że ten wpis na blogu pomógł Ci zabezpieczyć instancje MySQL. Jeśli masz jakieś pytania lub przemyślenia, możesz je skomentować, rozważ również przejrzenie naszej serii zabezpieczeń MySQL (tu i tutaj)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uprość zarządzanie kontami użytkowników dzięki MariaDB MaxScale 2.2 i MariaDB Server 10.3

  2. Funkcja AVG() w MariaDB

  3. Jak DATE_SUB() działa w MariaDB

  4. 3 sposoby na uzyskanie sortowań dostępnych w MariaDB

  5. MariaDB POWER() wyjaśnione