Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » SQL Anywhere 数据库连接 » 数据库连接 » Kerberos 验证

 

配置 SQL Anywhere 数据库使用 Kerberos

您可以将 SQL Anywhere 数据库配置为使用 Kerberos 登录。

前提条件

您必须拥有 SET ANY PUBLIC OPTION 和 MANAGE ANY USER 系统特权。

您必须事先配置 Kerberos,之后 SQL Anywhere 才能使用它。

上下文和注释

Kerberos 登录功能允许您针对数据库连接、操作系统和网络登录维护单个用户 ID 和口令。

 任务
  1. 使用 -krb 或 -kr 选项启动 SQL Anywhere 数据库服务器,以启用 Kerberos 验证,或者使用 -kl 选项指定 GSS-API 库的位置并启用 Kerberos。

  2. 将公共或临时公共选项 login_mode 更改为包含 Kerberos 的值。因为数据库选项只作用于它们所在的数据库,所以,不同的数据库即使是在同一数据库服务器内装载和运行,也可以有不同的 Kerberos 登录设置。例如:

    SET OPTION PUBLIC.login_mode = 'Kerberos,Standard';
    小心

    将 login_mode 数据库选项设置为 Kerberos,会使只有被授予了 Kerberos 登录映射的用户才能进行连接。如果用户不具有 SYS_AUTH_DBA_ROLE 系统角色,则尝试使用用户 ID 和口令连接会生成错误。

  3. 为客户端用户创建数据库用户 ID。只要现有数据库用户拥有相应的特权,您就可以使用该用户的 ID 进行 Kerberos 登录。例如:

    CREATE USER "kerberos-user"
    IDENTIFIED BY abc123;
  4. 执行 GRANT KERBEROS LOGIN TO 语句可创建从客户端的 Kerberos 主体到现有数据库用户 ID 的映射。例如:

    GRANT KERBEROS LOGIN TO "pchin@MYREALM.COM" 
    AS USER "kerberos-user";

    要在使用的 Kerberos 主体没有映射的情况下进行连接,请确保具有 Guest 数据库用户 ID 且拥有口令。

  5. 确保客户端用户已经使用其 Kerberos 主体登录(具有有效的 Kerberos 票据授予票据)且客户端的 Kerberos 票据未过期。Windows 用户登录到已拥有票据授予票据的域帐户,使他们可以对服务器进行验证(假设他们的主体拥有足够权限)。

    票据授予票据是一种通过用户口令加密的 Kerberos 票据,票据授予服务使用该票据来验证用户的身份。

  6. 从客户端连接,指定 KERBEROS 连接参数(通常为 KERBEROS=YES,但也可以使用 KERBEROS=SSPI 或 KERBEROS=GSS-API-library-file)。如果指定了用户 ID 或口令连接参数,则它们将被忽略。例如:

    dbisql -c "KERBEROS=YES;Server=my_server_princ"

结果

SQL Anywhere 数据库已配置为使用 Kerberos 验证。

下一个

您可以使用 Kerberos 验证从客户端进行连接。另外,您也可以创建 Kerberos 登录映射。

如果某个用户已经登录,且登录时使用的用户配置文件名与数据库服务器的缺省数据库中的 Kerberos 登录映射相匹配,那么,使用以下 SQL 语句尝试连接就会成功:

CONNECT USING 'KERBEROS=YES';

满足下列所有条件时,CONNECT 语句即可以连接到数据库:

  • 数据库服务器当前正在运行。

  • 当前数据库服务器上的缺省数据库能够接受使用 Kerberos 验证的连接。

  • 已经为用户的当前 Kerberos 主体创建 Kerberos 登录映射。

  • 如果数据库服务器显示一个窗口,提示用户输入更多连接信息(例如,使用 Interactive SQL 时会出现这种情况),用户单击 [确定] 并且不提供更多信息。


 另请参见