您可以将 SQL Anywhere 数据库配置为使用 Kerberos 登录。
前提条件
您必须拥有 SET ANY PUBLIC OPTION 和 MANAGE ANY USER 系统特权。
您必须事先配置 Kerberos,之后 SQL Anywhere 才能使用它。
上下文和注释
Kerberos 登录功能允许您针对数据库连接、操作系统和网络登录维护单个用户 ID 和口令。
使用 -krb 或 -kr 选项启动 SQL Anywhere 数据库服务器,以启用 Kerberos 验证,或者使用 -kl 选项指定 GSS-API 库的位置并启用 Kerberos。
将公共或临时公共选项 login_mode 更改为包含 Kerberos 的值。因为数据库选项只作用于它们所在的数据库,所以,不同的数据库即使是在同一数据库服务器内装载和运行,也可以有不同的 Kerberos 登录设置。例如:
SET OPTION PUBLIC.login_mode = 'Kerberos,Standard'; |
将 login_mode 数据库选项设置为 Kerberos,会使只有被授予了 Kerberos 登录映射的用户才能进行连接。如果用户不具有 SYS_AUTH_DBA_ROLE 系统角色,则尝试使用用户 ID 和口令连接会生成错误。
为客户端用户创建数据库用户 ID。只要现有数据库用户拥有相应的特权,您就可以使用该用户的 ID 进行 Kerberos 登录。例如:
CREATE USER "kerberos-user" IDENTIFIED BY abc123; |
执行 GRANT KERBEROS LOGIN TO 语句可创建从客户端的 Kerberos 主体到现有数据库用户 ID 的映射。例如:
GRANT KERBEROS LOGIN TO "pchin@MYREALM.COM" AS USER "kerberos-user"; |
要在使用的 Kerberos 主体没有映射的情况下进行连接,请确保具有 Guest 数据库用户 ID 且拥有口令。
确保客户端用户已经使用其 Kerberos 主体登录(具有有效的 Kerberos 票据授予票据)且客户端的 Kerberos 票据未过期。Windows 用户登录到已拥有票据授予票据的域帐户,使他们可以对服务器进行验证(假设他们的主体拥有足够权限)。
票据授予票据是一种通过用户口令加密的 Kerberos 票据,票据授予服务使用该票据来验证用户的身份。
从客户端连接,指定 KERBEROS 连接参数(通常为 KERBEROS=YES,但也可以使用 KERBEROS=SSPI 或 KERBEROS=GSS-API-library-file)。如果指定了用户 ID 或口令连接参数,则它们将被忽略。例如:
dbisql -c "KERBEROS=YES;Server=my_server_princ" |
例
如果某个用户已经登录,且登录时使用的用户配置文件名与数据库服务器的缺省数据库中的 Kerberos 登录映射相匹配,那么,使用以下 SQL 语句尝试连接就会成功:
CONNECT USING 'KERBEROS=YES'; |
满足下列所有条件时,CONNECT 语句即可以连接到数据库:
数据库服务器当前正在运行。
当前数据库服务器上的缺省数据库能够接受使用 Kerberos 验证的连接。
已经为用户的当前 Kerberos 主体创建 Kerberos 登录映射。
如果数据库服务器显示一个窗口,提示用户输入更多连接信息(例如,使用 Interactive SQL 时会出现这种情况),用户单击 [确定] 并且不提供更多信息。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |