Справочное руководство по MySQL версии 4.1.1-alpha

       

Параметры команды GRANT


В дополнение к обычной схеме имя пользователя/пароль MySQL может производить проверку атрибутов сертификата X509. Для этого необходимы также все обычные параметры (имя пользователя, пароль, маска IP-адреса, имя базы данных/таблицы).

Существует несколько возможностей ограничить соединения:

  • Если не указано никаких параметров SSL/X509, а имя пользователя и пароль указаны правильно, то разрешены все виды шифрованных и нешифрованных соединений.

  • Параметр REQUIRE SSL позволяет серверу устанавливать только зашифрованные при помощи протокола SSL соединения. Обратите внимание, что этот параметр может быть неприемлемым, если существуют записи ACL, разрешающие не-SSL соединения.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" REQUIRE SSL;

  • REQUIRE X509 означает, что у клиента должен быть действительный сертификат, но мы не требуем наличия определенного сертификата, сертификата определенной фирмы или темы. Единственное ограничение - подпись должна поддаваться проверке при помощи одного из сертификатов бюро сертификации.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" REQUIRE X509;

  • REQUIRE ISSUER "issuer" делает требования по соединению более определенными: теперь клиент должен предоставить действительный сертификат X509, выданный бюро сертификации (CA) "issuer". Использование сертификатов X509 всегда означает применение шифрования, поэтому параметр SSL больше не нужен.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" -> REQUIRE ISSUER "C=FI, ST=Some-State, L=Helsinki, "> O=MySQL Finland AB, CN=Tonu Samuel/Email=tonu@mysql.com";

  • REQUIRE SUBJECT "subject" требует наличия у клиента действительного сертификата X509 с содержащейся в нем темой "subject". Если у клиента есть действительный сертификат, но другой "subject", то соединение не будет установлено.


    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" -> REQUIRE SUBJECT "C=EE, ST=Some-State, L=Tallinn, "> O=MySQL demo client certificate, "> CN=Tonu Samuel/Email=tonu@mysql.com";

  • REQUIRE CIPHER "cipher" требуется для обеспечения достаточно сложных шифра и длины ключа. Протокол SSL сам по себе может быть ненадежным из-за использования старых алгоритмов с короткими ключами шифрования. Воспользовавшись этим параметром, мы можем указать определенный метод шифрования, разрешающий соединение.
    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" -> REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";
    Разрешается также сочетать SUBJECT, ISSUER, CIPHER в REQUIRE, например, так:
    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "goodsecret" -> REQUIRE SUBJECT "C=EE, ST=Some-State, L=Tallinn, "> O=MySQL demo client certificate, "> CN=Tonu Samuel/Email=tonu@mysql.com" -> AND ISSUER "C=FI, ST=Some-State, L=Helsinki, "> O=MySQL Finland AB, CN=Tonu Samuel/Email=tonu@mysql.com" -> AND CIPHER "EDH-RSA-DES-CBC3-SHA";
    Начиная с MySQL 4.0.4, слово AND необязательно в опциях REQUIRE.
    Порядок опций не имеет значения, но ни одна опция не может быть указана дважды.

    Содержание раздела