Bezpieczeństwo na poziomie danych
Bezpieczeństwo danych w bazie MySQL jest kluczowe, aby chronić informacje przed nieuprawnionym dostępem, wyciekiem lub manipulacją. Możemy zabezpieczać dane na różne sposoby: szyfrując je w spoczynku, podczas transmisji, maskując dane oraz zarządzając kluczami szyfrowania. Poniżej opisano te techniki oraz przykłady ich zastosowania.
Szyfrowanie Danych w Spoczynku
Szyfrowanie danych w spoczynku oznacza zabezpieczanie danych przechowywanych na dysku, na przykład w tabelach lub plikach dziennika. MySQL oferuje różne metody szyfrowania danych.
Transparent Data Encryption (TDE)
Transparent Data Encryption (TDE) umożliwia szyfrowanie danych bez konieczności modyfikowania aplikacji. Dzięki TDE dane w tabelach lub na dyskach są zabezpieczone nawet wtedy, gdy ktoś uzyska fizyczny dostęp do serwera.
Przykład: Szyfrowanie tabeli w MySQL przy użyciu TDE:
ALTER TABLE nazwa_tabeli ENCRYPTION='Y';
Szyfrowanie Plików Dziennika
MySQL pozwala również szyfrować pliki dziennika, takie jak dzienniki binarne oraz dzienniki transakcji, aby zabezpieczyć dane przed nieautoryzowanym dostępem.
Przykład: Włączenie szyfrowania plików dziennika binarnego w pliku konfiguracyjnym my.cnf
:
[mysqld]
binlog_encryption = ON
Szyfrowanie Danych w Tabelach
MySQL umożliwia szyfrowanie danych w tabelach za pomocą funkcji AES_ENCRYPT()
oraz AES_DECRYPT()
, co pozwala zaszyfrować konkretne kolumny.
Przykład: Szyfrowanie i deszyfrowanie wartości w kolumnie:
INSERT INTO users (username, password)
VALUES ('uzytkownik', AES_ENCRYPT('haslo', 'klucz'));
SELECT AES_DECRYPT(password, 'klucz') FROM users WHERE username = 'uzytkownik';
Szyfrowanie Danych Podczas Transmisji
Szyfrowanie danych podczas transmisji zapewnia ochronę informacji przesyłanych między klientem a serwerem, aby nie mogły zostać przechwycone przez nieuprawnione osoby.
Konfiguracja SSL/TLS w MySQL
MySQL umożliwia konfigurację połączeń z użyciem protokołów SSL/TLS, co zabezpiecza przesyłane dane.
Przykład: Konfiguracja serwera MySQL do używania SSL/TLS:
[mysqld]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
Wymuszanie Szyfrowanych Połączeń
Możemy wymusić, aby użytkownicy łączyli się z serwerem tylko przez szyfrowane połączenia.
Przykład: Tworzenie użytkownika, który może łączyć się tylko przez SSL:
CREATE USER 'bezpieczny_uzytkownik'@'localhost' REQUIRE SSL;
Maskowanie Danych w MySQL
Maskowanie danych to technika, która ukrywa wrażliwe informacje przed osobami, które nie powinny mieć do nich dostępu. MySQL nie oferuje wbudowanej funkcji maskowania danych, ale można to zrealizować za pomocą widoków lub funkcji.
Maskowanie Danych za Pomocą Widoków
Widoki w MySQL mogą być używane do maskowania danych poprzez ograniczenie dostępu do wybranych kolumn lub zmodyfikowanie sposobu ich wyświetlania.
Przykład: Maskowanie numeru karty kredytowej:
CREATE VIEW MaskowaneDane AS
SELECT id, CONCAT('****-****-****-', SUBSTRING(numer_karty, 13, 4)) AS numer_karty
FROM Klienci;
Maskowanie za Pomocą Funkcji i Procedur
Możemy również stworzyć funkcje lub procedury, które maskują dane dynamicznie, pokazując tylko część informacji, np. numer telefonu.
Przykład: Funkcja maskująca numer telefonu:
CREATE FUNCTION MaskujNumerTelefonu(numer VARCHAR(12))
RETURNS VARCHAR(12)
DETERMINISTIC
BEGIN
RETURN CONCAT('***-***-', SUBSTRING(numer, 9, 4));
END;
Zarządzanie Kluczami Szyfrowania
Klucze szyfrowania odgrywają kluczową rolę w zabezpieczaniu danych i muszą być przechowywane w sposób bezpieczny, aby zapobiec ich kradzieży lub nieautoryzowanemu użyciu.
Przechowywanie Kluczy Szyfrowania
Klucze szyfrowania w MySQL mogą być używane do szyfrowania tabel przy użyciu TDE lub funkcji takich jak AES_ENCRYPT()
. Zaleca się przechowywanie kluczy w bezpiecznych lokalizacjach, takich jak narzędzia do zarządzania tajemnicami.
Przykład: Przechowywanie kluczy w narzędziu do zarządzania tajemnicami, takim jak HashiCorp Vault:
curl --header "X-Vault-Token: " --request POST \
--data '{"data": {"key": "my-secret-key"}}' \
http://127.0.0.1:8200/v1/secret/data/myapp
HashiCorp Vault pozwala na bezpieczne przechowywanie kluczy i innych tajemnic, co minimalizuje ryzyko nieautoryzowanego dostępu.
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |