|
|
Наскільки необхідні безпечні з'єднання
|
|
|
Починаючи з MySQL 4 захищені з'єднання можуть здійснюватися за допомогою протоколу SSL (Secure Sockets Layer), який дозволяє зашифрувати обмін даними між клієнтом і сервером і таким чином приховати дані, що пересилаються. Крім того, для надання ідентифікаційної інформації по з'єднаннях SSL може використовуватися протокол Х509. Безпечні з'єднання забезпечують додаткові засоби захисту, але при цьому затрачуються додаткові ресурси центрального процесора, необхідні для виконання операцій шифрування і дешифрування. В даний момент протокол SSL підтримується тільки ОС UNIX.
Для визначення параметрів безпечного з'єднання використовується опція REQUIRE. Для того, щоб попередити, що користувач під'єднується з використанням SSL, не визначаючи при цьому тип безпечного з'єднання, використовується пропозиція REQUIRE SSL:
GRANT ALL ON sampdb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint' REQUIRE SSL;
Для більш точного визначення можна задати умову завдання клієнтом дійсного сертифікату Х509:
GRANT ALL ON sampdb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint' REQUIRE X509;
З метою ще більш повної деталізації пропозиція REQUIRE дозволяє вказати конкретні характеристики сертифікату Х509 або те, що з'єднання шифрується з використанням шифру певного типу. Ці характеристики можна задавати в опції REQUIRE параметрами ISSUER, SUBJECT або CIPHER. (Параметри ISSUER і SUBJECT задають інформацію про організацію, що видала сертифікат). Наприклад, каталог ssl дистрибутива sampdb включає файл сертифікації клієнта, client-сеrt.pern, який можна використовувати при тестуванні SSL-з'єднань. Ці значення сертифікату можуть відображатися таким чином:
% openssl х509 -subject -noout -in client-cert.pem
Issuer=/C=US/ST=WI/L=Madison/0=sampdb/OU=CA/CN=sampdb
subject=/C=US/ST=WI/L=Madison/0=sampdb/OU=client/CN=sampdb
Наступний оператор, GRANT, створює обліковий запис, для якого клієнт повинен надати сертифікат, відповідний обом цим значенням:
GRANT.ALL ON sampdb.* TO 'eladio'@'%.snake.net' IDENTIFIED BY 'flint'
REQUIRE ISSUER '/C=US/ST=WI/L=Madison/0=sampdb/OU=CA/CN=sampdb'
AND SUBJECT '/C=US/ST=WI/L=Madison/0=sampdb/OU=client/CN=sampdb';
Для того, щоб наявним чином відобразити, що захищені з'єднання не потрібні, використовуйте REQUIRE NONE. Параметр NONE з'явився у версії MySQL 4.O.4.
При використанні пропозиції REQUIRE необхідно враховувати наступні нюанси.
- Оператор GRANT, що створює обліковий запис з використанням безпечного з'єднання, тільки накладає обмеження на обліковий запис. Насправді він не забезпечує безпечне підключення клієнта за допомогою цього облікового запису. Для цього СУБД MySQL повинна настроюватися включенням підтримки протоколу SSL. Як це можна зробити, описано в розділі 12, "Резервне копіювання і відновлення баз даних".
- Якщо сервер і клієнтські програми настроєні з підтримкою протоколу SSL, будь-який користувач зможе використовувати безпечні з'єднання. Пропозиція REQUIRE використовується тільки для того, щоб показати, що проводиться безпечне з'єднання.
- Використання опції REQUIRE для облікових записів, які не під'єднуються до серверу через зовнішню мережу, має один недолік. Такі з'єднання не можуть прослуховуватися, тому немає суті робити їх безпечними; крім того, вони створюють додаткове навантаження. Обліковий запис такого типу включає таких користувачів, які під'єднуються тільки через файл роз'єму UNIX, іменований канал, або по ІР-адресі 127.0.0.1. Ці з'єднання обробляються повністю усередині вузла, їх трафік не потрапляє в зовнішню мережу.
|
|
Книга Фріланс на західному ринку
|
|