На самом деле я использую MariaDB здесь, но я работаю под предлогом, что MariaDB является «каплей на замену» MySQL. Я не удивлюсь, если это окажется межплатформенным различием / проблемой, но я надеюсь, что вы посмотрите.
Вот в чем дело: я использую CentrifyDC для аутентификации PAM с доменом Active Directory. Он хорошо работает для доступа к SSH / sudoer, и теперь я пытаюсь выбить authN / Z для MySQL ... эээ, MariaDB.
Авторизация пользователя работает хорошо. Я создаю пользователя, и он работает по назначению:
MariaDB [(none)]> grant all privileges on *.* to myuser identified via pam;
Для полноты, я войду в систему и проверю свои гранты и кто я:
MariaDB [(none)]> show grants;
+---------------------------------------------------------------+
| Grants for myuser@% |
+---------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED VIA pam |
+---------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> SELECT USER(), CURRENT_USER(), @@proxy_user;
+-----------------+----------------+--------------+
| USER() | CURRENT_USER() | @@proxy_user |
+-----------------+----------------+--------------+
| myuser@localhost | myuser@% | NULL |
+-----------------+----------------+--------------+
1 row in set (0.00 sec)
Это выглядит прямо на мой не слишком опытный взгляд.
Теперь я пытаюсь следовать документации MySQL по адресу http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.htmlпод заголовком «6.3.6.2.2.3. Аутентификация пароля Unix с прокси-пользователями и сопоставлением групп». Это вполне может быть моей проблемой: я следую документации MySQL для MariaDB, но мне не удалось найти эквивалент MariaDB. Вот что происходит.
В соответствии с документами я создаю прокси-пользователя, группу и т. Д. Обратите внимание, что myuser является членом группы my-domain-group.
CREATE USER ''@'' IDENTIFIED WITH pam as 'mysql, my-doman-group=admin';
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'really weird password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
GRANT PROXY ON 'admin'@'localhost' to ''@'';
Авторизуйтесь как myuser работает. Проверим наши гранты:
MariaDB [(none)]> SHOW GRANTS;
+------------------------------------------------------------------------------------------+
| Grants for @ |
+------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ''@'' IDENTIFIED VIA pam USING 'mysql, my-doman-group=admin' |
| GRANT PROXY ON 'admin'@'localhost' TO ''@'' |
+------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Вот что я ожидал увидеть. Теперь, согласно документации, давайте проверим, под кем мы прокси:
MariaDB [(none)]> SELECT USER(), CURRENT_USER(), @@proxy_user;
+-----------------+----------------+--------------+
| USER() | CURRENT_USER() | @@proxy_user |
+-----------------+----------------+--------------+
| myuser@localhost | @ | NULL |
+-----------------+----------------+--------------+
1 row in set (0.00 sec)
Так что у нас это. Учетная запись myuser не получает доступ от группы my-domain-group, как должна, но ей разрешен доступ для входа в систему. Что дает? Какие-либо предложения?
На момент этого ответа в верхней части указанной страницы документации mysql указано:
Плагин аутентификации PAM является коммерческим расширением
Это означает, что он доступен в mySQL Enterprise, который является проприетарной вилкой Oracle для кодовой базы mySQL. Никаких корпоративных функций нет в MariaDB или версии mySQL для сообщества, если только они не были переписаны с нуля кем-то вне Oracle.
Похоже, что у MariaDB есть плагин для этого, документы находятся по адресу:
https://kb.askmonty.org/en/pam-authentication-plugin
Я не вижу упоминания о групповом сопоставлении, это может не быть реализовано в исходном коде под GPL.