使用代理用户和组映射的MySQL密码身份validation

我实际上在这里使用MariaDB,但我正在借口MariaDB是MySQL的“替代品”。 如果这是一个跨平台的差异/问题,我不会感到惊讶,但我希望你看看。

这就是交易:我正在使用CentrifyDC进行PAM身份validation,并使用Active Directory域。 这对于SSH / sudoer访问非常有效,现在我正试图为MySQL提供authN / Z … err,MariaDB。

用户身份validation似乎很好。 我创build一个用户,并按预期工作:

MariaDB [(none)]> grant all privileges on *.* to myuser identified via pam; 

为了完整起见,我将login并查看我的资助金和我是谁:

 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) 

这看起来是对我不太专业的眼睛。

现在我试图在http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.html上的“6.3.6.2.2.3。Unix密码authentication与代理用户和组映射“。 这可能是我的问题:跟随MariaDB的MySQL文档 – 但我一直没有find一个MariaDB等价物。 这是发生了什么事。

根据文档,我创build了代理用户,组等等。请注意,“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”的身份login。 让我们来看看我们的赠款:

 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) 

因此,我们有它。 “我的用户”帐户没有像“my-domain-group”那样获得访问权限,但它允许访问login。 是什么赋予了? 有什么build议么?

截至这个答案的时候,它声明在引用的mysql文档页面的顶部:

PAMauthentication插件是一个商业扩展

这意味着它可以在mySQL Enterprise中使用,这是Oracle专有的mySQL代码库分支。 在MariaDB或社区版本的mySQL中,没有任何企业function,除非它们是由Oracle以外的人从头开始重写的。

看来,MariaDB有这个插件,文档在:

https://kb.askmonty.org/en/pam-authentication-plugin

我看到没有提到组映射,它可能不会在GPLed源代码中实现。