{"id":911,"date":"2016-01-30T10:18:28","date_gmt":"2016-01-30T10:18:28","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/?p=911"},"modified":"2016-01-30T10:18:31","modified_gmt":"2016-01-30T10:18:31","slug":"y-si-en-vez-de-ldap-empleamos-mysql","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2016\/01\/30\/y-si-en-vez-de-ldap-empleamos-mysql\/","title":{"rendered":"\u00bf Y si en vez de LDAP empleamos MySQL &#8230;"},"content":{"rendered":"<p>&#8230; como base de datos de usuarios ? \u00bf Eh ? \u00bf Y PAM ?<\/p>\n<p><!--more--><\/p>\n<p>Le he estado dando vueltas al esquema que dise\u00f1\u00e9 en <a href=\"http:\/\/esferas.org\/msqlu\/2016\/01\/29\/reemplazar-google-apps\/\">esta entrada<\/a> y me he dado cuenta de que puede tener un problema de percepci\u00f3n para el usuario. Concretamente aqu\u00e9l que hace referencia a sus datos b\u00e1sicos y c\u00f3mo gestionarlos.<\/p>\n<p>El esquema del que hablo emplea LDAP como base de datos de usuarios debido a qu<a href=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1.png\" rel=\"attachment wp-att-903\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-903 alignleft\" src=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1-212x300.png\" alt=\"Servicios\" width=\"212\" height=\"300\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1-212x300.png 212w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1-768x1086.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1-724x1024.png 724w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-1.png 1000w\" sizes=\"auto, (max-width: 212px) 100vw, 212px\" \/><\/a>e es muy sencilla de usar por programas de terceros (casi todos los que he visto incluyen soporte LDAP)\u00a0 y a que puede incluir relaciones uno a muchos, como varias direcciones de correo electr\u00f3nico para un usuario, en un mismo registro.<\/p>\n<p>El problema de coherencia del que hablo es que el usuario se va a encontrar con dos grandes bloques de servicios separados entre s\u00ed: el correo y la nube, y en ninguno de los dos un punto de acceso claro a su perfil. \u00bf D\u00f3nde cambia su contrase\u00f1a ? \u00bf Y su nombre completo ? La opci\u00f3n m\u00e1s c\u00f3moda parece ser el panel de control que incluye <em>ownCloud<\/em> pero no he encontrado un mecanismo sencillo para que programas externos como el servidor de correo (exim4) lo empleen para identificar a los usuarios (por las bravas se puede consultar y modificar su base de datos pero pensar en mantener algo as\u00ed me estremece).<\/p>\n<p>Esto es, no veo c\u00f3mo puede el resto de los programas presentes y futuros emplear su base de datos de usuarios. Y pensando en ello me he dado cuenta de que ya existe un mecanismo casi universal que podr\u00eda realizar esa funci\u00f3n: <a href=\"https:\/\/es.wikipedia.org\/wiki\/Pluggable_Authentication_Modules\">PAM<\/a>. PAM est\u00e1 en todas partes y es posible a\u00f1adirle y quitarle todo tipo de mecanismos para realizar su tarea principal: identificar y autorizar accesos.<\/p>\n<p>Ahora bien, \u00bf es posible que owncloud emplee PAM para identificar usuarios y actualizar sus datos ? \u00bf Y en qu\u00e9 me beneficia eso respecto a un esquema LDAP ? Debo recordar que no s\u00f3lo es cuesti\u00f3n de validar una contrase\u00f1a, tambi\u00e9n necesito consultar informaci\u00f3n de cada cuenta como direcciones (en plural) de correo electr\u00f3nico, la ruta dentro del sistema donde construir los buzones, un identificador num\u00e9rico de usuario, &#8230; en fin, es una lista incompleta y me gustar\u00eda no quedarme atrapado en su dise\u00f1o.<\/p>\n<p>Y eso me recuerda algo que estoy evitando pero a lo que debo enfrentarme. El otro gran servicio de Google respecto al correo elect\u0155onico es el control del SPAM; algo que debo proporcionar yo tambi\u00e9n. Y tengo ideas al respecto y todas pasan m\u00e1s o menos por lo siguiente:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1.png\" rel=\"attachment wp-att-916\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-916\" src=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1-724x1024.png\" alt=\"boceto de control de spam\" width=\"600\" height=\"849\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1-724x1024.png 724w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1-212x300.png 212w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1-768x1086.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/boceto-de-control-de-spam-1.png 794w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a>S\u00ed, al final necesito una base de datos SQL para gestionar el spam. \u00bf Y si aprovecho e incluyo los perfiles de usuario y hago que el resto del sistema los use ?<\/p>\n<p><a href=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql.png\" rel=\"attachment wp-att-917\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-917\" src=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql-724x1024.png\" alt=\"Servicios-mysql\" width=\"600\" height=\"849\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql-724x1024.png 724w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql-212x300.png 212w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql-768x1086.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/01\/Servicios-mysql.png 794w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Resumiendo:<\/p>\n<ul>\n<li><a href=\"https:\/\/support.asperasoft.com\/hc\/en-us\/articles\/216127348-Getting-PAM-to-authenticate-against-MySQL\">PAM puede usar una base<\/a> de datos SQL para verificar credenciales y obtener informaci\u00f3n extra\u00a0 de los usuarios.<\/li>\n<li>Exim4 puede emplearse con PAM o una <a href=\"https:\/\/struction.de\/projects\/HOWTO_VirtualMail_Exim-MySQL-Spamassassin-ClamAV-Dovecot\/\">base de datos<\/a>.<\/li>\n<li>Dovecot <a href=\"http:\/\/wiki2.dovecot.org\/AuthDatabase\/SQL\">lo mismo<\/a>.<\/li>\n<li>Roundcube tiene usuarios virtuales y puede verificar accesos v\u00eda <a href=\"http:\/\/serverfault.com\/questions\/575389\/howto-setup-roundcube-password-plugin-with-sql-driver-and-mysql-encrypt-using-ra\">MySQL<\/a>.<\/li>\n<li>owncloud dispone de la aplicaci\u00f3n <a href=\"https:\/\/apps.owncloud.com\/content\/show.php?action=content&amp;content=155512\">user_sql<\/a> para lo mismo.<\/li>\n<\/ul>\n<p>\u00bf Qu\u00e9 puede fallar ?<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; como base de datos de usuarios ? \u00bf Eh ? \u00bf Y PAM ?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[459,286,108,475,502],"class_list":["post-911","post","type-post","status-publish","format-standard","hentry","category-software","tag-google-apps","tag-mysql","tag-owncloud","tag-pam","tag-roundcube"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=911"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/911\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}