MySQL puede comprobar los atributos de un certificado X509
además de la autentificación usual que se basa en nombre de
usuario y clave. Para especificar las opciones relacionadas
con SSL para una cuenta MySQL, utilice la clausula
REQUIRE
de la sentencia
GRANT
. Consulte Sección 13.5.1.3, “Sintaxis de GRANT
y REVOKE
”.
Hay diferentes maneras de limitar los tipos de conexión para una cuenta:
Si una cuenta no tiene requerimientos de SSL o X509, las conexiones sin cifrar se permiten siempre que el nombre de usuario y la clave sean válidas. De cualquier manera, se pueden también utilizar conexiones cifradas, si el cliente tiene los certificados y archivos de claves apropiados.
La opción REQUIRE SSL
limita al
servidor para que acepte únicamente conexiones cifradas
SSL para la cuenta. Tenga en cuenta que esta opción puede
pasarse por alto si hay algún registro ACL que permite
conexiones no-SSL.
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' -> IDENTIFIED BY 'goodsecret' REQUIRE SSL;
REQUIRE X509
significa que el cliente
debe tener un certificado pero que el certificado exacto,
entidad certificadora y sujeto no importan. El único
requerimiento es que debería ser posible verificar su
firma con uno de los certificados CA.
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' -> IDENTIFIED BY 'goodsecret' REQUIRE X509;
REQUIRE ISSUER 'issuer'
coloca una
restricción en la conexión mediante la cual el cliente
debe presentar un certificado X509 válido, emitido por la
CA 'issuer'
. Si el cliente presenta un
certificado que es valido pero tiene un emisor diferente,
el servidor rechaza la conexión. La utilización de
certificados X509 siempre implica cifrado, así que la
opción SSL
no es necesaria.
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@example.com';
Nótese que el valor de ISSUER
debe
introducirse como una única cadena de caracteres.
REQUIRE SUBJECT 'subject'
establece la
restricción a los intentos de conexión de que el cliente
debe presentar un certificado X509 válido con sujeto
'subject'
. Si el cliente presenta un
certificado que, aunque válido, tiene un sujeto
diferente, el servidor rechaza la conexión.
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@example.com';
Nótese que el valor de SUBJECT
debe
ser introducido como una única cadena de caracteres.
REQUIRE CIPHER 'cipher'
es necesario
para asegurar que se utilizan longitudes de cifra y claves
suficientemente fuertes. El protocolo SSL por sí mismo
puede ser débil si se utilizan viejos algorimots con
claves de cifrado cortas. Utilizando esta opción, podemos
pedir un método exacto de cifrado para permitir una
conexión.
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' -> IDENTIFIED BY 'goodsecret' -> REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA';
Las opciones SUBJECT
,
ISSUER
, y CIPHER
pueden
combinarse en la sentencia REQUIRE
de la
siguiente manera:
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@example.com' -> AND ISSUER '/C=FI/ST=Some-State/L=Helsinki/ O=MySQL Finland AB/CN=Tonu Samuel/Email=tonu@example.com' -> AND CIPHER 'EDH-RSA-DES-CBC3-SHA';
Nótese que los valores de SUBJECT
e
ISSUER
deben ser introducidos cada uno como
una única cadena de caracteres.
En MySQL 5.0, la palabra clave AND
es
opcional entre las opciones de REQUIRE
.
El orden de las opciones no importa, pero ninguna opción puede ser especificada dos veces.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.