Sun Java System Directory Server Enterprise Edition 6.3 管理指南

第 2 部分 目录代理服务器管理

第 17 章 目录代理服务器工具

Sun JavaTM System Directory Proxy Server 提供了浏览器界面和命令行工具,用于注册和管理目录代理服务器实例。浏览器界面称为目录服务控制中心 (Directory Service Control Center, DSCC)。本章介绍使用 DSCC 或命令行管理目录代理服务器时需要执行的基本任务。

要确定是使用 DSCC 还是命令行来执行特定任务,请参见DSCC 和命令行的适用环境

有关管理框架的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning Guide》中的“Directory Server Enterprise Edition Administration Model”

本章包含以下主题:

使用目录代理服务器的 DSCC

本部分介绍如何访问目录代理服务器的 DSCC。

Procedure访问目录代理服务器的 DSCC

  1. 访问 DSCC(与访问目录服务器的 DSCC 方式相同)。

    请参见访问 DSCC

  2. 单击“代理服务器”选项卡以查看和管理目录代理服务器。

    下图显示了目录代理服务器的初始窗口。

    图 17–1 目录代理服务器的初始 DSCC 窗口

    屏幕捕获显示了 DSCC 中注册的目录代理服务器列表。

  3. 单击某个目录代理服务器实例以查看或管理该服务器。


    注 –

    有关使用 DSCC 的详细信息,请参见联机帮助。


目录代理服务器的命令行工具

在目录代理服务器中使用的命令行工具称为 dpadmdpconf。有关如何使用这些命令的信息,请参见 dpadm(1M)dpconf(1M) 手册页。

dpconfdsconfdsmig dsccmondsccregdsccsetup 都是基于 LDAP 的命令,因此您必须为这些命令指定用户绑定 DN 和密码以便进行验证。dpadmdsadm 命令对实例文件进行操作。

本部分介绍了 dpadmdpconf 命令的位置。此外还提供以下方面的信息:环境变量、命令之间的比较,以及如何获取有关使用这些命令的帮助。

目录代理服务器命令的位置

默认情况下,目录代理服务器命令行工具位于以下目录中:


install-path/dps6/bin

安装路径取决您的操作系统。默认路径和命令位置中列出了所有操作系统的安装路径。

设置 dpconf 的环境变量

dpconf 命令需要一些可以使用环境变量进行预设的选项。如果使用此命令时不指定选项,或者不设置环境变量,将使用默认设置。可为以下选项配置环境变量:

-D userDN

用户绑定 DN。环境变量:LDAP_ADMIN_USER。默认:cn=Proxy Manager

-w password-file

用户绑定 DN 的密码文件。环境变量:LDAP_ADMIN_PWF。默认:提示输入密码。

-h host

主机名或 IP 地址。环境变量:DIR_PROXY_HOST 。默认:localhost

-p LDAP-port

LDAP 端口号。环境变量:DIR_PROXY_PORT。默认:389(如果服务器实例作为 root 运行),或 1389(如果服务器实例作为普通用户运行)。

-e, --unsecured

指定 dpconf 应默认打开空的连接。环境变量:DIR_PROXY_UNSECURED。如果未设置此变量,则 dpconf 默认打开安全连接。

有关详细信息,请参见 dpconf(1M) 手册页。

dpadmdpconf 的比较

下表显示了 dpadmdpconf 命令的比较。

表 17–1 dpadmdpconf 命令的比较

 

dpadm 命令

dpconf 命令

用途 

管理本地目录代理服务器实例上的进程或文件 

配置本地或远程目录代理服务器实例 

用户 

操作系统用户 

LDAP 用户 

本地或远程 

对实例而言,此命令必须在本地运行,也就是说,必须在运行服务器的主机上运行此命令。

对实例而言,此命令可以在本地运行,但也可以从网络上的任何位置运行。

命令使用示例 

创建目录代理服务器实例。 

启动和停止目录代理服务器实例。 

管理证书数据库。 

修改目录代理服务器实例的配置。 

创建数据视图。 

配置数据源池中的负载平衡。 

服务器状态 

服务器可以运行或停止。 

服务器必须运行。

命令如何标识服务器实例 

通过指定实例路径。实例路径可以是相对路径或绝对路径。 

通过指定主机名(或 IP 地址)和端口号。 

该命令使用 LDAP 端口 (-p) 或 LDAPS 安全端口 (-P)。如果未在命令行指定端口号,则使用环境变量 PROXY_PORT。如果未设置环境变量,则使用默认端口。

使用 dpconf 设置多值属性

某些目录代理服务器属性可以采用多个值。请使用下面的语法指定以下值:


$ dpconf set-container-prop -h host -p port \
 property:value [property:value]

例如,要为名为 my-view 的 LDAP 数据视图设置多个可写属性,请键入以下命令:


$ dpconf set-ldap-data-view-prop -h host1 -p 1389 view-name\
 writable-attr:uid writable-attr:cn writable-attr:userPassword

要在已包含值的多值属性中添加值,请键入以下命令:


$ dpconf set-container-prop -h host -p port \
 property+:value

要从已包含值的多值属性中删除值,请键入以下命令:


$ dpconf set-container-prop -h host -p port\
 property-:value

例如,对于上述情况,要在可写属性列表中添加 sn,请键入以下命令:


$ dpconf set-ldap-data-view-prop -h host1 -p 1389 view-name\
writable-attr+:sn

要从可写属性列表中删除 cn,请键入以下命令:


$ dpconf set-ldap-data-view-prop -h host1 -p 1389 view-name\
writable-attr-:cn

获取有关使用 dpadmdpconf 的帮助

有关如何使用 dpadmdpconf 命令的信息,请参见 dpadm(1M)dpconf(1M) 手册页。

第 18 章 目录代理服务器实例

本章介绍如何管理目录代理服务器实例。本章包含以下主题:

使用目录代理服务器实例

创建目录代理服务器实例时,将在您指定的路径中创建此实例所需的文件和目录。

Procedure创建目录代理服务器实例

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

如果使用 DSCC 创建新的服务器实例,则可以选择复制现有服务器中的部分或全部服务器配置设置。

  1. 创建目录代理服务器实例。


    $ dpadm create -p port instance-path
    

    例如,要在 /local/dps 目录中创建新的实例,请使用以下命令:


    $ dpadm create -p 2389 /local/dps

    要指定实例的任何其他参数,请参见 dpadm(1M) 手册页。

  2. 键入密码(如有必要)。

  3. 通过验证实例状态来确认是否已创建该实例。


    $ dpadm info instance-path
    
  4. (可选的)如果目录代理服务器已使用 Sun JavaTM Enterprise System 安装程序或本地软件包安装进行安装,并且您的操作系统提供了服务管理解决方案,则可以将服务器作为服务进行管理,如下表所示。

    操作系统 

    命令  

    Solaris 10 

    dpadm enable-service --type SMF instance-path

    Solaris 9 

    dpadm autostart instance-path

    Linux、HP-UX 

    dpadm autostart instance-path

    Windows 

    dpadm enable-service --type WIN_SERVICE instance-path

  5. (可选的)使用以下任一方法注册服务器实例:

    • 通过 URL https://localhost:6789 访问 DSCC,并登录到浏览器界面。

    • 使用 dsccreg add-server 命令。

      有关详细信息,请参见 dsccreg(1M) 手册页。

Procedure查找目录代理服务器实例的状态

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查找目录代理服务器实例的状态。


    $ dpadm info instance-path
    

Procedure启动和停止目录代理服务器

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 要启动或停止目录代理服务器,请执行以下任一操作。

    • 要启动目录代理服务器,请键入:


      $ dpadm start instance-path
      

      例如,要启动 /local/dps 中的实例,请使用以下命令:


      $ dpadm start /local/dps
    • 要停止目录代理服务器,请键入:


      $ dpadm stop instance-path
      

      例如:


      $ dpadm stop /local/dps

Procedure查看是否需要重新启动目录代理服务器实例

有时,配置更改需要重新启动服务器才能生效。可使用以下过程查看是否需要在更改配置后重新启动目录代理服务器实例。

  1. 查看是否需要重新启动服务器。


    $ dpconf get-server-prop -h host -p port is-restart-required
    • 如果命令返回 true,则必须重新启动目录代理服务器实例。

    • 如果命令返回 false,则无需重新启动目录代理服务器实例。

Procedure重新启动目录代理服务器

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 重新启动目录代理服务器。


    $ dpadm restart instance-path
    

    例如,要重新启动 /local/dps 中的实例,请使用以下命令:


    $ dpadm restart /local/dps

Procedure删除目录代理服务器实例

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. (可选的)停止目录代理服务器实例。


    $ dpadm stop instance-path
    

    如果不停止此实例,删除命令会自动将其停止。但是,如果已在服务管理解决方案中启用了此实例,则必须手动将其停止。

  2. (可选的)如果以前使用 DSCC 管理服务器,请使用命令行取消注册此服务器。


    $ dsccreg remove-server /local/dps
    Enter DSCC administrator's password:
    /local/dps is an instance of DPS
    Enter password of "cn=Proxy Manager" for /local/dps:
    Unregistering /local/dps from DSCC on localhost.
    Connecting to /local/dps
    Disabling DSCC access to /local/dps

    有关详细信息,请参见 dsccreg(1M) 手册页。

  3. (可选的)如果以前在服务管理解决方案中启用了服务器实例,请停止将此服务器作为服务进行管理。

    操作系统 

    命令  

    Solaris 10 

    dpadm disable-service --type SMF instance-path

    Solaris 9 

    dpadm autostart --off instance-path

    Linux、HP-UX 

    dpadm autostart --off instance-path

    Windows 

    dpadm disable-service --type WIN_SERVICE instance-path

  4. 删除实例。


    $ dpadm delete instance-path
    

配置目录代理服务器实例

本部分介绍如何配置目录代理服务器实例。本部分中的过程使用 dpadmdpconf 命令。有关这些命令的信息,请参见 dpadm(1M)dpconf(1M) 手册页。

Procedure显示目录代理服务器实例的配置

  1. 键入 dpconf info


    $ dpconf info
    Instance Path           :  instance path
    Host Name               :  host
    Secure listen address   :  IP address
    Port                    :  port
    Secure port             :  secure port
    SSL server certificate  :  defaultServerCert
    
    Directory Proxy Server needs to be restarted.

    只有将 Secure listen addressNon-secure listen address 设置为非默认值时,dpconf info 才会显示这些属性。上面的输出不显示 Non-secure listen address,因为未将此属性设置为非默认值。

    如果需要重新启动实例,dpconf info 还会提醒用户重新启动。

    也可以使用 dpadm info 来显示目录代理服务器实例配置信息。

Procedure修改目录代理服务器的配置

本部分介绍如何修改目录代理服务器的配置。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查找目录代理服务器的当前配置。


    $ dpconf get-server-prop -h host -p port
    

    allow-cert-based-auth                : allow
    allow-ldapv2-clients                             : true
    allow-persistent-searches                        : false
    allow-sasl-external-authentication               : true
    allow-unauthenticated-operations                 : true
    allowed-ldap-controls                            : -
    cert-data-view-routing-custom-list               : none
    cert-data-view-routing-policy                    : all-routable
    cert-search-attr-mappings                        : none
    cert-search-base-dn                              : none
    cert-search-bind-dn                              : none
    cert-search-bind-pwd                             : none
    cert-search-user-attr                            : userCertificate
    configuration-manager-bind-dn                    : cn=proxy manager
    configuration-manager-bind-pwd                   : {3DES}RPdIFbvoWdvhLR8lU43zCMZyKFGPxfFg
    connection-pool-wait-timeout                     : 3s
    data-source-read-timeout                         : 20s
    data-view-automatic-routing-mode                 : automatic
    email-alerts-enabled                             : false
    email-alerts-message-from-address                : local
    email-alerts-message-subject                     : Proxy Server Administrative Alert
    email-alerts-message-subject-includes-alert-code : false
    email-alerts-message-to-address                  : root@localhost
    email-alerts-smtp-host                           : localhost
    email-alerts-smtp-port                           : smtp
    enable-remote-user-mapping                       : false
    enable-user-mapping                              : false
    enabled-admin-alerts                             : none
    enabled-ssl-cipher-suites                        : JRE
    enabled-ssl-protocols                            : SSLv3
    enabled-ssl-protocols                            : TLSv1
    encrypt-configuration                            : true
    extension-jar-file-url                           : none
    is-restart-required                              : false
    number-of-search-threads                         : 20
    number-of-worker-threads                         : 50
    proxied-auth-check-timeout                       : 30m
    remote-user-mapping-bind-dn-attr                 : none
    scriptable-alerts-command                        : echo
    scriptable-alerts-enabled                        : false
    search-mode                                      : parallel
    search-wait-timeout                              : 10s
    ssl-client-cert-alias                            : none
    ssl-server-cert-alias                            : defaultServerCert
    supported-ssl-cipher-suites                      : SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DHE_DSS_WITH_DES_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DHE_RSA_WITH_DES_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
    supported-ssl-cipher-suites                      : SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DH_anon_WITH_DES_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_DH_anon_WITH_RC4_128_MD5
    supported-ssl-cipher-suites                      : SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_RSA_EXPORT_WITH_RC4_40_MD5
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_3DES_EDE_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_DES_CBC_SHA
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_NULL_MD5
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_NULL_SHA
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_RC4_128_MD5
    supported-ssl-cipher-suites                      : SSL_RSA_WITH_RC4_128_SHA
    supported-ssl-cipher-suites                      : TLS_DHE_DSS_WITH_AES_128_CBC_SHA
    supported-ssl-cipher-suites                      : TLS_DHE_RSA_WITH_AES_128_CBC_SHA
    supported-ssl-cipher-suites                      : TLS_DH_anon_WITH_AES_128_CBC_SHA
    supported-ssl-cipher-suites                      : TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
    supported-ssl-cipher-suites                      : TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
    supported-ssl-cipher-suites                      : TLS_KRB5_EXPORT_WITH_RC4_40_MD5
    supported-ssl-cipher-suites                      : TLS_KRB5_EXPORT_WITH_RC4_40_SHA
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_3DES_EDE_CBC_MD5
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_3DES_EDE_CBC_SHA
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_DES_CBC_MD5
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_DES_CBC_SHA
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_RC4_128_MD5
    supported-ssl-cipher-suites                      : TLS_KRB5_WITH_RC4_128_SHA
    supported-ssl-cipher-suites                      : TLS_RSA_WITH_AES_128_CBC_SHA
    supported-ssl-protocols                          : SSLv2Hello
    supported-ssl-protocols                          : SSLv3
    supported-ssl-protocols                          : TLSv1
    syslog-alerts-enabled                            : false
    syslog-alerts-facility                           : USER
    syslog-alerts-host                               : localhost
    use-cert-subject-as-bind-dn                      : true
    use-external-schema                              : false
    user-mapping-anonymous-bind-dn                   : none
    user-mapping-anonymous-bind-pwd                  : none
    user-mapping-default-bind-dn                     : none
    user-mapping-default-bind-pwd                    : none
    verify-certs                                     : false

    或者,查看一个或多个配置属性的当前设置。


    $ dpconf get-server-prop -h host -p port property-name ...

    例如,通过运行以下命令确定是否允许未经验证的操作:


    $ dpconf get-server-prop -h host -p port allow-unauthenticated-operations
    allow-unauthenticated-operations  :  true
  2. 更改一个或多个配置参数。


    $ dpconf set-server-prop -h host -p port property:value ...

    例如,通过运行以下命令禁止未经验证的操作:


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:false

    如果您尝试执行非法更改,则此更改将不会生效。例如,如果将 allow-unauthenticated-operations 参数设置为 f 而不是 false,则会产生以下错误:


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:f
    The value "f" is not a valid value for the property "allow-unauthenticated-operations".
    Allowed property values: BOOLEAN
    The "set-server-prop" operation failed.
  3. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

配置代理管理员

代理管理员是具有特权的管理员,与 UNIX® 系统上的超级用户类似。代理管理员条目是在创建目录代理服务器实例时定义的。代理管理员的默认 DN 为 cn=Proxy Manager

可以查看和更改代理管理员的 DN 和密码,如以下过程所示。

Procedure配置代理管理员

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查找代理管理员的配置。


    $ dpconf get-server-prop -h host -p port configuration-manager-bind-dn configuration-manager-bind-pwd
    configuration-manager-bind-dn   :  cn=proxy manager
    configuration-manager-bind-pwd  :  {3DES}U77v39WX8MDpcWVrueetB0lfJlBc6/5n

    代理管理员的默认值为 cn=proxy manager。将为配置管理员密码返回一个散列值。

  2. 更改代理管理员的 DN。


    $ dpconf set-server-prop -h host -p port configuration-manager-bind-dn:bindDN
    
  3. 创建包含代理管理员密码的文件,并设置指向该文件的属性。


    $ dpconf set-server-prop -h host -p port configuration-manager-bind-pwd-file:filename
    

需要重新启动服务器的配置更改

对目录代理服务器及其实体的大多数配置更改都可以联机进行。某些更改需要重新启动服务器后才能生效。如果对下表中的任何属性进行配置更改,都必须重新启动服务器:

aci-data-view
bind-dn
client-cred-mode
custom-distribution-algorithm
db-name
db-pwd
db-url
db-user
distribution-algorithm
ldap-address
ldap-port
ldaps-port
listen-address
listen-port
load-balancing-algorithm
num-bind-init
num-read-init
num-write-init
number-of-search-threads
number-of-threads
number-of-worker-threads
ssl-policy
use-external-schema

属性的 rwsrwd 关键字指示属性更改是否要求重新启动服务器。

要确定对某个属性的更改是否需要重新启动服务器,请运行以下命令:

$ dpconf help-properties | grep property-name

例如,要确定更改 LDAP 数据源的绑定 DN 是否需要重新启动服务器,请运行以下命令:

$ dpconf help-properties | grep bind-dn
connection-handler   	bind-dn-filters        rwd  STRING | any
This property specifies a set of regular expressions. The bind DN 
of a client must match at least one regular expression in order for 
the connection to be accepted by the connection handler. (Default: any)
ldap-data-source      bind-dn               rws  DN | ""
This property specifies the DN to use when binding to the LDAP data 
source. (Default: undefined)

要确定进行配置更改后是否必须重新启动服务器,请运行以下命令:

$ dpconf get-server-prop -h host -p port is-restart-required

备份和恢复目录代理服务器实例

使用 dpadm 备份目录代理服务器时,将备份配置文件和服务器证书。如果已实现目录代理服务器虚拟 ACI,也会备份 ACI。

只要服务器成功启动,目录代理服务器即会自动备份 conf.ldif 文件。

Procedure备份目录代理服务器实例

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 停止目录代理服务器实例。


    $ dpadm stop instance-path
    
  2. 备份目录代理服务器实例。


    $ dpadm backup instance-path archive-dir
    

    archive-dir 目录由 backup 命令创建,并且在运行此命令之前不得存在。此目录包含每个配置文件和证书的备份。

Procedure恢复目录代理服务器实例

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

在启动恢复操作之前,必须先创建一个目录代理服务器实例。

  1. 停止目录代理服务器实例。


    $ dpadm stop instance-path
    
  2. 恢复目录代理服务器实例。


    $ dpadm restore instance-path archive-dir
    
    • 如果实例路径存在,将以无提示方式执行恢复操作。archive-dir 目录中的配置文件和证书将替换 instance-path 目录中的配置文件和证书。

    • 如果实例路径不存在,恢复操作将会失败。

第 19 章 LDAP 数据视图

LDAP 数据视图向客户端请求公开 LDAP 服务器中的数据,并指定用于响应该请求的数据源池。通过定义 LDAP 数据视图,可以执行以下任务:

创建 LDAP 数据视图

创建 LDAP 数据视图将包括以下步骤:

  1. 创建 LDAP 数据源

  2. 创建 LDAP 数据源池

  3. 将 LDAP 数据源连接到数据源池

  4. 创建 LDAP 数据视图

创建和配置 LDAP 数据源

本部分介绍如何使用 dpconf 命令创建和配置 LDAP 数据源。有关这些主题的参考信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“LDAP Data Sources”

有关如何创建和配置 LDAP 数据源的信息,请参见以下过程。

Procedure创建 LDAP 数据源

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建数据源。


    $ dpconf create-ldap-data-source -h host -p port source-name host:port
    

    在此命令中,source-name 是为新数据源指定的名称。hostport 指的是正在运行 LDAP 服务器的主机和端口。请注意,在默认情况下数据源不使用 SSL。

    如果主机由 IP V6 地址指定,则创建数据源时需要使用 IP V6 引用。例如,如果目录代理服务器要绑定到端口 2389 上 IP V6 地址为 fe80::209:3dff:fe00:8c93 的主机,请使用以下命令创建数据源:


    $ dpconf create-ldap-data-source -h host1 -p 1389 ipv6-host \
     [fe80::209:3dff:fe00:8c93]:2389

    如果使用控制台创建数据源,则必须指定实际的 IP V6 地址(不包含方括号)。

    有关如何修改 LDAP 数据源属性的信息,请参见配置 LDAP 数据源

  2. (可选的)查看数据源列表。


    $ dpconf list-ldap-data-sources -h host -p port
    

Procedure配置 LDAP 数据源

以下过程介绍如何显示 LDAP 数据源的属性以及如何设置需要更改的属性。该过程提供了用于更改任何 LDAP 数据源属性的命令,并且还描述了如何获取属性的详细信息,以便帮助您设置该属性。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 通过使用以下命令语法查看数据源的属性:


    $ dpconf get-ldap-data-source-prop -h host -p port \
    [-M unit] [-Z unit] source-name [property...]

    在此命令中,-M-Z 指的是显示数据的单位。M 选项指定时间单位。-M 的值可以为 Mwdhmsms,分别表示月、周、天、小时、分钟、秒或毫秒。-Z 选项指定数据大小单位。-Z 的值可以为 TGMkb,分别表示千吉字节、千兆字节、兆字节、千字节或字节。

    如果不指定属性,将显示所有属性。LDAP 数据源的默认属性如下所示:


    bind-dn                        :  -
    bind-pwd                       :  -
    client-cred-mode               :  use-client-identity
    connect-timeout                :  10s
    description                    :  -
    is-enabled                     :  false
    is-read-only                   :  true
    ldap-address                   :  host
    ldap-port                      :  port
    ldaps-port                     :  ldaps
    monitoring-bind-timeout        :  5s
    monitoring-entry-dn            :  ""
    monitoring-entry-timeout       :  5s
    monitoring-inactivity-timeout  :  2m
    monitoring-interval            :  30s
    monitoring-mode                :  proactive
    monitoring-search-filter       :  (|(objectClass=*)(objectClass=ldapSubEntry))
    num-bind-incr                  :  10
    num-bind-init                  :  10
    num-bind-limit                 :  1024
    num-read-incr                  :  10
    num-read-init                  :  10
    num-read-limit                 :  1024
    num-write-incr                 :  10
    num-write-init                 :  10
    num-write-limit                :  1024
    proxied-auth-check-timeout     :  1.8s
    proxied-auth-use-v1            :  false
    ssl-policy                     :  never
    use-tcp-no-delay               :  true
  2. 启用数据源。


    $ dpconf set-ldap-data-source-prop -h host -p port source-name is-enabled:true
  3. 如果要更改默认设置,请配置步骤 1 中列出的所有属性。


    $ dpconf set-ldap-data-source-prop -h host -p port source-name property:value
    

    例如,如果要修改数据源上的条目,请将此数据源配置为允许写入操作。


    $ dpconf set-ldap-data-source-prop -h host -p port source-name is-read-only:false

    要查找有关子命令中所使用的属性的信息,请运行以下命令:


    $ dpconf help-properties ldap-data-source property
    

    例如,要查找有关 is-read-only 属性的信息,请运行以下命令:


    dpconf help-properties ldap-data-source is-read-only

    要列出数据源的主要属性,请在 list-ldap-data-sources 子命令中使用详细选项 -v


    $ dpconf list-ldap-data-sources -v
    Name         is-enabled  ldap-address  ldap-port  ldaps-port  description
    -----------  ----------  ------------  ---------  ----------  -----------
    datasource0  true        myHost        myPort     ldaps       -
    datasource1  true        myHost        myPort     ldaps       -
  4. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器。有关需要重新启动服务器的配置更改的列表,请参见需要重新启动服务器的配置更改

创建和配置 LDAP 数据源池

本部分介绍如何使用 dpconf 命令创建和配置 LDAP 数据源池。有关这些主题的参考信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“LDAP Data Sources”

有关如何创建和配置数据源池的信息,请参见以下过程:

Procedure创建 LDAP 数据源池

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建一个或多个数据源池。


    $ dpconf create-ldap-data-source-pool -h host -p port pool-name
    

    可以在第一个 pool-name 之后指定其他数据源池。有关如何修改数据源池属性的信息,请参见配置 LDAP 数据源池

  2. (可选的)查看数据源池列表。


    $ dpconf list-ldap-data-source-pools -h host -p port
    

Procedure配置 LDAP 数据源池

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 通过使用以下命令语法查看数据源池的属性:


    $ dpconf get-ldap-data-source-pool-prop -h host -p port \
    [-M unit] [-Z unit] pool-name [property...]

    在此命令中,-M-Z 指的是显示数据的单位。M 选项指定时间单位。-M 的值可以为 Mwdhmsms,分别表示月、周、天、小时、分钟、秒或毫秒。-Z 选项指定数据大小单位。-Z 的值可以为 TGMkb,分别表示千吉字节、千兆字节、兆字节、千字节或字节。

    如果不指定属性,将显示所有属性。LDAP 数据源池的默认属性如下所示:


    client-affinity-policy    :  write-affinity-after-write  
    client-affinity-timeout   :  20s  
    description               :  -  
    enable-client-affinity    :  false  
    load-balancing-algorithm  :  proportional  
  2. 配置步骤 1 中列出的属性。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     property:value
    

    有关如何为负载平衡和客户端相似性配置数据源池属性的信息,请参见第 21 章,目录代理服务器负载平衡和客户端相似性

将 LDAP 数据源连接到数据源池

连接到数据源池的数据源称为连接数据源。连接数据源的属性确定数据源池的负载平衡配置。配置连接数据源的权重时,应考虑数据源池中所有连接数据源的权重。请确保这些权重能够根据需要协同工作。有关如何为负载平衡配置权重的信息,请参见配置负载平衡的权重

Procedure将 LDAP 数据源连接到数据源池

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将一个或多个数据源连接到数据源池。


    $ dpconf attach-ldap-data-source -h host -p port pool-name \
     source-name [source-name ...]
  2. (可选的)查看给定数据源池中连接数据源的列表。


    $ dpconf list-attached-ldap-data-sources -h host -p port -E pool-name
    

    在此命令中,-E 是可选选项,用于修改显示输出,以便每行显示一个属性值。

  3. (可选的)查看给定数据源池中连接数据源的主要属性。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    

    在此命令中,-v 指定详细输出。例如,查看示例数据源池的属性。


    $ dpconf list-attached-ldap-data-sources -h host1 -p 1389 -v My-pool
    SRC_NAME     add-weight  bind-weight  compare-weight  
    -----------  ----------  -----------  --------------  
    datasource0  disabled    disabled     disabled        
    datasource1  disabled    disabled     disabled        
    
    delete-weight  modify-dn-weight  modify-weight  search-weight
    -------------  ----------------  -------------  -------------
    disabled       disabled          disabled       disabled
    disabled       disabled          disabled       disabled
  4. (可选的)通过使用以下命令语法查看连接数据源的属性:


    $ dpconf get-attached-ldap-data-source-prop -h host -p port [-M unit] [-Z unit] \
     pool-name source-name [property...]

    在此命令中,-M-Z 指的是显示数据的单位。M 选项指定时间单位。-M 的值可以为 Mwdhmsms,分别表示月、周、天、小时、分钟、秒或毫秒。-Z 选项指定数据大小单位。-Z 的值可以为 TGMkb,分别表示千吉字节、千兆字节、兆字节、千字节或字节。

    如果不指定属性,将显示所有属性。

    连接数据源的属性可定义负载平衡中每种操作类型的权重。连接数据源的默认权重如下所示:


    add-weight        :  disabled  
    bind-weight       :  disabled  
    compare-weight    :  disabled  
    delete-weight     :  disabled  
    modify-dn-weight  :  disabled  
    modify-weight     :  disabled  
    search-weight     :  disabled 

    必须设置连接数据源的属性,才能确保目录代理服务器按预计工作。在以下示例中,所有属性都被设置为具有相同的值。可以根据要求更改这些属性的值。有关如何为负载平衡配置连接数据源权重的信息,请参见配置负载平衡的权重


    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name add-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name bind-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name compare-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name delete-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name modify-dn-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name modify-weight:1
    $ dpconf set-attached-ldap-data-source-prop -h host -p port \
    pool-name source-name search-weight:1

使用 LDAP 数据视图

有关如何创建和配置 LDAP 数据视图的信息,请参见以下过程:

Procedure创建 LDAP 数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建 LDAP 数据视图。


    $ dpconf create-ldap-data-view -h host -p port view-name pool-name suffix-DN
    

    有关如何修改 LDAP 数据视图属性的信息,请参见配置 LDAP 数据视图

  2. 查看 LDAP 数据视图的列表。


    $ dpconf list-ldap-data-views -h host -p port
    

Procedure配置 LDAP 数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看 LDAP 数据视图的属性。


    $ dpconf get-ldap-data-view-prop -h host -p port view-name
    

    如果在创建数据视图时未配置任何属性,则数据视图具有以下配置:


    alternate-search-base-dn                    :  ""
    attr-name-mappings                          :  none
    base-dn                                     :  suffix-DN
    contains-shared-entries                     :  false
    custom-distribution-algorithm-class         :  none
    description                                 :  -
    distribution-algorithm                      :  none
    dn-join-rule                                :  none
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  none
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    ldap-data-source-pool                       :  pool-name
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  none
    non-writable-attr                           :  none
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    process-bind                                :  -
    replication-role                            :  master
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr

    注 –

    除代理管理员外,所有用户都会看到后端服务器中的 cn=configcn=monitor 后缀。默认情况下,后端服务器中的数据对于代理管理员不可用。对于代理管理员可用的 cn=configcn=monitor 子树就是代理服务器自身的这些子树。

    创建目录代理服务器实例时,将使用空数据视图策略创建代理管理员的连接处理程序。如果代理管理员需要访问后端数据,则必须向代理管理员连接处理程序的数据视图策略中添加数据视图。默认情况下,在此类数据视图上将排除 cn=configcn=monitor 子树。


  2. 更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
     property:value [property:value ... ]

    例如,要访问数据源上的 dc=example,dc=com 子树,请在数据视图中指定 dn-mapping-source-base-dn


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 myDataView \
    dn-mapping-source-base-dn:dc=example,dc=com

    要在多值属性中添加值,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port view-name property+:value
    

    要从多值属性中删除值,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port view-name property-:value
    
  3. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

使用目录代理服务器访问目录服务器的配置条目

目录代理服务器的配置条目位于 cn=config 中。在默认情况下,使用目录代理服务器访问配置条目时,将访问目录代理服务器的配置条目。

要访问目录服务器的配置条目,最好直接连接到目录服务器,而不是连接到目录代理服务器。有关如何配置目录服务器的信息,请参见第 4 章,目录服务器配置


注意 – 注意 –

如果重新配置目录代理服务器以访问目录服务器的配置条目,很可能会破坏目录代理服务器的管理框架。


如果确实需要通过目录代理服务器访问目录服务器的配置条目,请采取特殊措施以确保不会破坏目录代理服务器的管理框架。本部分介绍如何使用目录代理服务器访问目录服务器的配置条目。

Procedure使用目录代理服务器访问目录服务器的配置条目

  1. 创建一个或多个数据源,如创建和配置 LDAP 数据源所述。

  2. 创建 LDAP 数据源池,如创建和配置 LDAP 数据源池所述。

  3. 将一个或多个数据源连接到数据源池,如将 LDAP 数据源连接到数据源池所述。

    • 要公开某个特定数据源的配置条目,请只将一个 LDAP 数据源连接到 LDAP 数据源池。


      $ dpconf attach-ldap-data-source -h host -p port pool-name data-source-name
      

      执行此步骤后,客户端即可访问连接到目录代理服务器的数据源的配置条目。

    • 要公开任意数据源的配置条目,请将多个 LDAP 数据源连接到 LDAP 数据源池。


      $ dpconf attach-ldap-data-source -h host -p port pool-name data-source-name \
       data-source-name ...

      执行此步骤后,客户端即可访问连接到目录代理服务器的任一数据源的配置条目。但是,客户端无法知道这些配置条目属于哪个数据源。

  4. 创建 LDAP 数据视图以公开 cn=config


    $ dpconf create-ldap-data-view -h host -p port view-name pool-name cn=config

重命名属性和 DN

目录中的每个条目是由 DN 和一组属性及属性值标识的。通常,在客户端定义的 DN 和属性不会映射到在服务器端定义的 DN 和属性。可以定义数据视图以重命名 DN 和属性。客户端发出请求后,将对 DN 和属性进行重命名,以便与服务器端的名称相匹配。结果返回到客户端后,DN 和属性将会恢复原来的名称,以便与客户端的名称相匹配。

有关属性重命名和 DN 重命名的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Attribute Renaming and DN Renaming”。有关如何重命名属性和 DN 的信息,请参见以下过程:

Procedure配置属性重命名

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 在要配置属性映射的数据视图上设置一个或多个 attr-name-mappings 属性。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
      attr-name-mappings:client-side-attribute-name#server-side-attribute-name\
      [attr-name-mappings:client-side-attribute-name#server-side-attribute-name ...]

    例如,将客户端的 surname 重命名为服务器端的 sn


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 myDataView \
     attr-name-mappings:surname#sn

    要在现有映射列表中添加属性映射,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
     attr-name-mappings+:client-side-attribute-name#server-side-attribute-name
    

    要从现有映射列表中删除属性映射,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
     attr-name-mappings-:client-side-attribute-name#server-side-attribute-name
    

Procedure配置 DN 重命名

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看要重命名 DN 的数据视图的 base-dn 属性和 DN 映射属性。


    $ dpconf get-ldap-data-view-prop -h host -p port view-name base-dn \
     dn-mapping-source-base-dn dn-mapping-attrs

    这些属性的含义如下:

    • base-dn 是客户端子树的 DN,相当于数据视图的基 DN。

    • dn-mapping-source-base-dn 是服务器端子树的 DN。

    • dn-mapping-attrs 用于定义包含条目 DN 的属性的列表。

    例如,未定义 DN 重命名时,客户端 dc=example,dc=com 数据库的数据视图具有以下值:


    $ dpconf get-ldap-data-view-prop myDataView base-dn \
     dn-mapping-source-base-dn dn-mapping-attrs
     base-dn                    :  dc=example,dc=com
     dn-mapping-attrs           :  none
     dn-mapping-source-base-dn  :  none
  2. 将客户端的 DN 映射到服务器端的 DN。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
      dn-mapping-source-base-dn:server-side-dn
    

    例如,将客户端的 dc=example,dc=com 数据库映射到服务器端的 dc=example,dc=org


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 myDataView \
     dn-mapping-source-base-dn:dc=example,dc=org
  3. 重命名受步骤 2 影响的 DIT 部分中的属性(如果这些属性包含 DN)。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
      dn-mapping-attrs:attribute-name [dn-mapping-attrs:attribute-name ...]

    例如,如果 group 属性包含 DN,并且所在的名称空间受步骤 2 中重命名操作的影响,请按如下方式重命名该属性:


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 myDataView dn-mapping-attrs:group

    要在现有映射列表中添加 DN 映射,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port \
    view-name dn-mapping-attrs+:attribute-name
    

    要从现有映射列表中删除 DN 映射,请使用以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port \
    view-name dn-mapping-attrs-:attribute-name
    
  4. 查看已重命名 DN 的数据视图的 base-dn 属性和 DN 映射属性。


    $ dpconf get-ldap-data-view-prop -h host -p port view-name base-dn \
     dn-mapping-source-base-dn dn-mapping-attrs

    例如,客户端 dc=example,dc=com 数据库的数据视图在 DN 重命名后具有以下值:


    $ dpconf get-ldap-data-view-prop -h host1 -p 1389 myDataView base-dn \
     dn-mapping-source-base-dn dn-mapping-attrs
     base-dn                    :  dc=example,dc=com
     dn-mapping-attrs           :  group
     dn-mapping-source-base-dn  :  dc=example,dc=org

配置视图排除基和备用搜索基

创建从属数据视图后,目录代理服务器会自动从上级数据视图中排除该从属数据视图。当请求针对从属数据视图时,该请求将被发送到从属数据视图,而不是上级数据视图。

在从属数据视图中指定备用搜索基后,还会在从属数据视图中执行针对上级数据视图的搜索操作。

默认情况下,目录代理服务器将自动配置 excluded-subtreesalternate-search-base-dn 属性。以下过程将介绍如何手动配置这些属性。

Procedure手动配置 excluded-subtreesalternate-search-base-dn 属性

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将目录代理服务器配置为手动路由请求。


    $ dpconf set-server-prop -h host -p port data-view-automatic-routing-mode:manual

    data-view-automatic-routing-modemanual 时,目录代理服务器不会生成 excluded-subtreesalternate-search-base-dn 属性。您必须手动设置这些属性的值。目录代理服务器不会检查此处设置的值。请注意,错误地设置这些值可能会破坏管理路径。

    或者,将目录代理服务器配置为手动路由部分请求。


    $ dpconf set-server-prop -h host -p port data-view-automatic-routing-mode:limited

    data-view-automatic-routing-modelimited 时, 目录代理服务器不会生成 excluded-subtreesalternate-search-base-dn 属性。但是,目录代理服务器会检查此处设置的值是否与管理路径冲突。

  2. 配置视图排除基。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name excluded-subtrees:suffix-DN
    

    视图排除基用于确定数据视图不公开其条目的 DIT 分支。

  3. 配置备用搜索基。


    $ dpconf set-ldap-data-view-prop -h host -p port view-name \
     alternate-search-base-dn:search-base-DN
    

    备用搜索基用于确定 DIT 的其他分支,属于此数据视图的条目可能位于这些分支中。默认情况下,在所有数据视图中都将基 DN 定义为备用搜索基。

为示例使用案例创建和配置数据视图

本部分包含以下有关数据视图以及如何创建和配置数据视图的信息:

本部分中的示例假定连接处理程序允许目录代理服务器处理所有客户端连接。

默认数据视图

如果创建数据视图而没有配置任何属性,该数据视图将具有以下配置:


alternate-search-base-dn                    :  ""
alternate-search-base-dn                    :  base-DN
attr-name-mappings                          :  none
base-dn                                     :  suffix-DN
contains-shared-entries                     :  -
description                                 :  -
distribution-algorithm                      :  -
dn-join-rule                                :  -
dn-mapping-attrs                            :  none
dn-mapping-source-base-dn                   :  none
excluded-subtrees                           :  -
filter-join-rule                            :  -
is-enabled                                  :  true
is-read-only                                :  false
is-routable                                 :  true
ldap-data-source-pool                       :  pool-name
lexicographic-attrs                         :  all
lexicographic-lower-bound                   :  none
lexicographic-upper-bound                   :  none
non-viewable-attr                           :  -
non-writable-attr                           :  -
numeric-attrs                               :  all
numeric-default-data-view                   :  false
numeric-lower-bound                         :  none
numeric-upper-bound                         :  none
pattern-matching-base-object-search-filter  :  all
pattern-matching-dn-regular-expression      :  all
pattern-matching-one-level-search-filter    :  all
pattern-matching-subtree-search-filter      :  all
process-bind                                :  -
replication-role                            :  master
viewable-attr                               :  all except non-viewable-attr
writable-attr                               :  all except non-writable-attr

路由所有请求(不考虑请求的目标 DN)的数据视图

本部分介绍将所有请求路由到数据源池(而不考虑请求的目标 DN)的数据视图的配置。此数据视图称为根数据视图。默认情况下,在创建目录代理服务器实例时将创建根数据视图。有关根数据视图的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views to Route All Requests, Irrespective of the Target DN of the Request”

根数据视图具有以下配置:


alternate-search-base-dn                    :  -
attr-name-mappings                         :  none
base-dn                                    :  ""
contains-shared-entries                    :  -
description                                :  Automatically-generated data view 
                                              able to route client operations 
                                              independently of the operation base dn
distribution-algorithm                     :  -
dn-join-rule                               :  -
dn-mapping-attrs                           :  none
dn-mapping-source-base-dn                  :  none
excluded-subtrees                          :  ""
excluded-subtrees                          :  cn=config
excluded-subtrees                          :  cn=monitor
excluded-subtrees                          :  cn=proxy manager
excluded-subtrees                          :  cn=virtual access controls
excluded-subtrees                          :  dc=example,dc=com
filter-join-rule                           :  -
is-enabled                                 :  true
is-read-only                               :  false
is-routable                                :  true
ldap-data-source-pool                      :  defaultDataSourcePool
lexicographic-attrs                        :  all
lexicographic-lower-bound                  :  none
lexicographic-upper-bound                  :  none
non-viewable-attr                          :  -
non-writable-attr                          :  -
numeric-attrs                              :  all
numeric-default-data-view                  :  false
numeric-lower-bound                        :  none
numeric-upper-bound                        :  none
pattern-matching-base-object-search-filter :  all
pattern-matching-dn-regular-expression     :  all
pattern-matching-one-level-search-filter   :  all
pattern-matching-subtree-search-filter     :  all
process-bind                               :  -
replication-role                           :  master
viewable-attr                              :  all except non-viewable-attr
writable-attr                              :  all except non-writable-attr

当子树列表存储到多个数据相等的数据源时路由请求的数据视图

本部分介绍如何配置一个数据视图,以便将目标为一组子树的请求路由到一组数据相等的数据源。有关此类部署的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views to Route Requests When a List of Subtrees Are Stored on Multiple, Data-Equivalent Data Sources”

本部分中的示例具有多个包含相同子树集的数据源。这些数据源具有相等的数据,并被集中在一个数据源池中以便实现负载平衡。每个子树都会配置一个数据视图,以便向客户端请求公开该子树。下图显示了样例部署。

图 19–1 当子树列表存储到多个数据相等的数据源时路由请求的样例部署

图中显示的示例部署将针对子树列表的请求路由到一组数据相等的数据源。

Procedure配置当子树列表存储到多个数据相等的数据源时路由请求的数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为每个 LDAP 服务器创建数据源,如创建和配置 LDAP 数据源所述。

  2. 创建数据源池,如创建和配置 LDAP 数据源池所述。

  3. 将数据源连接到数据源池,如将 LDAP 数据源连接到数据源池所述。

  4. (可选的)配置负载平衡。

    有关信息,请参见配置负载平衡

  5. 创建基 DN 为 dc=example1,dc=com 且指向该数据源池的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-1 \
    data-source-pool-1 dc=example1,dc=com
  6. 创建基 DN 为 dc=example2,dc=com 且指向该数据源池的另一个数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-2 \
    data-source-pool-1 dc=example2,dc=com

    数据视图的其他属性与默认数据视图中的默认数据视图相同。

  7. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

当不同子树存储到不同数据源时提供单一访问点的数据视图

本部分介绍如何配置一个数据视图,以便为存储在多个数据源中的不同子树提供单一访问点。有关此类部署的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views to Provide a Single Point of Access When Different Subtrees Are Stored on Different Data Sources”

本部分中的示例包含每个子树的数据视图。每组数据相等的数据源都会配置一个数据源池。下图显示了示例部署。

图 19–2 当不同子树存储到不同数据源时提供单一访问点的样例部署

图中显示的样例部署向存储到多个数据源的不同子树提供单一访问点。

Procedure配置当不同子树存储到不同数据源时提供单一访问点的数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为每个 LDAP 服务器创建数据源,如创建和配置 LDAP 数据源所述。

  2. 创建两个数据源池,如创建和配置 LDAP 数据源池所述。

  3. 将包含 dc=example1,dc=com 的数据源连接到 data-source-pool-1,并将包含 dc=example2,dc=com 的数据源连接到 data-source-pool-2,如将 LDAP 数据源连接到数据源池所述。

  4. (可选的)配置负载平衡。

    有关信息,请参见配置负载平衡

  5. 创建基 DN 为 dc=example1,dc=com 且指向 data-source-pool-1 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-1 \
    data-source-pool-1 dc=example1,dc=com
  6. 创建基 DN 为 dc=example2,dc=com 且指向 data-source-pool-2 的另一个数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-2 \
    data-source-pool-1 dc=example2,dc=com

    数据视图的其他属性与默认数据视图中的默认数据视图相同。

  7. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

当上级子树和从属子树存储到不同数据源时提供单一访问点的数据视图

本部分介绍如何配置数据视图,以便在将子树的上级分支和从属分支存储到不同数据源时提供单一访问点。有关此类部署的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views to Route Requests When Superior and Subordinate Subtrees Are Stored in Different Data Sources”

本部分中的示例包含三个数据视图。数据视图 1 的基 DN 级别高于数据视图 2 和数据视图 3 的基 DN。或者,换句话说,数据源 2 和数据源 3 包含的子树从属于数据源 1 的子树。下图显示了示例部署。

图 19–3 当上级子树和从属子树存储到不同数据源时路由请求的样例部署

图中显示的样例部署在上级子树和从属子树存储到不同数据源时路由请求。

将从属分支配置为单独数据视图的基 DN 时,目录代理服务器将自动从数据视图中排除子树的从属分支。

Procedure配置当上级子树和从属子树存储到不同数据源时提供单一访问点的数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为每个 LDAP 服务器创建数据源,如创建和配置 LDAP 数据源所述。

  2. 创建三个数据源池,如创建和配置 LDAP 数据源池所述。

  3. 按照将 LDAP 数据源连接到数据源池的说明将数据源连接到数据源池。

    • 将包含 dc=example,dc=com 的数据源连接到 data-source-pool-1

    • 将包含 ou=computer,dc=example,dc=com 的数据源连接到 data-source-pool-2

    • 将包含 ou=people,dc=example,dc=com 的数据源连接到 data-source-pool-3

  4. (可选的)配置负载平衡。

    有关信息,请参见配置负载平衡

  5. 创建基 DN 为 dc=example,dc=com 且数据源池为 data-source-pool-1 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-1 \
     data-source-pool-1 dc=example,dc=com
  6. 创建基 DN 为 ou=computer,dc=example,dc=com 且数据源池为 data-source-pool-2 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-2 \
     data-source-pool-2 ou=computer,dc=example,dc=com
  7. 创建基 DN 为 ou=people,dc=example,dc=com 且数据源池为 data-source-pool-3 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-3 \
     data-source-pool-3 ou=people,dc=example,dc=com
  8. 通过查看 excluded-subtrees 参数,验证子树 ou=computer,dc=example, dc=comou=people,dc=example, dc=com 是否已从 dataview-1 中排除。


    $ dpconf get-ldap-data-view-prop -h host1 -p 1389 dataview-1 excluded-subtrees

    将返回已排除的子树的列表。

  9. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

第 20 章 目录代理服务器证书

本章介绍如何在目录代理服务器上配置证书。有关在目录服务器上配置证书的信息,请参见管理证书

本章中的过程使用 dpadmdpconf 命令。有关这些命令的信息,请参见 dpadm(1M)dpconf(1M) 手册页。

本章包含以下主题:

默认的自签名证书

创建目录代理服务器实例时,该实例具有默认的自签名证书。自签名证书是一个公钥/私钥对,其中公钥是由目录代理服务器自签名的。

Procedure查看默认的自签名证书

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看默认的自签名证书。


    $ dpadm show-cert instance-path defaultservercert

创建、请求和安装目录代理服务器的证书

要在目录代理服务器上运行安全套接字层 (Secure Sockets Layer, SSL),必须使用自签名证书或公钥基础结构 (Public Key Infrastructure, PKI) 解决方案。

PKI 解决方案需要使用外部证书颁发机构 (Certificate Authority, CA)。要使用 PKI 解决方案,您需要包含公钥和私钥的 CA 签名服务器证书。此证书特定于一个目录代理服务器实例。此外,还需要包含公钥的可信 CA 证书。可信 CA 证书可确保来自 CA 的所有服务器证书都是可信的。此证书有时称为 CA 根密钥或根证书。

有关如何创建非默认的自签名证书,以及如何请求和安装 CA 签名证书的信息,请参见以下过程。

Procedure创建非默认的目录代理服务器自签名证书

在创建目录代理服务器实例时,将自动提供默认的自签名证书。如果要使用非默认设置创建自签名证书,请执行以下过程。

此过程将为服务器证书创建公钥/私钥对,其中公钥由目录代理服务器签名。自签名证书的有效期为三个月。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 要创建非默认的目录代理服务器自签名证书,请键入:


    $ dpadm add-selfsign-cert instance-path cert-alias
    

    其中 cert-alias 是自签名证书的名称。

    例如,可以按如下方式创建一个名为 my-self-signed-cert 的证书:


    $ dpadm add-selfsign-cert /local/dps my-self-signed-cert

    有关所有命令选项的描述,请参见 dpadm(1M) 手册页,或者在命令行中键入 dpadm add-selfsign-cert --help

Procedure请求目录代理服务器的 CA 签名证书

自签名证书对于测试非常有用。但是在生产环境中,使用可信证书颁发机构 (Certificate Authority, CA) 颁发的证书会更加安全。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 请求 CA 签名的服务器证书。


    $ dpadm request-cert instance-path cert-alias
    

    其中 cert-alias 是要请求的证书的名称。证书颁发机构可能需要该命令的所有选项以识别服务器。有关所有命令选项的描述,请参见 dpadm(1M) 手册页。

    用于获取 CA 证书的过程取决于所使用的 CA。某些商业CA 会提供一个允许您从中下载证书的 Web 站点,某些 CA 则会以电子邮件的方式将证书发送给您。

    例如,可以请求一个名为 my-CA-signed-cert 的证书,如下所示:


    $ dpadm request-cert -S cn=my-request,o=test /local/dps my-CA-signed-cert
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBYDCBygIBADAhMQ0wCwYDVQQDEwRnZXJpMRAwDgYDVQQDEwdteWNlcnQ0MIGfMA0GCSqGSIb3
    DQEBAQUAA4GNADCBiQKBgQC3v9ubG468wnjBDAMbRrEkmFDTQzT+LO30D/ALLXOiElVsHrtRyWhJ
    PG9cURI9uwqs15crxCpJvho1kt3SB9+yMB8Ql+CKnCQDHlNAfnn30MjFHShv/sAuEygFsN+Ekci5
    W1jySYE2rzE0qKVxWLSILFo1UFRVRsUnORTX/Nas7QIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEA
    fcQMnZNLpPobiX1xy1ROefPOhksVz8didY8Q2fjjaHG5lajMsqOROzubsuQ9Xh4ohT8kIA6xcBNZ
    g8FRNIRAHCtDXKOdOm3CpJ8da+YGI/ttSawIeNAKU1DApF9zMb7c2lS4yEfWmreoQdXIC9YeKtF6
    zwbn2EmIpjHzETtS5Nk=
    -----END NEW CERTIFICATE REQUEST-----

    使用 dpadm request-cert 命令请求证书时,此证书请求是保密性增强的电子邮件 (Privacy Enhanced Mail, PEM) 格式的 PKCS #10 证书请求。 PEM 是由 RFC 1421 至 1424 指定的格式。有关详细信息,请参见 http://www.ietf.org/rfc/rfc1421.txt。PEM 格式表示 ASCII 格式的 base64 编码的证书请求。

    请求 CA 签名的证书时,将创建一个临时的自签名证书。收到并安装来自 CA 的 CA 签名证书时,新证书将取代临时的自签名证书。

  2. 按照程序将证书请求发送给 CA。

    发送请求之后,您必须等待 CA 对请求做出响应,即提供您的证书。请求的响应时间会有所不同。例如,如果 CA 在您的公司内部,则响应时间可能很短。但是,如果 CA 在公司外部,则 CA 可能需要几个星期才能响应您的请求。

  3. 保存从 CA 收到的证书。

    以文本文件的形式保存证书,并将此证书备份到安全位置。

Procedure安装目录代理服务器的 CA 签名服务器证书

要信任 CA 签名的服务器证书,必须在目录代理服务器实例上安装此证书。此过程将 CA 证书的公钥安装到目录代理服务器上的证书数据库中。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看是否已安装此 CA 的可信 CA 证书。

    要执行此操作,请列出所有已安装的 CA 证书,如列出 CA 证书所述。

  2. 如果未安装可信 CA 证书,请将其添加到目录代理服务器实例上的证书数据库中。


    $ dpadm add-cert instance-path cert-alias cert-file
    

    其中 cert-alias 是可信 CA 证书的名称,cert-file 是包含可信 CA 证书的文件的名称。

  3. 将 CA 签名的服务器证书安装到证书数据库中。


    $ dpadm add-cert instance-path cert-alias cert-file
    

    其中 cert-alias 是 CA 签名服务器证书的名称,cert-file 是包含 CA 签名服务器证书的文件的名称。请注意,cert-alias 必须与证书请求中所使用的 cert-alias 相同。

    例如,可以按如下方式将名为 CA-cert 的 CA 签名服务器证书添加到 /local/dps 上的证书数据库中:


    $ dpadm add-cert /local/dps CA-cert /local/safeplace/ca-cert-file.ascii

续订过期的目录代理服务器 CA 签名证书

本部分介绍如何续订过期的 CA 签名服务器证书。

Procedure续订过期的目录代理服务器 CA 签名服务器证书

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 从 CA 获取更新的证书。

  2. 在目录代理服务器实例上安装证书。


    $ dpadm renew-cert instance-path cert-alias cert-file
    

    其中 cert-alias 是新证书的名称,cert-file 是包含此证书的文件的名称。有关所有命令选项的描述,请参见 dpadm(1M) 手册页。

列出证书

有关如何列出服务器证书和 CA 证书的信息,请参见以下过程。

Procedure列出服务器证书

此过程将列出在目录代理服务器实例上安装的所有证书。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 列出目录代理服务器实例上证书数据库中的服务器证书。


    $ dpadm list-certs instance-path
    

    默认情况下,目录代理服务器实例包含一个名为 defaultservercert 的服务器证书。文本 Same as issuer 表明默认证书是自签名的服务器证书。

    例如:


    $ dpadm list-certs /local/dps
    Alias             Valid from       Expires on       Self-signed? Issued by          Issued to
    ----------------- ---------------- ---------------- ------------ ------------------ --------------
    defaultservercert 2006/06/01 04:15 2008/05/31 04:15 y            CN=myserver:myport Same as issuer
    1 certificate found.

Procedure列出 CA 证书

此过程将列出在目录代理服务器实例上安装的 CA 证书。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 列出目录代理服务器实例上证书数据库中的 CA 证书。


    $ dpadm list-certs -C instance-path
    

    例如:


    $ dpadm list-certs -C /local/dps
    Alias   Valid from       Expires on        Built-in  Issued by    Issued to
    ------  ----------       ----------------  --------- ---------    ---------
    CAcert1 1999/06/21 06:00 2020/06/21 06:00  y         CN=company1, O=company2
    ...

将后端 LDAP 服务器的证书添加到目录代理服务器上的证书数据库中

本部分介绍如何将后端 LDAP 服务器的证书添加到目录代理服务器上的证书数据库中。

Procedure将后端目录服务器的证书添加到目录代理服务器上的证书数据库中

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 使用以下命令语法以 PEM 格式显示后端目录服务器中的证书。


    dsadm show-cert -F ascii instance-path [cert-alias]

    如果未指定 cert-alias,将显示默认的服务器证书。有关所有命令选项的描述,请参见 dsadm(1M) 手册页。

    例如,显示默认的自签名服务器证书,如下所示:


    $ dsadm show-cert -F ascii /local/ds defaultCert
    -----BEGIN CERTIFICATE-----
    MIICJjCCAY+gAwIBAgIFAIKL36kwDQYJKoZIhvcNAQEEBQAwVzEZMBcGA1UEChMQ
    U3VuIE1pY3Jvc3lzdGVtczEZMBcGA1UEAxMQRGlyZWN0b3J5IFNlcnZlcjENMAsG
    A1UEAxMEMjAxMTEQMA4GA1UEAxMHY29uZHlsZTAeFw0wNjA1MjIxMTQxNTVaFw0w
    NjA4MjIxMTQxNTVaMFcxGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxGTAXBgNV
    BAMTEERpcmVjdG9yeSBTZXJ2ZXIxDTALBgNVBAMTBDIwMTExEDAOBgNVBAMTB2Nv
    bmR5bGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK9U3ry3sJmEzwQY8CGd
    7S2MTZuBedo03Vea1lfDtD08WIsdDMzhHplTdeHAkWWNc8g2PDcEFXeWp9UXFMuD
    Pcia7t8HtFkm73VmlriWhMd8nn3l2vkxhsPK2LHFEeOIUDR9LBBiMiEeLkjdoEhE
    VLMSoYKqKI+Aa5grINdmtFzBAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAF4eDbSd7
    qy2l10dIogT+rnXZ362gLTlQFCblhbGpmmptbegUdL1ITGv/62q1isPV2rW7CkjM
    Cqb0fo3k5UkKKvW+JbMowpQeAPnlgpX612HuDr1tldnKV4eyU7gpG31t/cpACALQ
    7OPi1A7oVb2Z8OJKfEJHkp3txBSsiI2gTkk=
    -----END CERTIFICATE-----
  2. 保存证书。

    以文本文件的形式保存证书,并将此证书备份到安全位置。

  3. 将后端 LDAP 服务器的证书添加到目录代理服务器实例上的证书数据库中。


    $ dpadm add-cert instance-path cert-alias cert-file
    

    其中 cert-alias 是此证书的名称,cert-file 是包含此证书的文件的名称。

    例如,可以按如下方式添加证书 defaultCert


    $ dpadm add-cert /local/dps defaultCert /local/safeplace/defaultCert.ascii

将证书导出到后端 LDAP 服务器

后端 LDAP 服务器可能会请求目录代理服务器中的证书。本部分介绍如何配置目录代理服务器,以便将证书导出到后端 LDAP 服务器。

Procedure配置目录代理服务器以便将客户端证书导出到后端 LDAP 服务器

  1. 指定要发送到后端 LDAP 服务器的证书。


    $ dpconf set-server-prop -h host -p port ssl-client-cert-alias:cert-alias
    

    其中 cert-alias 是此证书的名称。有关所有命令选项的描述,请参见 dpconf(1M) 手册页。

  2. 将证书内容复制到某个文件。


    $ dpadm show-cert -F ascii -o filename instance-path cert-alias
    
  3. 将证书添加到后端 LDAP 服务器的证书数据库中,如添加 CA 签名的服务器证书和可信的 CA 证书所述。

接下来的操作

将后端 LDAP 服务器配置为进行客户端验证。有关如何为目录服务器执行此操作的信息,请参见配置凭证级别和验证方法

另请参见

有关如何配置客户端和目录代理服务器之间基于证书的验证的信息,请参见配置基于证书的验证

备份和恢复目录代理服务器的证书数据库

使用 dpadm 备份目录代理服务器时,将备份服务器证书。备份的证书存储在 archive-path/alias 目录中。

有关如何备份和恢复目录代理服务器的信息,请参见备份和恢复目录代理服务器实例

访问证书数据库时提示输入密码

默认情况下,证书数据库的密码是在内部进行管理的。因此,您无需键入证书密码或指定密码文件。通过存储的密码在内部管理证书数据库时,密码会存储在安全的环境中。

为了使证书更加安全,以及对证书进行更多控制,可以在命令行上将目录代理服务器配置为提示输入密码。这样,对于除 autostartbackupdisable-serviceenable-serviceinforestorestop 之外的所有 dpadm 子命令,系统都会提示您输入密码。

有关将目录代理服务器配置为提示(或不提示)输入密码的信息,请参见以下过程。

Procedure访问证书数据库时提示输入密码

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 停止服务器。


    $ dpadm stop instance-path
    Directory Proxy Server instance 'instance-path' stopped
  2. 将密码提示标志设置为 on,然后键入并确认证书数据库密码。


    $ dpadm set-flags instance-path cert-pwd-prompt=on
    Choose the certificate database password:
    Confirm the certificate database password:
  3. 启动服务器,然后键入证书数据库密码。


    $ dpadm start instance-path
    Enter the certificate database password:

Procedure访问证书数据库时禁用密码提示

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 停止服务器。


    $ dpadm stop instance-path
    Directory Proxy Server instance 'instance-path' stopped
  2. 将密码提示标志设置为 off,然后键入现有密码。


    $ dpadm set-flags instance-path cert-pwd-prompt=off
    Enter the old password:
  3. 启动服务器。


    $ dpadm start instance-path
    

第 21 章 目录代理服务器负载平衡和客户端相似性

有关负载平衡和客户端相似性的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 16  章 “Directory Proxy Server Load Balancing and Client Affinity”。本章包含以下主题:

配置负载平衡

有关负载平衡的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Load Balancing”。本部分介绍如何配置负载平衡,并提供了样例配置。

Procedure选择负载平衡算法

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 通过查看 LDAP 数据源池的属性获取当前的负载平衡算法。


    $ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name
    

    LDAP 数据源池的默认属性如下所示:


    client-affinity-policy    :  write-affinity-after-write
    client-affinity-timeout   :  20s
    description               :  -
    enable-client-affinity    :  false
    load-balancing-algorithm  :  proportional

    默认情况下,负载平衡算法为 proportional(比例)

  2. 将 LDAP 数据源池配置为使用某种算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
      load-balancing-algorithm:selected-algorithm
    

    其中 selected-algorithm 可为以下任一选项:

    • 故障转移

    • 操作相似性

    • 比例

    • 饱和度

    有关算法的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Introduction to Load Balancing”

  3. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

Procedure配置负载平衡的权重

对于连接到数据源池的某个数据源,其权重需要相对于连接到数据源池的任何其他数据源的权重进行配置。请考虑所有连接数据源的权重。对于某一类型的操作,如果数据源的权重为已禁用,则始终不会将此类型的请求发送到该数据源。如果数据源的权重为 0(零),则不会将任何请求分发到该数据源。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看已连接到数据源池的数据源的列表。


    $ dpconf list-attached-ldap-data-sources -h host -p port pool-name
    
  2. 查看某个连接数据源的属性。


    $ dpconf get-attached-ldap-data-source-prop pool-name \
     attached-data-source-name
    

    连接数据源的属性可定义每种操作类型的权重。连接数据源的默认权重如下所示:


    add-weight        :  disabled  
    bind-weight       :  disabled  
    compare-weight    :  disabled  
    delete-weight     :  disabled  
    modify-dn-weight  :  disabled  
    modify-weight     :  disabled  
    search-weight     :  disabled 
  3. 配置其中一个连接数据源的权重。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name \
     attached-data-source-name add-weight:value \
     bind-weight:value compare-weight:value delete-weight:value \
     modify-dn-weight:value modify-weight:value search-weight:value
    
  4. 对其他连接数据源重复步骤 2步骤 3

  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    

    例如,数据源池可以包含具有以下权重的数据源:


    $ dpconf list-attached-ldap-data-sources -h host1 -p 1389 -v myPool
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    DS-1     disabled   3		       disabled       disabled      
    DS-2     2          2           2              2             
    DS-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    disabled         disabled      disabled
    2                2             2
    1                1             1

负载平衡的示例配置

本部分包含配置每种负载平衡算法的样例过程。

Procedure配置负载平衡的比例算法

有关比例算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Proportional Algorithm for Load Balancing”

在此示例中,为数据源 ds–1 配置的权重是其他两个数据源权重的两倍。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图

  1. 将数据源池配置为使用负载平衡的比例算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
      load-balancing-algorithm:proportional
  2. 配置第一个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  3. 配置第二个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 配置第三个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    ds-1     2          2           2              2             
    ds-2     1          1           1              1             
    ds-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    2                2             2
    1                1             1
    1                1             1
  6. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

Procedure配置负载平衡的饱和度算法

有关饱和度算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Saturation Algorithm for Load Balancing”

在此示例中,数据源 ds-1 执行大多数绑定操作,但不执行任何其他类型的操作。对三个数据源的权重进行如下配置:

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图

  1. 将数据源池配置为使用负载平衡的饱和度算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:saturation
  2. 配置第一个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:disabled bind-weight:3 compare-weight:disabled delete-weight:disabled \
     modify-dn-weight:disabled modify-weight:disabled search-weight:disabled
  3. 配置第二个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  4. 配置第三个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    ds-1     disabled   3		       disabled       disabled      
    ds-2     2          2           2              2             
    ds-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    disabled         disabled      disabled
    2                2             2
    1                1             1
  6. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

Procedure为全局帐户锁定配置操作相似性算法

有关此算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Operational Affinity Algorithm for Global Account Lockout”

此示例具有三个数据源。数据源 ds-1 被配置为接收所有绑定请求。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图

  1. 将数据源池配置为使用操作相似性算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:operational-affinity
  2. 配置第一个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:1 bind-weight:100 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  3. 配置第二个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 配置第三个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    ds-1     1          100         1              1             
    ds-2     1          1           1              1             
    ds-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    1                1             1
    1                1             1
    1                1             1
  6. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

Procedure为缓存优化配置操作相似性算法

有关此算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Operational Affinity Algorithm for Cache Optimization”

此示例具有三个数据源。数据源 ds-1 处理所有搜索和比较操作。当 ds-1 响应请求时,目标条目将被存储到缓存中。如果 ds-1 重复响应同一请求,数据源可以使用缓存的数据。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图

  1. 将数据源池配置为使用操作相似性算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:operational-affinity
  2. 配置第一个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:1 bind-weight:1 compare-weight:100 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:100
  3. 配置第二个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 配置第三个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    ds-1     1          1           100            1             
    ds-2     1          1           1              1             
    ds-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    1                1             100
    1                1             1
    1                1             1
  6. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

Procedure配置负载平衡的故障转移算法

有关故障转移算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Failover Algorithm for Load Balancing”

此示例具有三个数据源。数据源 ds-1 接收所有请求。如果 ds-1 出现故障,ds-2 将接收所有请求,直到 ds-1 恢复为止。如果 ds-2ds-1 恢复之前出现故障,ds-3 将接收所有请求。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图

  1. 将数据源池配置为使用负载平衡的故障转移算法。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:failover
  2. 配置第一个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:3 bind-weight:3 compare-weight:3 delete-weight:3 modify-dn-weight:3 \
     modify-weight:3 search-weight:3
  3. 配置第二个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  4. 配置第三个数据源的属性。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 比较连接数据源的主要参数。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    SRC_NAME add-weight bind-weight compare-weight delete-weight 
    -------- ---------- ----------- -------------- ------------- 
    ds-1     3          3           3              3             
    ds-2     2          2           2              2             
    ds-3     1          1           1              1             
    
    modify-dn-weight modify-weight search-weight
    ---------------- ------------- -------------
    3                3             3
    2                2             2
    1                1             1
  6. 重新启动目录代理服务器实例。


    $ dpadm restart instance-path
    

配置目录代理服务器以执行负载平衡

一个简单的负载平衡案例就是将搜索和比较操作发送到一组目录,而将其他操作发送到另一组目录。目录代理服务器接收所有客户端操作。服务器必须确定哪组目录获取读取操作,哪组目录获取其他操作。

    配置目录代理服务器以处理此负载平衡方案的重要阶段如下所示。

  1. 将目录添加为目录代理服务器的数据源。

  2. 将数据源添加到数据源池中。

  3. 将某些数据源配置为接受搜索和比较操作,而将其他数据源配置为接受添加、绑定、删除、修改以及修改 DN 操作。

  4. 将数据源池添加到数据视图中。

下面的示例使用侦听端口 9389 的目录代理服务器。此处按上述方式将代理配置为在一个目录服务器实例 ds1:1389(用于处理搜索和比较操作)和另一个目录服务器实例 ds2:2389(用于处理其他操作)之间平衡负载。

第一步是创建并启用数据源。此步骤需要重新启动代理服务器。


$ dpconf create-ldap-data-source -p 9389 ds1 localhost:1389
$ dpconf create-ldap-data-source -p 9389 ds2 localhost:2389
$ dpconf set-ldap-data-source-prop -p 9389 ds1 is-enabled:true
$ dpconf set-ldap-data-source-prop -p 9389 ds2 is-enabled:true
$ dpadm restart /local/dps

第二步是将数据源添加到数据源池中。


$ dpconf create-ldap-data-source-pool -p 9389 "Directory Pool"
$ dpconf attach-ldap-data-source -p 9389 "Directory Pool" ds1 ds2

第三步是将 ds1 配置为接受搜索和比较操作,而将 ds2 配置为接受其他操作。


$ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds1 \
add-weight:disabled bind-weight:disabled compare-weight:1 delete-weight:disabled \
modify-dn-weight:disabled modify-weight:disabled search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds2 \
add-weight:1 bind-weight:1 compare-weight:disabled delete-weight:1 \
modify-dn-weight:1 modify-weight:1 search-weight:disabled

第四步是将数据源池添加到数据视图中,以便将客户端应用程序请求路由到该池。


$ dpconf create-ldap-data-view -p 9389 "Balanced View" "Directory Pool" \
dc=example,dc=com

配置客户端相似性

客户端相似性可以降低负载平衡部署中的传播延迟风险。有关客户端相似性的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Client Affinity”。本部分介绍如何配置客户端连接和数据源之间的相似性,并提供了样例配置。

Procedure配置客户端相似性

此过程介绍如何配置客户端连接和数据源之间的相似性。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 通过查看数据源池属性来查看当前的负载平衡算法。


    $ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name
    

    数据源池的默认属性如下所示:


    client-affinity-policy    :  write-affinity-after-write
    client-affinity-timeout   :  20s
    description               :  -
    enable-client-affinity    :  false
    load-balancing-algorithm  :  proportional

    可使用以下参数配置客户端相似性:client-affinity-policy client-affinity-timeoutenable-client-affinity。要获取有关属性的描述及其有效值列表,请键入:


    dpconf help-properties ldap-data-source-pool client-affinity-policy \
     client-affinity-timeout enable-client-affinity

    有关属性的详细信息,请参见以下手册页:client-affinity-policy(5dpconf)client-affinity-timeout(5dpconf)enable-client-affinity(5dpconf)

  2. 启用客户端相似性。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     enable-client-affinity:true
  3. 选择客户端相似性的策略。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:selected-policy
    

    其中 selected-policy 可为以下任一选项:

    write-affinity-after-write

    第一个写入请求之后的写入请求的相似性

    read-write-affinity-after-write

    第一个写入请求之后的所有请求的相似性

    read-write-affinity-after-any

    第一个读取请求或写入请求之后的所有请求的相似性

    read-affinity-after-write

    写入请求之后的第一个读取请求的相似性

  4. 配置客户端相似性的持续时间。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-timeout:time-out[unit]

    超时时间的默认单位为毫秒。

客户端相似性的示例配置

本部分包含与客户端相似性有关的示例配置, 并包含复制延迟、验证写入操作和基于连接的路由的示例。

Procedure配置当数据源池包含主服务器和使用方时复制延迟的客户端相似性

此过程为第一个写入操作之后 3 秒内发生的所有读取和写入操作配置客户端相似性。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置数据源池的相似性参数。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-write client-affinity-timeout:3000 \
     enable-client-affinity:true

Procedure配置客户端相似性以通过读取操作验证每个写入操作

此过程用于为每个写入操作后的第一个读取操作配置客户端相似性。此示例可用于特定应用程序,在该应用程序中,指定的绑定 DN 通过执行读取操作来验证每个写入操作。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置数据源池的相似性参数。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-affinity-after-write enable-client-affinity:true

Procedure为基于连接的路由配置客户端相似性

在 Directory Proxy Server 6.0 之前的版本中,将在客户端和 LDAP 服务器之间打开一个连接。来自客户端的所有请求都使用同一连接,直到该连接关闭为止。此类型的路由称为基于连接的路由。此过程介绍如何为基于连接的路由配置客户端相似性。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

开始之前

请确保将所有数据源都连接到数据源池,并且将 client-cred-mode 设置为 use-client-identity

  1. 配置数据源池的相似性参数。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-any enable-client-affinity:true

第 22 章 目录代理服务器分配

目录代理服务器通过定义数据视图来启用分配。数据视图是用视图基定义的,视图基决定该数据视图中条目的基 DN。根据目录代理服务器中提供的分配算法,可以指定在不同的数据视图之间分配条目的方式。

有关目录代理服务器分配的概述和示例使用案例的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 17  章 “Directory Proxy Server Distribution”

本章包含以下主题:

配置目录代理服务器分配算法

目录代理服务器提供了以下分配算法:

配置模式匹配分配算法

目录代理服务器会根据请求的参数与一个或多个模式的匹配情况,将请求分配给数据视图。设置以下参数可配置模式匹配分配算法:

filter 结尾的配置属性是 LDAP 过滤器,而不是正则表达式。这些 LDAP 过滤器的值是基于传入的搜索请求中所包含的 LDAP 过滤器来计算的。

例如,使用以下设置配置模式匹配分配算法,将 uid 为偶数的用户的请求发送给偶数数据视图,将 uid 为奇数的用户的请求发送给奇数数据视图。


$ dpconf set-ldap-data-view-prop even
pattern-matching-base-object-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\
(uid=*4)(uid=*6)(uid=*8))'\
pattern-matching-one-level-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\
(uid=*4)(uid=*6)(uid=*8))'\
pattern-matching-subtree-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\
(uid=*4)(uid=*6)(uid=*8))'\
pattern-matching-dn-regular-expression:'uid=[0-9]+[02468]'
distribution-algorithm: pattern-matching 

$ dpconf set-ldap-data-view-prop odd
pattern-matching-base-object-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\
(uid=*5)(uid=*7)(uid=*9))'\
pattern-matching-one-level-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\
(uid=*5)(uid=*7)(uid=*9))'\
pattern-matching-subtree-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\
(uid=*5)(uid=*7)(uid=*9))'\
pattern-matching-dn-regular-expression:'uid=[0-9]+[13579]'
distribution-algorithm: pattern-matching 

(uid=\2a) 表达式中,\2a* 的 ASCII 表示形式,其中 2a 是两个十六进制数字。(uid=\2a) 表达式可确保数据视图接受所有 uid 的请求。

模式匹配算法支持的语法由 Java 模式类(请参见 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html 上提供的文档)来指定。此语法不同于常规的 regex 语法。

配置数字分配算法

目录代理服务器会根据请求中的 RDN 数值,将请求分配给数据视图。将从数据视图的基 DN 下的第一个 RDN 值中获取该数值。设置以下参数来定义数字范围:

例如,配置数字分配算法,将介于 0 和 99 之间的 uid 的请求发送给特定数据视图。对于其余用户,使用相同的语法,但用不同的数据视图。


$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:numeric \
 numeric-attrs:uid numeric-lower-bound:0 numeric-upper-bound:99

配置字典顺序分配算法

目录代理服务器会根据请求中 RDN 的字典顺序值,将请求分配给数据视图。将从数据视图的基 DN 下的第一个 RDN 值中获取字典顺序范围。设置以下参数来定义字典顺序范围:

例如,配置字典顺序分配算法,将名称以 AM 开头的用户的请求发送给一个数据视图,而将其余用户的请求发送给另一个数据视图。


$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:lexicographic \
 lexicographic-attrs:cn lexicographic-lower-bound:A lexicographic-upper-bound:M

配置复制分配算法

目录代理服务器会根据数据视图在复制中的角色,将请求分配给数据视图。该算法将写入操作分配给数据源池中的所有数据源,将读取操作分配给单个数据源。复制角色由 replication-role 参数来定义。数据视图可以具有提供者角色或使用者角色。


$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:replication

配置自定义分配算法

可以为所有类型的数据视图配置自定义分配算法,即 ldap-data-viewjdbc-data-viewldif-data-viewjoin-data-view。在以下步骤中,将仅为 ldap-data-view 设置该算法。

Procedure配置自定义分配算法

  1. 设置 extension-jar-file-url 属性以包含 Java 归档 (Java Archive, JAR) 文件(包含分配算法类)的路径。


    $ dpconf set-server-prop -h host -p port extension-jar-file-url:jar file path
    

    可以将 jar file path 替换为有效 JAR 文件路径,如 file:/expt/dps/custom_plugin/myjar.jar

  2. 在配置 custom-distribution-algorithm 之前,请将 distribution-algorithm 设置为 none


    $ dpconf set-ldap-data-view-prop view name distribution-algorithm:none
  3. custom-distribution-algorithm 属性设置为自定义分配算法类。


    $ dpconf set-ldap-data-view-prop view name custom-distribution-algorithm:PackageName.AlgoClassName
    

配置目录代理服务器以分配后缀数据

一个简单的数据分配案例就是在一组目录中存储 UID 以 A 到 M 开头的条目,而在另一组目录中存储 UID 以 N 到 Z 开头的条目。目录代理服务器接收所有客户端操作。服务器必须确定哪组目录处理 A 到 M,哪组目录处理 N 到 Z。

    配置目录代理服务器以处理此数据分配方案的重要阶段如下所示。

  1. 将目录添加为目录代理服务器的数据源。

  2. 在数据源池中添加数据源以处理不同的数据分配。

  3. 创建数据视图,以便将客户端请求分配到相应的数据池。

  4. 拆分要装入相应数据源中的 LDIF。

  5. 将拆分的 LDIF 导入到相应的数据源中。

  6. 为连接到相应数据池的数据源调整基于操作的权重。

下面的示例使用侦听端口 9389 的目录代理服务器。为了简化示例,此处按上述方式将代理配置为仅在三个目录服务器实例中分配数据。要提高可用性和读取可伸缩性,请使用复制的目录拓扑来存储 LDAP 数据。一个目录服务器实例 dsA-M:1389 处理 UID 以 A 到 M 开头的用户条目。另一个目录服务器实例 dsN-Z:2389 处理 UID 以 N 到 Z 开头的用户条目。最后一个目录实例 dsBase:3389 处理后缀的基本条目。

第一步是创建并启用数据源。基本数据源将没有 UID 的条目保存在后缀根目录附近。在典型部署中,这些条目的数量比分配的条目少得多。


$ dpconf create-ldap-data-source -p 9389 dsA-M localhost:1389
$ dpconf set-ldap-data-source-prop -p 9389 dsA-M is-enabled:true

$ dpconf create-ldap-data-source -p 9389 dsN-Z localhost:2389
$ dpconf set-ldap-data-source-prop -p 9389 dsN-Z is-enabled:true

$ dpconf create-ldap-data-source -p 9389 dsBase localhost:3389
$ dpconf set-ldap-data-source-prop -p 9389 dsBase is-enabled:true

第二步是将数据源添加到数据源池中。


$ dpconf create-ldap-data-source-pool -p 9389 "Base Pool"
$ dpconf attach-ldap-data-source -p 9389 "Base Pool" dsBase

$ dpconf create-ldap-data-source-pool -p 9389 "A-M Pool"
$ dpconf attach-ldap-data-source -p 9389 "A-M Pool" dsA-M

$ dpconf create-ldap-data-source-pool -p 9389 "N-Z Pool"
$ dpconf attach-ldap-data-source -p 9389 "N-Z Pool" dsN-Z

第三步是创建一些数据视图,以便将客户端请求分配到相应的数据池。请注意基本池是如何处理 dc=example,dc=com 的,而保存根据 UID 值分配的数据的池是如何处理 ou=people,dc=example,dc=com 的。此步骤需要重新启动服务器。


$ dpconf create-ldap-data-view -p 9389 "Base View" "Base Pool" \
dc=example,dc=com

$ dpconf create-ldap-data-view -p 9389 "A-M View" "A-M Pool" \
ou=people,dc=example,dc=com
$ dpconf set-ldap-data-view-prop -p 9389 "A-M View" \
distribution-algorithm:lexicographic lexicographic-attrs:uid \
lexicographic-lower-bound:a lexicographic-upper-bound:m
The proxy server will need to be restarted in order for the changes to take effect

$ dpconf create-ldap-data-view -p 9389 "N-Z View" "N-Z Pool" \
ou=people,dc=example,dc=com
$ dpconf set-ldap-data-view-prop -p 9389 "N-Z View" \
distribution-algorithm:lexicographic lexicographic-attrs:uid \
lexicographic-lower-bound:n lexicographic-upper-bound:z
The proxy server will need to be restarted in order for the changes to take effect
$ dpadm restart /local/dps

第四步是拆分要加载到相应数据源中的 LDIF。此示例使用 dsadm split-ldif 命令执行初始拆分,并进行部分文件编辑以保留所有数据源中的顶级条目。这既可以保留指定访问控制指令的顶级条目,又可以对每个数据源执行单个导入命令。


$ dpadm split-ldif /local/dps /local/ds6/ldif/Example.ldif /tmp/
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Version: 1.5.0_09
 (Java Home: /local/jre)
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Heap Space: Total Memory
 (-Xms) = 3MB,
 Max Memory (-Xmx) = 63MB
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Operating System: SunOS/sparc 5.10
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Entry starting at line 0 does not
 start with a DN
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Kirsten is
 a Directory Administrator and therefore should not" of entry "uid=kvaughan, ou=People,
 dc=example,dc=com" starting at line 112 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Robert is
 a Directory Administrator and therefore should not" of entry "uid=rdaugherty,
 ou=People, dc=example,dc=com" starting at line 298 as an attribute/value pair --
 no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - ERROR - Unable to parse line "# Harry is
 a Directory Administrator and therefore should not" of entry "uid=hmiller, ou=People,
 dc=example,dc=com" starting at line 556 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - INFO  - SplitLDIF processing complete.
  Processed 156 entries.
$ ls /tmp/*ldif
/tmp/a-m view.ldif    /tmp/base view.ldif   /tmp/n-z view.ldif

此步骤还需要在导入之前添加到 LDIF 中的顶级条目。


$ cp /local/ds6/ldif/Example.ldif /tmp/top.ldif
$ vi /tmp/top.ldif 
$ cat /tmp/top.ldif  
dn: dc=example,dc=com
objectclass: top
objectclass: domain
dc: example
aci: (target ="ldap:///dc=example,dc=com")(targetattr !=
 "userPassword")(version 3.0;acl "Anonymous read-search access";
 allow (read, search, compare)(userdn = "ldap:///anyone");)
aci: (target="ldap:///dc=example,dc=com") (targetattr =
  "*")(version 3.0; acl "allow all Admin group"; allow(all) groupdn =
  "ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";)

$ cat /tmp/top.ldif /tmp/base\ view.ldif > /tmp/top\ and\ base\ view.ldif
$ cat /tmp/top.ldif /tmp/a-m\ view.ldif > /tmp/top\ and\ a-m\ view.ldif
$ cat /tmp/top.ldif /tmp/n-z\ view.ldif > /tmp/top\ and\ n-z\ view.ldif

第五步是将拆分的 LDIF 导入到相应的数据源中。此处,处理基本条目的目录侦听端口 3389。处理 A-M 的目录侦听端口 1389。处理 N-Z 的目录侦听端口 2389。


$ dsconf import -p 1389 /tmp/top\ and\ a-m\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).

$ dsconf import -p 2389 /tmp/top\ and\ n-z\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).
$ dsconf import -p 3389 /tmp/top\ and\ base\ view.ldif dc=example,dc=com
...
Task completed (slapd exit code: 0).

第六步是为连接到相应数据池的数据源调整基于操作的权重。如果客户端应用程序执行搜索以外的操作,还必须为这些操作设置权重。


$ dpconf set-attached-ldap-data-source-prop -p 9389 "Base Pool" dsBase search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "A-M Pool" dsA-M search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "N-Z Pool" dsN-Z search-weight:1

设置基于操作的权重后,客户端应用程序可以通过目录代理服务器进行搜索,就好像没有实际分配数据一样。

下面的搜索查找 UID 以 R 开头的用户。


$ ldapsearch -p 9389 -b dc=example,dc=com uid=rfisher
version: 1
dn: uid=rfisher, ou=People, dc=example,dc=com
cn: Randy Fisher
sn: Fisher
givenName: Randy
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: rfisher
mail: rfisher@example.com
telephoneNumber: +1 408 555 1506
facsimileTelephoneNumber: +1 408 555 1992
roomNumber: 1579

下一个搜索查找一个基本条目。


$ ldapsearch -p 9389 -b ou=groups,dc=example,dc=com cn=hr\ managers
version: 1
dn: cn=HR Managers,ou=groups,dc=example,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: HR Managers
ou: groups
uniqueMember: uid=kvaughan, ou=People, dc=example,dc=com
uniqueMember: uid=cschmith, ou=People, dc=example,dc=com
description: People who can manage HR entries

为示例使用案例创建和配置数据视图

本部分包含以下有关数据视图以及如何创建和配置数据视图的信息:

本部分中的示例假定连接处理程序允许目录代理服务器处理所有客户端连接。

当子树的不同部分存储到不同数据源时提供单一访问点的数据视图

本部分介绍如何配置一个数据视图,以便为子树的不同部分提供单一访问点。此示例包含两个具有相同基 DN 的数据视图。可使用数字分配算法将条目分配到不同的数据视图中。每组数据相等的数据源都会配置一个数据源池。下图显示了示例部署。

有关此类部署的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views to Route Requests When Different Parts of a Subtree Are Stored in Different Data Sources”

图 22–1 当子树的不同部分存储到不同数据源时提供单一访问点的样例部署

图中显示的样例部署向存储到多个数据源的不同子树部分提供单一访问点。

Procedure配置当子树的不同部分存储到不同数据源时提供单一访问点的数据视图

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为每个 LDAP 服务器创建数据源,如创建和配置 LDAP 数据源所述。

  2. 创建两个数据源池,如创建和配置 LDAP 数据源池所述。

  3. 将包含一部分子树的数据源连接到 data-source-pool-1,将包含另一部分子树的数据源连接到 data-source-pool-2,如将 LDAP 数据源连接到数据源池所述。

  4. (可选的)配置负载平衡。

    有关信息,请参见配置负载平衡

  5. 创建具有分配算法的数据视图,以选择 ou=people,dc=example,dc=comuid 介于 099 之间的条目,并将该数据视图配置为将请求指向 data-source-pool-1


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 dataview-1 \
     ldap-data-source-pool:data-source-pool-1 base-dn:ou=people,dc=example,dc=com \
     distribution-algorithm	:numeric numeric-attrs:uid numeric-lower-bound	:0 \
     numeric-upper-bound	:99
  6. 创建另一个具有分配算法的视图,以选择 ou=people,dc=example,dc=comuid 介于 100199 之间的条目,并将该数据视图配置为将请求指向 data-source-pool-2


    $ dpconf set-ldap-data-view-prop -h host1 -p 1389 dataview-2 \
     ldap-data-source-pool:data-source-pool-2 base-dn:ou=people,dc=example,dc=com \
     distribution-algorithm:numeric numeric-attrs:uid numeric-lower-bound:100
     numeric-upper-bound	:199

    数据视图的其他属性与默认数据视图中的默认数据视图相同。

  7. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

具有分层结构和分配算法的数据视图

本部分介绍如何配置一个数据视图,以便将分层结构和分配算法合并在一起。有关此类部署的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Data Views With Hierarchy and a Distribution Algorithm”

本部分中的示例包含四个数据视图。数据视图 1 的基 DN 级别高于其他数据视图的基 DN。数据视图 3 和数据视图 4 具有相同的基 DN,但数字分配算法将条目分配到不同的数据视图中。

将从属分支配置为单独数据视图的基 DN 时,目录代理服务器将自动从数据视图中排除子树的从属分支。数字分配算法可将相同子树中的条目分配到不同的数据视图中。每组数据相等的数据源都会配置一个数据源池。

下图显示了示例部署。

图 22–2 具有分层结构和分配算法的样例数据视图

图中显示了结合使用分层结构和分配算法的数据视图样例。

Procedure配置具有分层结构和分配算法的数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 为每个 LDAP 服务器创建数据源,如创建和配置 LDAP 数据源所述。

  2. 创建四个数据源池,如创建和配置 LDAP 数据源池所述。

  3. 按照将 LDAP 数据源连接到数据源池的说明将数据源连接到数据源池。

    • 将包含 dc=example,dc=com 的数据源连接到 data-source-pool-1

    • 将包含 ou=computer,dc=example,dc=com 的数据源连接到 data-source-pool-2

    • 将包含 ou=people,dc=example,dc=comuid 介于 099 之间的条目的数据源连接到 data-source-pool-3

    • 将包含 ou=people,dc=example,dc=comuid 介于 100199 之间的条目的数据源连接到 data-source-pool-4

  4. (可选的)配置负载平衡。

    有关信息,请参见配置负载平衡

  5. 创建基 DN 为 dc=example,dc=com 且指向 data-source-pool-1 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-1 \
     data-source-pool-1 dc=example,dc=com
  6. 创建基 DN 为 ou=computer,dc=example,dc=com 且指向 data-source-pool-2 的数据视图。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-2 \
     data-source-pool-2 ou=computer,dc=example,dc=com
  7. 创建基 DN 为 ou=people,dc=example,dc=com 且指向 data-source-pool-3 的数据视图。在数据视图上配置分配算法,以选择 uid 介于 099 之间的条目。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-3 \
     data-source-pool-3 ou=people,dc=example,dc=com
    $ dpconf set-ldap-data-view-prop dataview-3 distribution-algorithm:numeric \
     numeric-attrs:uid numeric-lower-bound:0 numeric-upper-bound:99
  8. 创建基 DN 为 ou=people,dc=example,dc=com 且指向 data-source-pool-4 的数据视图,并在该数据视图上配置分配算法,以选择 uid 介于 100199 之间的条目。


    $ dpconf create-ldap-data-view -h host1 -p 1389 dataview-4 \
     data-source-pool-4 ou=people,dc=example,dc=com
    $ dpconf set-ldap-data-view-prop dataview-4 distribution-algorithm:numeric \
     numeric-attrs:uid numeric-lower-bound:100 numeric-upper-bound:199
  9. 通过查看 excluded-subtrees 参数,验证子树 ou=computer,dc=example, dc=comou=people,dc=example, dc=com 是否已从 dataview-1 中排除。


    $ dpconf get-ldap-data-view-prop -h host1 -p 1389 dataview-1 excluded-subtrees

    将返回已排除的子树的列表。

  10. 重新启动目录代理服务器实例以使更改生效。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

第 23 章 目录代理服务器虚拟

本章介绍如何创建虚拟数据视图。虚拟数据视图转换源数据,并向客户端应用程序显示该数据的不同视图。虚拟数据视图包括转换的 LDAP 数据视图、LDIF 数据视图、联接数据视图和 JDBCTM 数据视图。有关虚拟数据视图功能的概述以及示例使用实例的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 18  章 “Directory Proxy Server Virtualization”

您无法使用目录服务控制中心 (Directory Service Control Center, DSCC) 执行本章中的过程。必须使用命令行。

本章包含以下主题:

创建和配置 LDIF 数据视图

LDIF 数据视图是一种简单的虚拟数据视图,可在其中将 LDIF 文件显示为类似于 LDAP 数据源。与 LDAP 数据视图不同,在设置 LDIF 数据视图时无需创建数据源或数据源池。但在创建数据视图时应指定 LDIF 文件。默认情况下,无法向 LDIF 数据视图中写入内容。有关详细信息,请参见在虚拟数据视图上定义访问控制

有关创建和配置 LDIF 数据视图的信息,请参见以下过程。

Procedure创建 LDIF 数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 创建 LDIF 数据视图。


    $ dpconf create-ldif-data-view -h host -p port view-name path-to-ldif-file suffix-dn
    
  2. (可选的)查看 LDIF 数据视图的列表。


    $ dpconf list-ldif-data-views -h host -p port
    

    虚拟访问控制数据视图是唯一的默认 LDIF 数据视图。此数据视图由服务器生成,可以将请求路由到虚拟访问控制指令 (access control instruction, ACI)。

Procedure配置 LDIF 数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查看 LDIF 数据视图的属性。


    $ dpconf get-ldif-data-view-prop -h host -p port view-name
    

    LDIF 数据视图具有以下默认属性:


    alternate-search-base-dn                    :  ""
    alternate-search-base-dn                    :  dc=com
    attr-name-mappings                          :  none
    base-dn                                     :  suffixDN
    bind-pwd-attr                               :  userPassword
    contains-shared-entries                     :  -
    db-pwd-encryption                           :  clear-text
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    ldif-data-source                            :  /path/to/filename.ldif
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    process-bind                                :  -
    replication-role                            :  master
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-ldif-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

    例如,要更改数据视图的源 LDIF 文件,请设置 ldif-data-source 属性。


    $ dpconf set-ldif-data-view-prop -h host1 -p 1389 -D cn="Proxy Manager" \
    myLDIFDataView ldif-data-source:/local/files/example.ldif

在虚拟数据视图上定义访问控制

可以将虚拟视图上的 ACI 存储在 LDAP 目录或 LDIF 文件中。有关虚拟 ACI 的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Access Control On Virtual Data Views”

创建目录代理服务器实例时,将为虚拟访问控制定义以下默认配置:

Procedure定义新的 ACI 存储系统信息库

如果不想使用前面介绍的默认 ACI 配置,可以定义其他的存储系统信息库。

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 为要存储 ACI 的系统信息库创建数据视图。

  2. 将上一步创建的数据视图的名称指定为 ACI 数据视图。

    $ dpconf set-virtual-aci-prop -h host -p port aci-data-view:data-view-name
    
  3. 如果 ACI 系统信息库是 LDAP 目录,请定义访问 ACI 数据视图所需的凭证。

    $ dpconf set-virtual-aci-prop -h host -p port aci-manager-bind-dn:bind-dn
    $ dpconf set-virtual-aci-prop -h host -p port aci-manager-bind-pwd-file:filename
    

Procedure配置虚拟访问控制

无论使用的是什么 ACI 系统信息库,都必须配置虚拟访问控制。


注 –

只有代理管理员才能直接通过 ACI 数据视图创建 ACI 池和管理 ACI。如果 ACI 系统信息库是 LDAP 目录,则必须修改该目录的模式,以使其包含 aciSource 对象类和 dpsaci 属性。有关自定义该模式的详细信息,请参见扩展目录服务器模式


无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 在 ACI 系统信息库中创建 ACI 池,并设置全局 ACI。

    有关全局 ACI 的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Global ACIs”。要设置全局 ACI,请在 ACI 数据视图的视图基下添加一个 aciSource 条目。例如:


    % ldapmodify -p port -D "cn=proxy manager" -w -
    dn: cn=aci-source-name,cn=virtual access controls
    changetype: add
    objectclass: aciSource
    dpsaci: (targetattr="*") (target="ldap:///ou=people,o=virtual") (version 3.0; 
     acl "perm1"; allow(all) groupdn="ldap:///cn=virtualGroup1,o=groups,o=virtual";)
    cn: data-source-name
    
  2. 将一个或多个连接处理程序配置为使用此 ACI 池。


    % dpconf set-connection-handler-prop -h host -p port connection-handler \
    aci-source:aci-source-name
    
  3. 将所需的 ACI 添加到数据中。

    要执行此操作,请创建包含 ACI 的虚拟条目。例如:


    % ldapmodify -p port -D "cn=virtual application,ou=application users,dc=com" -w -
    dn: ou=people,o=virtual
    changetype: modify
    add: dpsaci
    dpsaci: (targetattr="*")(version 3.0; acl "perm1"; allow(all) userdn="ldap:///self";)
    dpsaci: (targetattr="*")(version 3.0; acl "perm1"; allow(search, read, compare) 
     userdn ="ldap:///anyone";)

    注 –

    具有相应访问权限的任何用户都可以通过数据视图添加和检索虚拟 ACI。


在虚拟数据视图上定义模式检查

通常,对于 LDAP 数据视图,模式检查是由后端目录使用后端目录模式执行的。如果希望目录代理服务器执行模式检查,请使用以下过程。

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

要标准化请求(特别是 DN),请按如下方式设置服务器的 use-external-schema 属性:

Procedure定义模式检查

  1. 指示服务器实例使用外部模式。


    $ dpconf set-server-prop -h host -p port use-external-schema:true
  2. 对连接处理程序启用模式检查。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler \
     schema-check-enabled:true
  3. 创建公开 cn=schema 的数据视图。

    如果在 LDAP 目录中定义外部模式,请使用名为 cn=schema 的视图基创建 LDAP 数据视图,如第 19 章,LDAP 数据视图中所述。

    如果在 LDIF 文件中定义外部模式,请使用视图基 cn=schema 创建 LDIF 数据视图,如创建和配置 LDIF 数据视图所述。

  4. 将此数据视图添加到由连接处理程序公开的数据视图列表中。

    默认情况下,所有数据视图都由连接处理程序公开。如果已定义由连接处理程序公开的数据视图的自定义列表,请将此数据视图添加到列表中。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler \
     data-view-routing-custom-list+:data-view-name
    

创建和配置联接数据视图

联接数据视图是多个数据视图的聚合。有关联接数据视图的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Join Data Views”

有关如何创建和配置联接数据视图的信息,请参见以下过程。

Procedure创建联接数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 对将要聚合成联接视图的主数据视图和从数据视图进行标识。

    在创建联接视图之前,必须存在主数据视图和从数据视图。主数据视图和从数据视图可以是任意类型的数据视图,包括 LDAP 数据视图、LDIF 数据视图、JDBC 数据视图或其他联接数据视图。必须在从视图上配置一些特定属性,以便将其作为联接视图的源。有关详细信息,请参见配置联接视图的从视图

  2. 创建联接数据视图。


    $ dpconf create-join-data-view -h host -p port view-name primary-view secondary-view \
     suffix-dn
    
  3. (可选的)查看联接视图列表,以检查是否已成功创建数据视图。


    $ dpconf list-join-data-views -h host -p port
    

Procedure配置联接数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查看联接数据视图的属性。


    $ dpconf get-join-data-view-prop -h host -p port view-name
    

    联接数据视图的默认属性如下所示:


    alternate-search-base-dn                    :  ""
    alternate-search-base-dn                    :  dc=com
    attr-name-mappings                          :  none
    base-dn                                     :  suffixDN
    contains-shared-entries                     :  -
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    join-rule-control-enabled                   :  false
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    primary-view                                :  primary-view
    process-bind                                :  -
    replication-role                            :  master
    secondary-view                              :  secondary-view
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-join-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

    例如,要将数据源的主数据视图更改为 myLDAPDataView,请使用以下命令:


    $ dpconf set-join-data-view-prop -h host1 -p 1389 -D cn="Proxy Manager" \
     myJoinDataView primary-view:myLDAPDataView
  3. 配置联接数据视图时,请在主数据视图和从数据视图上设置 viewable-attrwritable-attr 属性。

    设置这些属性有助于在主数据视图和从数据视图上相应地拆分搜索过滤器。否则,当搜索过滤器包含来自从数据视图的属性时,搜索结果可能会出现不一致。

  4. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

Procedure将联接数据视图配置为允许多个联接数据视图引用某个数据视图

通过在联接数据视图中设置联接规则配置信息,可使多个联接数据视图能够引用该数据视图。要具备此功能,请执行以下操作:

  1. 在联接数据视图上,将 join-rule-control-enabled 设置为 true


    $ dpconf set-join-data-view-prop view-name join-rule-control-enabled:true

    join-rule-control-enabled 设置为 true 后,服务器将使用联接数据视图中存储的联接规则配置信息。如果联接数据视图的联接规则配置信息存储在从数据视图中,服务器将不会使用此信息。要让服务器使用此信息,您必须手动在联接数据视图级别添加此配置信息。

  2. 定义联接规则,以确定从视图与主视图的关联方式。

    联接规则可为以下任一选项:

    • DN 联接规则


      $ dpconf set-join-data-view-prop view-name \
      dn-join-rule:uid=\${primary-view-name.uid},ou=People,dc=example
    • 过滤器联接规则


      $ dpconf set-join-data-view-prop view-name \
      filter-join-rule:uid=\${primary-view-name.uid}

    在以上命令中,属性名称是作为变量括在 ${} 中的。如果不使用括在 ${} 中的属性名称,则会将该属性名称视为常量。

    如果在 Unix 中使用 bash 或 ksh,应采用 \$ 字符进行转义,例如 \${primary-view-name .uid} 之类的结构;而在 Windows 中,则不需要进行转义。

Procedure配置联接视图的从视图

必须在从数据视图上配置一些特定属性,以便将其作为联接视图的源。由于从视图可以是任意类型的数据视图,因此您所使用的命令取决于数据视图类型。以下样例命令假定从视图为 LDAP 数据视图。有关此处介绍的属性的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Additional Secondary Data View Properties”

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 定义联接规则,以确定从视图与主视图的关联方式。

    切勿对联接视图的主数据视图设置 filter-join-ruledn-join-rule

    联接规则可为以下任一选项:

    • DN 联接规则


      $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name \
      dn-join-rule:uid=\${primary-view-name.uid},ou=People,dc=example
    • 过滤器联接规则


      $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name \
      filter-join-rule:uid=\${primary-view-name.uid}

    仅当联接数据视图上的 join-rule-control-enabled 属性设置为 false 时,服务器才会使用 dn-join-rulefilter-join-rule 属性的配置。否则,如果在联接数据视图上将 join-rule-control-enabled 属性设置为 true,将忽略在从视图上设置的此信息。

  2. 如果在联接数据视图上设置了过滤器联接规则,则需要在从数据视图上设置虚拟转换规则,以便能够在联接数据视图上添加条目。


    dpconf add-virtual-transformation secondary-view-name \
    write add-attr-value dn uid=\${uid}

    注 –

    如果未设置此规则,则无法在联接数据视图上添加条目。


  3. (可选的)指定从视图上是否允许绑定。

    默认情况下,所有数据视图上都允许绑定。如果您要禁止绑定到从数据视图,请运行以下命令:


    $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name process-bind:false

    有关此属性的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Handling of Binds”

  4. (可选的)指定从视图是否包含共享条目。


    $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name \
    contains-shared-entries:true

    有关此属性的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Handling of Shared Entries”

创建和配置 JDBC 数据视图

通过使用 JDBC 数据视图,可使 LDAP 客户端应用程序能够访问关系数据库。有关 JDBC 数据视图的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“JDBC Data Views”

有关如何创建和配置 JDBC 数据视图的信息,请参见以下过程。

Procedure创建 JDBC 数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 为关系数据库创建 JDBC 数据源。


    $ dpconf create-jdbc-data-source -h host -p port -b db-name -B db-url -J driver-url \
    [-J driver-url]... -S driver-class source-name
    

    目前,每个 JDBC 数据视图只支持一个 JDBC 数据源。换句话说,您无法跨 JDBC 数据源实现负载平衡。要访问多个 JDBC 数据源,可以为每个数据源创建一个数据视图,然后通过联接视图将这些数据视图联接在一起。

    在创建 JDBC 数据源时,必须设置以下属性:

    db-name

    关系数据库的名称,例如 payrolldb

    db-url

    指向数据库的 URL,格式为 jdbc: vendor:driver://dbhost: dbport

    db-url 不是完整的 JDBC 数据库 URL,因为它不包含数据库名称。(数据库名称由 db-name 属性指定。)

    对于 MySQL、DB2 和 Derby 数据库,db-url 必须以 / 结束;对于 Oracle 数据库,则必须以 : 结束。

    driver-class

    JDBC 驱动程序类,例如 org.hsqldb.jdbcDriver

    driver-url

    JDBC 驱动程序所在的路径,例如 file:/// path/to/hsqldb/lib/hsqldb.jar

    driver-url 属性是多值属性。因此,driver-url 可以为 JDBC 驱动程序支持多个 JAR 文件,以确保连接到不同平台上的 JDBC 源。

  2. 创建 JDBC 数据源池。


    $ dpconf create-jdbc-data-source-pool -h host -p port pool-name
    
  3. 将 JDBC 数据源连接到此 JDBC 数据源池。


    $ dpconf attach-jdbc-data-source -h host -p port pool-name source-name
    
  4. 创建 JDBC 数据视图。


    $ dpconf create-jdbc-data-view -h host -p port view-name pool-name suffix-DN
    
  5. (可选的)查看 JDBC 数据视图列表,以检查是否已成功创建数据视图。


    $ dpconf list-jdbc-data-views -h host -p port
    

Procedure配置 JDBC 数据视图

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查看 JDBC 数据视图的属性。


    $ dpconf get-jdbc-data-view-prop -h host -p port view-name
    

    JDBC 数据视图的默认属性如下所示:


    alternate-search-base-dn                    :  -
    attr-name-mappings                          :  none
    base-dn                                     :  o=sql1
    contains-shared-entries                     :  -
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    jdbc-data-source-pool                       :  pool-name
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    process-bind                                :  -
    replication-role                            :  master
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-jdbc-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

Procedure配置 JDBC 表、属性和对象类

配置 JDBC 数据视图时,还必须配置以下对象:

  1. 为关系数据库中的每个表创建 JDBC 表。


    % dpconf create-jdbc-table jdbc-table-name db-table
    

    db-table 的名称区分大小写。请确保使用的大小写与关系数据库中使用的相同,否则针对该表的操作可能会失败。

  2. 为每个关系数据库表中的每个列创建 JDBC 属性。


    % dpconf add-jdbc-attr table-name attr-name sql-column
    

    创建 JDBC 属性会将表列映射到 LDAP 属性。

  3. (可选的)如果关系数据库中的列区分大小写,请更改 JDBC 属性的 LDAP 语法。


    % dpconf set-jdbc-attr-prop table-name attr-name ldap-syntax:ces

    默认情况下,ldap-syntax 的值为 cis。这表明 jdbc-attr 不区分大小写。如果您的关系数据库区分大小写,请将值更改为 ces

    默认情况下,某些关系数据库(如 Oracle 和 DB2)区分大小写。LDAP 在默认情况下不区分大小写。当目录代理服务器检测到关系数据库表的某个列区分大小写时,在过滤器中具有相应属性的 ldapsearch 查询将被转换为使用函数 UPPER 的 SQL 查询。

    例如,查询 ldapsearch -b "dc=mysuffix" "(attr=abc)" 将被转换为以下 SQL 查询:


    SELECT * FROM mytable WHERE (UPPER(attr)='ABC')

    默认情况下,此类查询不会编制索引。因此,具有此特性的查询可能会造成较大的性能影响。

    可通过以下两种方式减轻性能影响:

    • 将 jdbc-attr 的 ldap-syntax 属性设置为 ces

    • 对于每个可能会在 LDAP 过滤器中使用的 jdbc-attr,使用函数 UPPER 创建索引。


    注 –

    如果关系数据库不区分大小写,请使用 ldap-syntax 的默认值,即 cis。不区分大小写的数据库不支持 ldap-syntax:ces


  4. 为 LDAP 关系数据库表创建 JDBC 对象类。


    % dpconf create-jdbc-object-class view-name objectclass primary-table \
      [secondary-table... ] DN-pattern
    

    创建 JDBC 对象类实际上是指定将与这些表相关联的 LDAP 对象类。JDBC 对象类还将指定主表和从表(如果这些表存在)。

    创建 JDBC 对象类时将指定 DN 模式。DN 模式用于描述将使用哪些属性来构建条目的 DN。例如,如果将 DN 模式指定为 uid,则会使用属性 uid 和数据视图的视图基来构建条目的 DN。例如,uid=bjensen,ou=people,dc=example,dc=com。DN 模式可以由多个属性组成。在这种情况下,应使用 ,(逗号)来分隔各个属性。例如,如果将 DN 模式指定为 uid,country,则数据视图返回的条目 DN 为 uid=bjensen,country=America,ou=people,dc=example,dc=com

    对于在 JDBC 对象类的 DN 模式中定义的所有子树组件,均应为其定义 JDBC 对象类。例如,如果 JDBC 对象类中具有 DN 模式 uid,ou,则应为 DN 模式 ou 定义一个 JDBC 对象类。这对于目录代理服务器构建结构正确的 DIT 很有必要。否则,在搜索结果中不会返回具有类似于 ou=xxx,base-DN 值的子树。

  5. 如果存在从表,请定义主表和从表之间的联接规则。


    % dpconf set-jdbc-table-prop secondary-table-name filter-join-rule:join-rule
    

    联接规则在从表上进行定义,用于确定该表中的数据如何链接到主表数据。对象类主表和从表关系的定义方式非常重要。有关详细信息,请参见定义 JDBC 表之间的关系

  6. 指定 JDBC 对象类的超类。


    % dpconf set-jdbc-object-class-prop view-name objectclass super-class:value
    

    超类表示 JDBC 对象类所继承的 LDAP 对象类。

定义 JDBC 表之间的关系

最简单的情况是 JDBC 对象类只包含一个(主)表。不存在从表,因此无需定义表之间的关系。

如果对象类包含多个表,则必须明确定义这些表之间的关系。表之间的关系始终在从表上进行定义。可以使用从表的以下属性定义这些关系:

以下示例将说明如何根据前两个属性的值定义过滤器联接规则。这些示例假定对象类具有一个主表和一个从表。


示例 23–1 is-single-row-table:true contains-shared-entries:true

以上是这些属性的默认值。在此案例中,主表和从表之间的关系为 n->1,也就是说,主表中的 n 个行将引用从表中的一个共享行。

在关系数据库中,外键 (foreign key, FK) 在主表中定义,它指向从表的某个列。

例如,在某个组织中,一位经理可以管理多名员工。定义了两个关系数据库表,结构如下:


primary table : EMPLOYEE [ID, NAME, FK_MANAGER_ID]
secondary table : MANAGER  [ID, NAME]

定义了以下对象类和属性:


object-class : employee
attr : name (from primary EMPLOYEE.NAME)
attr : manager (from secondary MANAGER.NAME)

在从表中定义了以下过滤器联接规则:


ID=\${EMPLOYEE.FK_MANAGER_ID}"

如果存在多个从表,则必须为每个从表配置 filter-join-rule。有关如何为多个从表配置 filter-join-rule 的详细信息,请参见步骤 11

在此配置下,LDAP 操作的运行方式如下:



示例 23–2 is-single-row-table:true contains-shared-entries:false

在此案例中,主表和从表之间的关系为 1->11<-1,也就是说,从表中的一行将引用主表中的一行。

在关系数据库中,外键 (foreign key, FK) 可能在主表中定义,也可能在从表中定义。

例如,在某个组织中,员工的 UID 存储在一个表中,其姓氏存储在另一个表中。定义了两个关系数据库表,结构如下:


primary table : UID [ID, VALUE, FK_SN_ID]
secondary table : SN [ID, VALUE]

定义了以下对象类和属性:


object-class : employee
attr : uid (from primary UID.VALUE)
attr : sn (from secondary ID.VALUE)

在从表中定义了以下过滤器联接规则:


ID=\${UID.FK_SN_ID}

此配置也可能是另外一种方式,即外键 FK_UID_ID 存储在从表中,并指向 UID.ID



示例 23–3 is-single-row-table:falsecontains-shared-entries:false

在此案例中,主表和从表之间的关系为 1->n,也就是说,从表中的 n 个行将引用主表中的一行。此示例说明了多值属性的情况。多值属性在从表中以一组行表示,每个属性值为一行。

在关系数据库中,外键在从表中定义,它指向主表中的某个列。

例如,在某个组织中,员工可以有多个电话号码。定义了两个关系数据库表,结构如下:


primary table : EMPLOYEE [ID, NAME]
secondary table : PHONE [ID, VALUE, USER_ID]

定义了以下对象类和属性:


object-class : employee
attr : cn (from primary EMPLOYEE.NAME)
attr : telephoneNumber (from secondary PHONE.VALUE)

在从表中定义了以下过滤器联接规则:


USER_ID=\${EMPLOYEE.ID}


示例 23–4 is-single-row-table:falsecontains-shared-entries:true

目录代理服务器目前不支持此案例。


样例虚拟配置

以下部分提供两个样例配置。这些配置说明虚拟目录的主要功能,并指出这些功能的配置方式。

联接 LDAP 目录和 MySQL 数据库

本部分中的过程介绍将 LDAP 目录和 MySQL 数据库联接在一起的样例虚拟配置。LDAP 目录是主数据源,其中包含大多数用户信息。MySQL 数据库包含有关用户的其他信息。下图说明了最终的配置。

图 23–1 样例虚拟配置

图中显示了由 LDAP 数据视图和 JDBC 数据视图组成的联接数据视图

可以使用 install-path/ds6/ldif/Example.ldif 中提供的样例数据复制此示例,也可以使用您自己的数据替换样例数据。

此配置可以分为三个部分:

为了简单起见,本部分中的所有命令都假定目录代理服务器在 /local/dps 中的本地主机上运行。这些命令还假定设置了以下环境变量:

DIR_PROXY_PORT

1389

LDAP_ADMIN_PWF

pwd.txt,包含管理员密码的文件。

DIRSERV_PORT

4389

LDAP_ADMIN_USER

cn=Directory Manager

配置和测试 LDAP 数据视图

Procedure配置 LDAP 数据视图

开始之前

本部分中的任务假定运行环境如下:

  1. 为目录服务器实例创建名为 myds1 的 LDAP 数据源。


    % dpconf create-ldap-data-source myds1 host1:4389
  2. 启用该数据源,并允许对其执行写入操作。


    % dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false
  3. 创建名为 myds1-pool 的 LDAP 数据源池。


    % dpconf create-ldap-data-source-pool myds1-pool
  4. 将 LDAP 数据源连接到此 LDAP 数据源池。


    % dpconf attach-ldap-data-source myds1-pool myds1
  5. 指定数据源应接收来自该数据源池的所有绑定、添加、搜索和修改操作。


    % dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \
     bind-weight:100 modify-weight:100 search-weight:100
  6. 为数据源池创建名为 myds1–view 且基 DN 为 dc=example,dc=com 的 LDAP 数据视图。


    % dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com

Procedure测试 LDAP 数据视图

  1. dc=example,dc=com 下的用户身份搜索 LDAP 数据源中的所有条目,以验证您是否可以读取数据视图中的内容。


    % ldapsearch -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery \
     -b dc=example,dc=com "objectclass=*"

    注 –

    必须使用 dc=example,dc=com 下的用户凭证。如果要使用 cn=Directory Manager,则必须定义用于处理该 DN 的数据视图。


  2. dc=example,dc=com 下的用户身份修改 userPassword 属性,以验证您是否可以向数据视图中写入内容。


    % ldapmodify -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery
    dn: uid=kvaughan,ou=people,dc=example,dc=com
    changetype: modify
    replace: userPassword
    userPassword: myNewPassword

    注 –

    目录服务器中的默认 ACI 允许用户修改自己的密码。


配置和测试 JDBC 数据视图

以下任务假定已安装了 MySQL 数据库,该数据库正在运行并且填充了数据,同时该数据库还具有以下特性:

下表介绍数据库中的表及其复合字段。您需要使用此信息来设置 JDBC 数据视图。

MySQL 表 

字段 

EMPLOYEE

IDSURNAMEPASSWORDROOMCOUNTRY_ID

COUNTRY

IDNAME

PHONE

USER_IDNUMBER

Procedure配置 JDBC 数据视图

  1. 为 SQL 数据库创建名为 mysql1 的 JDBC 数据源。


    % dpconf create-jdbc-data-source -b sample_sql \
     -B jdbc:mysql://host2.example.com:3306/ \
     -J file:/net/host2.example/local/mysql/lib/jdbc.jar \
     -S com.mysql.jdbc.Driver mysql1
  2. 指定该 SQL 数据库的用户名和密码文件。


    % dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root
  3. 重新启动代理服务器。


    % dpadm restart /local/dps
  4. 启用该数据源,并允许对其执行写入操作。


    % dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false
  5. 创建名为 mysql1–pool 的 JDBC 数据源池。


    % dpconf create-jdbc-data-source-pool mysql1-pool
  6. 将 JDBC 数据源连接到此数据源池。


    % dpconf attach-jdbc-data-source mysql1-pool mysql1
  7. 为数据源池创建名为 myjdbc1–view 且基 DN 为 o=sql 的 JDBC 数据视图。


    % dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql
  8. 为 MySQL 数据库中的每个表创建 JDBC 表。


    % dpconf create-jdbc-table employee1 EMPLOYEE
    % dpconf create-jdbc-table country1 COUNTRY
    % dpconf create-jdbc-table phone1 PHONE

    SQL 数据库中的表名区分大小写。请确保您使用的大小写与 SQL 数据库中使用的相同。

  9. 为每个表中的每一列创建 JDBC 属性。

    创建 JDBC 属性会将 MySQL 列映射到 LDAP 属性。


    % dpconf add-jdbc-attr employee1 uid ID
    % dpconf add-jdbc-attr employee1 sn SURNAME
    % dpconf add-jdbc-attr employee1 userPassword PASSWORD
    % dpconf add-jdbc-attr employee1 roomNumber ROOM
    % dpconf add-jdbc-attr phone1 telephoneNumber NUMBER
    % dpconf add-jdbc-attr country1 countryName NAME

    无需为 phone1 user_idcountry1 id 列创建 JDBC 属性,因为这些列仅包含用于 EMPLOYEE.ID(已为其创建 LDAP 属性 uid)中的值。

  10. 为 LDAP person 对象类创建 JDBC 对象类。

    在此步骤中,employee1 表被标识为主表,而 country1phone1 表被标识为从表。创建 JDBC 对象类时也需要 DN。在此示例中,DN 是通过数据视图的 uid 属性和基 DN 构建的。


    % dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid
  11. 定义主表和从表之间的联接规则。

    联接规则在从表上进行定义,用于确定该表中的数据如何链接到主表数据。


    % dpconf set-jdbc-table-prop country1 filter-join-rule:ID=\${EMPLOYEE.COUNTRY_ID}
    % dpconf set-jdbc-table-prop phone1 filter-join-rule:USER_ID=\${EMPLOYEE.ID}
  12. 指定 JDBC 对象类的超类。

    超类表示 JDBC 对象类从中继承属性的 LDAP 对象类。


    % dpconf set-jdbc-object-class-prop mysql1-view person super-class:top

Procedure创建所需的 ACI

测试 JDBC 数据视图之前,必须先通过配置 ACI 启用对数据视图的写入访问权限。默认情况下将拒绝对非 LDAP 数据视图的写入访问。在此示例中,只需添加一个允许用户修改其密码的全局 ACI。

  1. 以代理管理员身份向 JDBC 数据源中添加一个 ACI 池,并添加一个允许用户修改其条目的全局 ACI。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=mysql1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=sql") 
    (version 3.0; acl "enable all access for all users "; allow(all) 
    userdn="ldap:///uid=kvaughan,o=sql";)
    cn: mysql1
  2. 创建一个连接处理程序,以处理到 o=sql 域的连接。


    % dpconf create-connection-handler mysql1-handler
  3. 启用该连接处理程序,并将其配置为处理来自 o=sql 域用户的所有绑定。


    % dpconf set-connection-handler-prop mysql1-handler is-enabled:true \
     bind-dn-filters:"uid=.*,o=sql"
  4. 将连接处理程序配置为使用之前添加的 ACI 池。


    % dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1

Procedure测试 JDBC 数据视图

  1. o=sql 下的用户身份搜索 JDBC 数据源,以验证您是否可以读取数据视图中的内容。


    % ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*"

    注 –

    您必须使用 o=sql 下的用户的凭证。


  2. o=sql 下的用户身份修改 userPassword 属性,以验证您是否可以向数据视图中写入内容。


    % ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd
    dn: uid=kvaughan,o=sql
    changetype: modify
    replace: userPassword
    userPassword: myNewpwd

创建和测试联接数据视图

Procedure创建联接数据视图

  1. 创建名为 myjoin1–view 的联接数据视图。

    将 LDAP 数据视图指定为主数据视图,将 JDBC 数据视图指定为从数据视图。


    % dpconf create-join-data-view myjoin1-view myds1-view mysql1-view o=join
  2. 在从数据视图上定义联接规则。

    以下联接规则指定从数据视图中条目的 uid 属性应该与主数据视图中条目的 uid 属性相匹配。


    % dpconf set-jdbc-data-view-prop mysql1-view filter-join-rule:uid=\${myds1-view.uid}
  3. 如果在联接数据视图上设置了过滤器联接规则,则需要在从数据视图上设置虚拟转换规则,以便能够在联接数据视图上添加条目。


    dpconf add-virtual-transformation secondary-view-name \
    write add-attr-value dn uid=\${uid}

    注 –

    如果未设置此规则,则无法在联接数据视图上添加条目。


  4. 定义可以通过联接数据视图从主数据视图读取以及向主数据视图写入的属性集。


    % dpconf set-ldap-data-view-prop myds1-view viewable-attr:dn \
    viewable-attr:cn viewable-attr:sn viewable-attr:givenName \
    viewable-attr:objectClass viewable-attr:ou viewable-attr:l \
    viewable-attr:uid viewable-attr:mail viewable-attr:telephoneNumber \
    viewable-attr:facsimileTelephoneNumber viewable-attr:roomNumber \
    viewable-attr:userPassword
    % dpconf set-ldap-data-view-prop myds1-view writable-attr:dn \
    writable-attr:cn writable-attr:sn writable-attr:givenName \
    writable-attr:objectClass writable-attr:ou writable-attr:l \
    writable-attr:uid writable-attr:mail writable-attr:telephoneNumber \
     writable-attr:facsimileTelephoneNumber writable-attr:roomNumber \
    writable-attr:userPassword

    这些定义仅适用于联接视图环境。默认情况下,如果直接访问 LDAP 数据视图,则可以读取和写入所有属性。

  5. 定义可以通过联接数据视图在从数据视图中读取以及向从数据视图写入的属性集。


    % dpconf set-jdbc-data-view-prop mysql1-view viewable-attr:dn \
     viewable-attr:objectclass viewable-attr:sn viewable-attr:roomNumber \
     viewable-attr:userpassword viewable-attr:jobtitle viewable-attr:countryName \
     viewable-attr:telephoneNumber
    % dpconf set-jdbc-data-view-prop mysql1-view writable-attr:dn \
    writable-attr:objectclass writable-attr:sn writable-attr:roomNumber \
    writable-attr:userpassword writable-attr:jobtitle \
    writable-attr:countryName writable-attr:telephoneNumber

    这些定义仅适用于联接视图环境。默认情况下,如果直接访问 JDBC 数据视图,则可以读取和写入所有属性。

Procedure创建所需的 ACI

  1. 以代理管理员身份添加一个允许匿名访问联接数据视图的全局 ACI。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=myjoin1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=join") 
    (version 3.0; acl "anonymous_access"; allow(all) userdn="ldap:///anyone";)
    cn: myjoin1
  2. 将连接处理程序配置为使用之前添加的 ACI 池。


    % dpconf set-connection-handler-prop default-connection-handler aci-source:myjoin1

Procedure测试联接数据视图

  1. 以匿名用户身份搜索联接数据视图。

    在此步骤中,我们将搜索 Kirsten Vaughan 的条目,以查看是否会检索来自两个联接视图的数据。


    % ldapsearch -p 1389 -b o=join "uid=kvaughan"

    请注意,返回的条目包括来自 LDAP 数据视图和 JDBC 数据视图的属性。

  2. o=join 下的用户身份修改 userPassword 属性,以验证您是否可以向联接数据视图中写入内容。


    % ldapmodify -p 1389
    dn: uid=kvaughan,ou=people,o=join
    changetype: modify
    replace: userPassword
    userPassword: myPassword

联接多个不同的数据源

此配置以 Example.com 组织为例,说明虚拟目录的某些功能如何满足该组织的特定目录服务要求。

数据存储方案

Example.com 将组织数据存储在多个不同的数据源中。由于过去的原因,用户数据分布在 LDAP 目录、平面 LDIF 文件和 SQL 数据库中。人力资源部门将用户数据存储在基 DN 为 o=example.com 的 LDAP 目录中。薪酬部门将数据存储在 SQL 数据库中。管理部门将管理数据(如部门和大楼编号)存储在基 DN 为 dc=example,dc=com 的 LDIF 文件中。

此外,Example.com 还收购了一个名为 Company22 的公司。Company 22 也将其用户数据存储在基 DN 为 dc=company22,dc=com 的 LDAP 目录中。

下图提供了说明 Example.com 用户数据存储方式的高级视图。

图 23–2 不同源中的数据存储

图中显示了 Example.com 用户数据在不同数据源中的存储方式

客户端应用程序要求

Example.com 有几个 LDAP 客户端应用程序需要访问存储在不同数据源中的数据。这些客户端应用程序的要求不尽相同。因此需要不同的数据视图。在某些情况下,客户端需要聚合数据。另外,某些客户端应用程序还需要访问 Company22 的用户数据,以便能够同时管理 Example.com 的新老员工。

下图提供了 Example.com 客户端应用程序要求的高级视图。

图 23–3 客户端应用程序要求

图中显示了 Example.com 的 LDAP 应用程序要求

以下部分提供了充分的目录代理服务器数据视图的配置示例,以满足此样例方案中所述的客户端应用程序要求。有关数据视图的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 17  章 “Directory Proxy Server Distribution”《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 18  章 “Directory Proxy Server Virtualization”

样例方案的配置可分为以下几部分:

聚合人力资源部门 LDAP 目录和管理部门 LDIF 文件中的数据

人力资源部门存储员工姓名、入职数据和职务级别等信息。管理部门存储大楼代码和办公室编号等其他信息。处理人力资源数据的客户端应用程序需要访问来自这两个数据源的组合数据。这两个数据源有一个公用属性 employeeNumber,即每个条目中都具有该属性 。

下图说明了此客户端应用程序的要求。

图 23–4 来自 LDAP 目录和 LDIF文件的数据聚合

图中显示了 LDAP 目录和 LDIF 文件的联接视图

要满足此应用程序要求,需要为薪酬目录和管理 LDIF 文件各创建一个数据视图。然后将这两个数据视图联接在一起,以提供对聚合数据的访问。目录代理服务器可以使用此公用属性聚合每个用户的数据。

为了简单起见,本部分中使用的命令假定运行环境如下:

要获取每个命令的完整语法,请运行不含任何选项的命令。例如:

$ dpconf create-ldap-data-view
Operands are missing
Usage: dpconf create-ldap-data-view VIEW_NAME POOL_NAME SUFFIX_DN

Procedure为薪酬目录创建和启用 LDAP 数据视图

  1. 为薪酬目录创建 LDAP 数据源。

    $ dpconf create-ldap-data-source payroll-directory payrollHost:2389
  2. 为薪酬目录创建 LDAP 数据源池。

    $ dpconf create-ldap-data-source-pool payroll-pool
  3. 将薪酬数据源连接到此数据源池。

    $ dpconf attach-ldap-data-source payroll-pool payroll-directory
  4. 配置连接数据源的权重。

    $ dpconf set-attached-ldap-data-source-prop -h payrollHost -p 2389 \
    payroll-pool payroll-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. 为薪酬目录创建 LDAP 数据视图。

    $ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
  6. 启用 LDAP 数据视图,以便客户端请求可以路由到此数据视图。

    $ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
  7. 重新启动目录代理服务器以使更改生效。

    $ dpadm restart /local/myDPS

Procedure为管理数据创建和启用 LDIF 数据视图

  1. 为管理数据创建 LDIF 数据视图。

    $ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
  2. 启用管理数据的 LDIF 数据视图。

    $ dpconf set-ldif-data-view-prop admin-view is-enabled:true
  3. 指定管理视图包含可由薪酬视图中的多个条目使用的条目。

    $ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true

    此属性设置为 TRUE 时,删除薪酬数据视图中的条目不会导致管理数据视图中的共享条目被删除。向薪酬数据视图添加条目只会将该条目添加到从数据视图(如果该条目尚不存在)。

  4. 重新启动目录代理服务器以使更改生效。

    $ dpadm restart /local/myDPS

Procedure联接薪酬数据视图和管理数据视图

  1. 在管理数据视图上创建过滤器联接规则,该规则指定数据的聚合方式。

    以下联接规则指定应该根据用户条目的 employeeNumber 属性联接数据。

    $ dpconf set-ldif-data-view-prop admin-view \
    filter-join-rule:employeeNumber=\${payroll-view.employeeNumber}
  2. 创建聚合这两个数据视图的联接数据视图。

    对于该联接数据视图,组织将使用后缀 DN dc=example,dc=com

    $ dpconf create-join-data-view example-join-view payroll-view admin-view \
    dc=example,dc=com

通过重命名 DN 将 Company 22 的数据添加到 Example.Com 的 DIT 中

Company 22 的用户数据存储在 DN dc=company22,dc=com 下。虽然在大多数情况下 Example.com 希望单独保留此用户数据,但一个客户端应用程序需要同时管理 Company 22 员工和其他 Example.com 员工。此客户端应用程序要求 Company 22 的用户数据类似于 Example.com 数据。

下图说明了此客户端应用程序的要求。

图 23–5 DN 重命名

图中显示了通过重命名 DN 将数据添加到 DIT

要满足此应用程序要求,需要为 Company 22 的目录创建一个虚拟 DN 为 dc=example,dc=com 的数据视图。

为了简单起见,本部分中使用的命令假定运行环境如下:

Procedure使用虚拟 DN 为 Company 22 的目录创建数据视图

  1. 为 Company 22 的目录创建 LDAP 数据源。

    $ dpconf create-ldap-data-source company22-directory company22Host:2389
  2. 为 Company 22 的目录创建 LDAP 数据源池。

    $ dpconf create-ldap-data-source-pool company22-pool
  3. 将 Company 22 的数据源连接到此数据源池。

    $ dpconf attach-ldap-data-source company22-pool company22-directory
  4. 配置连接数据源的权重。

    $ dpconf set-attached-ldap-data-source-prop -h company22Host -p 2389 \
    company22-pool company22-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. 使用虚拟 DN dc=example,dc=com 为 Company 22 的目录创建 LDAP 数据视图。

    $ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
  6. 指示目录代理服务器将此虚拟 DN 映射到 Company 22 目录中的实际 DN。

    $ dpconf set-ldap-data-view-prop company22-view \
    dn-mapping-source-base-dn:dc=company22,dc=com
  7. 启用 Company 22 目录的 LDAP 数据视图,以便客户端请求可以路由到此数据视图。

    $ dpconf set-ldap-data-view-prop company22-view is-enabled:true
  8. 重新启动目录代理服务器以使更改生效。

    $ dpadm restart /local/myDPS

将 Company 22 数据添加到人力资源数据

人力资源部门需要人力资源数据(来自 Example.com 和最近收购的 Company 22)的聚合视图。下图说明了人力资源部门全局应用程序的要求。

图 23–6 来自联接数据视图和 LDAP 数据视图的数据聚合

图中显示了 LDAP 目录和其他联接视图的复合联接视图

Procedure联接示例联接数据视图和 Company 22 数据视图

  1. 在 Company 22 数据视图上创建过滤器联接规则,该规则指定数据的聚合方式。

    以下联接规则指定应该根据用户条目的 employeeNumber 属性联接数据。

    $ dpconf set-ldif-data-view-prop company22-view \
    filter-join-rule:employeeNumber=\${example-join-view.employeeNumber}
  2. 创建联接数据视图,该视图将 Company 22 的数据视图和 Example.com 的联接数据视图聚合在一起。

    $ dpconf create-join-data-view global-join-view example-join-view \
    company22-view dc=example,dc=com

使 LDAP 客户端可以访问 SQL 数据库中的薪酬数据

Example.com 的薪酬部门将薪水数据存储在 SQL 数据库中。该数据库有两个表,即 employee 表和 salary 表。Example.com 具有需要访问这些数据的 LDAP 客户端应用程序。该客户端应用程序要求 SQL 数据类似于 LDAP 数据。

下图说明了此客户端应用程序的要求。

图 23–7 提供 SQL 数据库访问的 JDBC 数据视图

图中显示了提供 SQL 数据库访问的 JDBC 数据视图

要满足此应用程序要求,需要创建一个将 SQL 表中的列映射到 LDAP 属性的 JDBC 数据视图。

为了简单起见,本部分中使用的命令假定运行环境如下:

Procedure为 Example.com 的薪酬数据库创建 JDBC 数据视图

  1. 为薪酬数据库创建 JDBC 数据源。

    $ dpconf create-jdbc-data-source -b payrollsqldb \
      -B jdbc:payrollsqldb:payrollsql://localhost/ \
      -J file://payrollsqldb.jar \
      -S org.payrollsqldb.jdbcDriver payroll-src 
  2. 使用 SQL 数据库的属性配置 JDBC 数据源。

    $ dpconf set-jdbc-data-source-prop payroll-src \
      db-user:proxy db-pwd-file:password-file-location/myPasswordFile
  3. 启用 JDBC 数据源。

    $ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
  4. 为薪酬数据库创建 JDBC 数据源池。

    $ dpconf create-jdbc-data-source-pool payroll-pool
  5. 将薪酬数据源连接到此数据源池。

    $ dpconf attach-jdbc-data-source payroll-pool payroll-src
  6. 使用虚拟 DN o=payroll 为薪酬数据库创建 JDBC 数据视图。

    $ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
  7. 为 SQL 数据库中的每个表创建 JDBC 表。

    $ dpconf create-jdbc-table jdbc-employee employee
    $ dpconf create-jdbc-table jdbc-salary salary
  8. 为 SQL 表中的每一列添加 JDBC 属性。

    $ dpconf add-jdbc-attr jdbc-employee eid employee_id
    $ dpconf add-jdbc-attr jdbc-employee first firstname
    $ dpconf add-jdbc-attr jdbc-employee last lastname
    $ dpconf add-jdbc-attr jdbc-employee description description
    $ dpconf add-jdbc-attr jdbc-employee spouse spousename
    $ dpconf add-jdbc-attr jdbc-salary salary salary
    $ dpconf add-jdbc-attr jdbc-salary social ssn
  9. 指定可以通过 JDBC 数据视图查看和写入的属性。

    $ dpconf set-jdbc-data-view-prop payroll-view \
     viewable-attr:eid \
     viewable-attr:first \
     viewable-attr:last \
     viewable-attr:desc \
     viewable-attr:spouse \
     viewable-attr:salary \
     viewable-attr:social 
     $ dpconf set-jdbc-data-view-prop payroll-view \
     writable-attr:eid \
     writable-attr:first \
     writable-attr:last \
     writable-attr:description \
     writable-attr:spouse \
     writable-attr:salary \
    writable-attr:social
  10. 创建一个映射到 LDAP 对象类的 JDBC 对象类。

    以下命令将创建一个映射到 LDAP person 对象类的对象类。该对象类指定应该将员工表用作主表,而将薪水表用作从表。eid 属性应用于构建 DN。

    $ dpconf create-jdbc-object-class payroll-view \
     person jdbc-employee jdbc-salary eid
  11. 在从表上创建过滤器联接规则,该规则指定从表中的数据应如何链接到主表数据。

    以下联接规则指定应根据 employee_id 属性联接数据。

    $ dpconf set-jdbc-table-prop jdbc-salary \
    filter-join-rule:employee_id=\${employee.employee_id}
  12. 在 JDBC 对象类上创建超类。

    $ dpconf set-jdbc-object-class-prop payroll-view person super-class:extensibleObject

添加虚拟访问控制

LDAP 目录上的访问控制是通过定义这些目录中的 ACI 来处理的。通过虚拟数据视图访问数据源时必须定义 ACI,这些 ACI 只适用于通过这些数据视图查看的数据。

所有通过目录代理服务器的访问都由连接处理程序进行控制。有关连接处理程序的信息,请参见第 26 章,客户端和目录代理服务器之间的连接

Procedure添加允许匿名访问的 ACI

  1. 添加 ACI。

    $ ldapadd -v -D "cn=proxy manager" -w password -p 389
    dn: cn=ldifonly-acis,cn=virtual access controls
    objectclass: top
    objectclass: aciSource
    cn: ldifonly-acis
    dpsaci: (targetattr="*")(version 3.0; acl "anonymous_access"; allow(all) \
    (userdn="ldap:///anyone");)
  2. 将连接处理程序指向虚拟 ACI。

    $ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
  3. 启用连接处理程序。

    $ dpconf set-connection-handler-prop anonymous is-enabled:true

第 24 章 虚拟数据转换

虚拟数据转换是在现有的数据视图上定义的,该转换允许您使用虚拟数据视图来创建虚拟数据。有关虚拟数据转换的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Virtual Data Transformations”

本章包含以下主题:

配置虚拟数据转换

可向以下任意类型的数据视图中添加虚拟数据转换:LDAP 数据视图、LDIF 数据视图、联接数据视图或 JDBC 数据视图。

Procedure添加虚拟转换

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 向数据视图中添加转换。


    $ dpconf add-virtual-transformation -h host -p port view-name \
     transformation-model transformation-action attribute-name [parameters...]

    transformation-model 可以是 mappingwriteread 转换之一。

    transformation-action 可以是 add-attrremove-attradd-attr-valueremove-attr-valuedef-valueattr-value-mapping 操作之一。

    请注意,parameters 可能是必需的选项,具体取决于 transformation-modeltransformation-action

    有关转换模型、转换操作和转换参数的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Virtual Data Transformations”

  2. (可选的)查看数据视图上定义的虚拟转换列表。

    $ dpconf list-virtual-transformations -h host -p port view-name
    

Procedure删除虚拟转换

  1. 使用以下命令删除虚拟转换。


    dpconf remove-virtual-transformation view_name transformation_name
    

虚拟转换示例

以下部分提供了要求使用虚拟数据视图的使用实例,并且需要结合使用转换模型和操作,来实现这些使用实例。

从条目的现有属性派生属性

使用以下转换规则可以从条目的现有属性派生属性。例如,当应用以下转换规则时,将显示从 givenNamesn 属性派生的 mail 属性。


$ dpconf add-virtual-transformation dataview1 read add-attr \
mail \${givenName}.\${sn}@example.com 

下图显示了用户条目在搜索中返回时发生的转换。

从条目的现有属性派生属性

将虚拟属性映射到实际属性

使用以下映射转换规则可以添加作为纯虚拟属性一部分的属性。例如,当应用以下转换规则时,会在服务器中存储 givenName,即使条目中未指定该属性。其值将从定义为 mail \${givenName}@example.com 的纯虚拟属性中获取。


$ dpconf add-virtual-transformation dataview1 mapping add-attr \
mail \${givenName}@example.com 

首先,添加一个包含虚拟属性 mail 而不包含 givenName 属性的条目。虚拟转换将生成 givenName 属性的值,并且将在该条目中存储 givenName 而不是 mail 属性。然后,搜索 uid 属性,检索 givenName 的值,并通过相同的虚拟转换生成虚拟属性 mail 的值。

下图显示了用户条目所发生的转换。

为条目添加一个从虚拟属性映射的属性

显示属性的第二个虚拟值(该值由另一个实际属性指定)

使用以下转换可以显示另一个属性指定的某个属性的值。例如,将 uid 的值显示为 cn 的值,同时还显示条目中已存储的 cn 值。以下示例未存储 cn 的其他值,但在结果返回至客户端之前,应用了转换。


$ dpconf add-virtual-transformation dataview1 read add-attr-value cn \${uid}

下图显示了用户条目在搜索中返回时发生的转换。

显示另一个属性指定的某个属性的值

存储属性的第二个值(该值由另一个实际属性指定)

使用以下转换规则可以存储属性的值以及添加新条目时提供的值。在以下方案中,当添加条目时,将存储 mail 属性的附加值。仅当创建新条目时才应用此转换。


$ dpconf add-virtual-transformation dataview1 write add-attr-value \
mail \${uid}@example.com

下图显示了执行添加请求时发生的转换。

为属性添加另一个属性指定的值

从输出中删除属性

如果不希望在输出中显示某个属性,请使用以下转换规则。例如,当应用以下转换规则时,将不在输出中返回 givenName


dpconf add-virtual-transformation dataview1 read remove-attr givenName

下图显示了用户条目在搜索中返回时发生的转换。

从输出中删除属性

保存条目时屏蔽属性

如果不希望存储某个特定的属性,请使用以下转换规则。例如,当应用以下转换规则时,将不在实际的数据库中存储 givenName 属性。仅当创建新条目时才应用此转换。


$ dpconf add-virtual-transformation dataview1 write remove-attr givenName

下图显示了执行添加请求时发生的转换。

保存条目时屏蔽属性

显示属性的默认值

如果要显示分配给属性的默认值,请使用以下转换。例如,当应用以下转换时,将在未包含自身电话号码的条目中显示默认电话号码。


$ dpconf add-virtual-transformation data-view read 11111 telephoneNumber default-number

下图显示了用户条目在搜索中返回时发生的转换。

显示属性的默认值

存储属性的默认值

仅当在创建条目的过程中未指定属性值时,才可为该属性存储默认值。如果要存储属性的默认值,请使用以下转换规则。例如,当应用以下转换时,将为您所创建的每个条目添加一个默认电话号码。仅当添加条目时才应用此转换。


$ dpconf add-virtual-transformation dataview1 write 11111 \
telephoneNumber telephone-number

下图显示了执行添加请求时发生的转换。

为属性添加默认值

第 25 章 目录代理服务器和后端 LDAP 服务器之间的连接

本章介绍如何配置目录代理服务器与后端 LDAP 服务器之间的连接。本章包含以下主题:

配置目录代理服务器和后端 LDAP 服务器之间的连接

创建 LDAP 数据源后,为该 LDAP 数据源打开的默认连接数为 6 个,即读取、绑定和写入操作各 2 个连接。要验证默认连接,请键入以下命令:


dpconf get-ldap-data-source-prop src-name num-read-init num-write-init num-bind-init
num-bind-init   :  2
num-read-init   :  2
num-write-init  :  2

当通信量增加时,将自动增加连接数。

有关如何配置目录代理服务器和后端 LDAP 服务器之间的连接的信息,请参见以下过程:

Procedure配置目录代理服务器和后端 LDAP 服务器之间的连接数


注 –

此过程将配置绑定操作的连接数。要配置读取或写入操作的连接数,请执行相同的过程,但要将 bind 替换为 readwrite


可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置目录代理服务器和后端 LDAP 服务器之间用于绑定操作的初始连接数。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     num-bind-init:new-value
    
  2. 配置绑定操作的连接数增量。

    增量是每次请求超出当前连接数的连接时所增加的连接数。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     num-bind-incr:new-value
    
  3. 配置绑定操作的最大连接数。

    达到最大连接数时,将无法再添加更多的连接。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     num-bind-limit:new-value
    

Procedure配置连接超时

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置目录代理服务器可以尝试连接到数据源的最长时间。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     connect-timeout:new-value
    

    例如,将连接超时时间配置为 10 毫秒。


    $ dpconf set-ldap-data-source-prop -h host1 -p 1389 data-source-name connect-timeout:10

Procedure配置连接池等待超时

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置目录代理服务器可以等待连接池中已建立的连接变为可用的最长时间。


    $ dpconf set-server-prop -h host -p port data-source-name \
     connection-pool-wait-timeout:value
    

    例如,将超时时间配置为 20 秒。


    $ dpconf set-ldap-data-source-prop -h host1 -p 1389 data-source-name \
     connection-pool-wait-timeout:20000

配置目录代理服务器和后端 LDAP 服务器之间的 SSL

以下过程介绍如何配置目录代理服务器和后端 LDAP 服务器之间的 SSL。

Procedure配置目录代理服务器和后端 LDAP 服务器之间的 SSL

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置目录代理服务器和后端 LDAP 服务器之间的安全端口。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     ldaps-port:port-number
    
  2. 配置何时将 SSL 用于目录代理服务器和后端 LDAP 服务器之间的连接。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name ssl-policy:value
    
    • 如果 valuealways,则始终将 SSL 用于连接。

    • 如果 valueclient,则会在客户端使用 SSL 时使用 SSL。

    如果连接未使用 SSL,则可以使用 startTLS 命令将此连接升级为 SSL。

    传输层安全 (Transport Layer Security, TLS) 是 SSL 的标准版本。TLS over LDAP 是经 IETF 批准的用于确保 LDAP 安全的标准方式。LDAPS 实际上是一种标准方式,但它会带来某种复杂性,例如为服务提供两个端口而不是仅使用一个端口。

  3. 选择 SSL 的协议和密码,如为目录代理服务器选择 SSL 密码和 SSL 协议所述。

  4. 将目录代理服务器配置为验证来自后端 LDAP 服务器的 SSL 服务器证书。

    有关信息,请参见将后端目录服务器的证书添加到目录代理服务器上的证书数据库中

  5. 如果后端 LDAP 服务器请求来自目录代理服务器的证书,请将目录代理服务器配置为发送 SSL 客户端证书。

    有关信息,请参见将证书导出到后端 LDAP 服务器

  6. 重新启动目录代理服务器实例以使更改生效。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

为目录代理服务器选择 SSL 密码和 SSL 协议

目录代理服务器可以使用的密码和协议取决于所使用的 JavaTM 虚拟机 (JVMTM)。默认情况下,目录代理服务器使用为 JVM 计算机启用的默认密码和协议。

Procedure选择密码和协议的列表

可使用此过程检索受支持的密码和协议,以及启用的密码和协议。如果密码或协议受支持,则可启用或禁用该密码或协议。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看受支持的密码和协议的列表。


    $ dpconf get-server-prop -h host -p port supported-ssl-cipher-suites \
     supported-ssl-protocols
  2. 查看已启用的密码和协议的列表。


    $ dpconf get-server-prop -h host -p port enabled-ssl-cipher-suites \
     enabled-ssl-protocols
  3. 启用一个或多个受支持的密码或协议。

    1. 启用一个或多个受支持的密码。


      $ dpconf set-server-prop -h host -p port \
       enabled-ssl-cipher-suites:supported-ssl-cipher-suite \
       [enabled-ssl-cipher-suites:supported-ssl-cipher-suite ...]

      要在现有的支持密码列表中添加密码,请使用以下命令:


      $ dpconf set-server-prop -h host -p port \
       enabled-ssl-cipher-suites+:supported-ssl-cipher-suite
      
    2. 启用一个或多个受支持的协议。


      $ dpconf set-server-prop -h host -p port \
       enabled-ssl-cipher-protocols:supported-ssl-cipher-protocol \
       [enabled-ssl-cipher-protocols:supported-ssl-cipher-protocol ...]

      要在现有的支持协议列表中添加协议,请使用以下命令:


      $ dpconf set-server-prop -h host -p port \
       enabled-ssl-cipher-protocols+:supported-ssl-cipher-protocol
      
  4. (可选的)禁用支持的密码或协议。


    $ dpconf set-server-prop -h host -p port \
     enabled-ssl-cipher-protocols-:supported-ssl-cipher-protocol
    

将请求转发到后端 LDAP 服务器

本部分包含可用于将请求从目录代理服务器转发到后端 LDAP 服务器的各种方法的相关信息。

使用绑定重放转发请求

有关目录代理服务器中客户端证书绑定重放的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Directory Proxy Server Configured for BIND Replay”。以下过程介绍如何使用绑定重放将请求从目录代理服务器转发到后端 LDAP 服务器。

Procedure使用绑定重放转发请求

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 配置数据源客户端证书,以便使用客户端提供的证书通过后端 LDAP 服务器的验证。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     client-cred-mode:use-client-identity

使用代理授权转发请求

有关目录代理服务器中代理授权的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Directory Proxy Server Configured for Proxy Authorization”

本部分包含的过程将使用代理授权和代理授权控件来转发请求。

Procedure使用代理授权转发请求

  1. 将数据源配置为接受版本 1 或版本 2 的代理授权控件。

    例如,将数据源配置为接受版本 1 的代理授权控件。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     proxied-auth-use-v1:true

    或者,将数据源配置为接受版本 2 的代理授权控件。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     proxied-auth-use-v1:false
  2. 将数据源配置为使用代理授权通过到后端 LDAP 服务器的验证。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     client-cred-mode:use-proxy-auth

    要将数据源配置为使用只有写入操作权限的代理授权来通过后端 LDAP 服务器的验证,请运行以下命令:


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     client-cred-mode:use-proxy-auth-for-write

    使用代理授权控制执行只写操作时,客户端标识不会转发到 LDAP 服务器以用于读取请求。有关转发无客户端标识的请求的详细信息,请参见转发无客户端标识的请求

  3. 使用目录代理服务器的绑定证书配置数据源。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     bind-dn:DPS-bind-dn bind-pwd-file:filename
    
  4. 将数据源配置为启用超时。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     proxied-auth-check-timeout:value
    

    目录代理服务器使用 getEffectiveRights 命令验证客户端 DN 是否具有代理授权的相关 ACI。结果将缓存在目录代理服务器中,并在 proxied-auth-check-timeout 过期时进行更新。

  5. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

Procedure当请求包含代理授权控件时使用代理授权转发请求

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将目录代理服务器配置为接受版本 1 和/或版本 2 的代理授权控件。


    $ dpconf set-server-prop -h host -p port allowed-ldap-controls:proxy-auth-v1 \
     allowed-ldap-controls:proxy-auth-v2

转发无客户端标识的请求

以下过程介绍如何将请求从目录代理服务器转发到后端 LDAP 服务器,而不转发客户端标识。

Procedure转发无客户端标识的请求

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将数据源配置为使用目录代理服务器证书通过后端 LDAP 服务器的验证。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     client-cred-mode:use-specific-identity
  2. 使用目录代理服务器的绑定证书配置数据源。


    $ dpconf set-ldap-data-source-prop -h host -p port data-source-name \
     bind-dn:bind-dn-of-DPS bind-pwd-file:filename
    
  3. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

以备用用户身份转发请求

本部分包含有关如何以备用用户身份转发请求的信息。

Procedure配置远程用户映射

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 启用要以备用用户身份转发的操作。


    $ dpconf set-server-prop -h host -p port enable-user-mapping:true
  2. 指定包含远程映射 ID 的属性名称。


    $ dpconf set-server-prop -h host -p port \
     remote-user-mapping-bind-dn-attr:attribute-name
    
  3. 将目录代理服务器配置为远程映射客户端 ID。


    $ dpconf set-server-prop -h host -p port enable-remote-user-mapping:true
  4. 配置默认映射。


    $ dpconf set-server-prop -h host -p port \
     user-mapping-default-bind-dn:default-mapping-bind-dn \
     user-mapping-default-bind-pwd-file:filename
    

    如果在远程 LDAP 服务器上找不到映射的标识,则客户端标识将映射到默认标识。

  5. 在远程 LDAP 服务器上的客户端条目中配置用户映射。

    有关在目录服务器中配置用户映射的信息,请参见代理授权

Procedure配置本地用户映射

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 启用要以备用用户身份转发的操作。


    $ dpconf set-server-prop -h host -p port enable-user-mapping:true
  2. 确保未将目录代理服务器配置为远程映射客户端 ID。


    $ dpconf set-server-prop -h host -p port enable-remote-user-mapping:false
  3. 配置默认映射。


    $ dpconf set-server-prop -h host -p port \
     user-mapping-default-bind-dn:default-mapping-bind-dn \
     user-mapping-default-bind-pwd-file:filename
    

    如果远程 LDAP 服务器上的映射失败,客户端 ID 将映射到此 DN。

  4. 如果允许未经验证的用户执行操作,请为未经验证的客户端配置映射。


    $ dpconf set-server-prop -h host -p port \
     user-mapping-anonymous-bind-dn:anonymous-mapping-bind-dn \
     user-mapping-anonymous-bind-pwd-file:filename
    

    有关如何允许未经验证的用户执行操作的信息,请参见配置匿名访问

  5. 配置客户端 ID。


    $ dpconf set-user-mapping-prop -h host -p port \
     user-bind-dn:client-bind-dn user-bind-pwd-file:filename
    
  6. 配置备用用户 ID。


    $ dpconf set-user-mapping-prop -h host -p port \
     mapped-bind-dn:alt-user-bind-dn mapped-bind-pwd-file:filename
    

Procedure为匿名客户端配置用户映射

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为未经验证的客户端配置映射。


    $ dpconf set-server-prop -h host -p port \
     user-mapping-anonymous-bind-dn:anonymous-mapping-bind-dn \
     user-mapping-anonymous-bind-pwd-file:filename
    

    将在目录代理服务器中配置匿名客户端映射,因为远程 LDAP 服务器中不包含匿名客户端条目。

    有关允许未经验证的用户执行操作的信息,请参见配置匿名访问

第 26 章 客户端和目录代理服务器之间的连接

有关客户端和目录代理服务器之间的连接、连接处理程序以及连接处理程序中使用的条件和策略的概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 20  章 “Connections Between Clients and Directory Proxy Server”

本章包含以下主题:

创建、配置和删除连接处理程序

有关如何创建、配置和删除连接处理程序以及为数据视图配置相似性的信息,请参见以下过程。

Procedure创建连接处理程序

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建连接处理程序。


    $ dpconf create-connection-handler -h host -p port connection-handler-name
    
  2. (可选的)查看连接处理程序列表。


    $ dpconf list-connection-handlers -h host -p port
    

Procedure配置连接处理程序

开始之前

定义连接处理程序的属性时,必须参照为目录代理服务器实例定义的其他连接处理程序的属性。请考虑所有连接处理程序的属性,以确保这些属性指定了不同的条件集,并设置了正确的优先级。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看连接处理程序的详细列表,以了解其主要属性和相对优先级。


    $ dpconf list-connection-handlers -h host -p port -v
    Name                        is-enabled  priority  description
    --------------------------  ----------  --------  ---------------------------
    anonymous                   false       99        unauthenticated connections
    default connection handler  true        100       default connection handler

    创建目录代理服务器实例时,将创建 anonymousdefault connection handler 连接处理程序。

  2. 查看一个连接处理程序的所有属性。


    $ dpconf get-connection-handler-prop -h host -p port connection-handler-name
    

    新连接处理程序的默认属性如下所示:


    aci-source                     :  -
    allowed-auth-methods           :  anonymous
    allowed-auth-methods           :  sasl
    allowed-auth-methods           :  simple
    allowed-ldap-ports             :  ldap
    allowed-ldap-ports             :  ldaps
    bind-dn-filters                :  any
    data-view-routing-custom-list  :  -
    data-view-routing-policy       :  all-routable
    description                    :  -
    domain-name-filters            :  any
    enable-data-view-affinity      :  false
    ip-address-filters             :  any
    is-enabled                     :  false
    is-ssl-mandatory               :  false
    priority                       :  99
    request-filtering-policy       :  no-filtering
    resource-limits-policy         :  no-limits
    schema-check-enabled           :  false
    user-filter                    :  any
  3. 配置连接处理程序的优先级。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name priority:value
    

    优先级可以是 1 到 100 之间的任何数字,其中 1 为最高优先级。对于目录代理服务器实例,将按照优先级的顺序对连接处理程序进行评估。

  4. (可选的)指定连接处理程序的 DN 过滤属性。

    通过使用此属性,您可以基于部分或全部绑定 DN 来控制访问。此属性的值为正则表达式。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     bind-dn-filters:regular-expression
    

    绑定 DN 过滤器采用 JavaTM 正则表达式的格式。有关创建 Java 正则表达式的信息,请参见 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

    例如,要从 ou=people,dc=example,dc=com 下的用户向名为 secure-handler 的连接处理程序发送所有绑定,请按如下方式设置 bind-dn-filters 属性:


    $ dpconf set-connection-handler-prop -h host1 -p 1389 secure-handler \
     bind-dn-filters:"uid=.*,ou=people,dc=example,dc=com"
  5. (可选的)指定要用于此连接处理程序的请求过滤策略的名称。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     request-filtering-policy:policy-name
    

    其中 policy-name 是现有请求过滤策略的名称。有关如何创建和配置请求过滤策略的信息,请参见创建和配置请求过滤策略和搜索数据隐藏规则

  6. (可选的)指定要用于此连接处理程序的资源限制策略的名称。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     resource-limits-policy:policy-name
    

    其中 policy-name 是现有资源限制策略的名称。有关如何创建和配置资源限制策略的信息,请参见创建和配置资源限制策略

  7. 配置步骤 2 中列出的所有其他属性。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     property:value [property:value ...]

    例如,将连接处理程序配置为只接受 SSL 连接。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     is-ssl-mandatory:true

    要获取某个属性的描述及其有效值列表,请运行以下命令:


    $ dpconf help-properties connection-handler
  8. 启用连接处理程序。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name is-enabled:true
  9. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

Procedure删除连接处理程序

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. (可选的)查看连接处理程序列表。


    $ dpconf list-connection-handlers -h host -p port
    
  2. 删除一个或多个连接处理程序。


    $ dpconf delete-connection-handler -h host -p port connection-handler-name [connection-handler-name ... ]

Procedure配置数据视图的相似性

为连接处理程序分配连接时,该连接上的请求将显示在为该连接处理程序配置的数据视图列表中,或者显示在所有已配置的数据视图中。该连接上的后续请求只对用于第一个请求的数据视图公开。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 启用数据视图的相似性。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     enable-data-view-affinity:true
  2. (可选的)将连接处理程序配置为将请求路由到数据视图的自定义列表。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name data-view-routing-policy:custom
  3. (可选的)配置数据视图列表。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     data-view-routing-custom-list:view-name [data-view-routing-custom-list:view-name ...]

    要将数据视图添加到现有数据视图列表中,请使用以下命令:


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     data-view-routing-custom-list+:view-name
    

    要从现有数据视图列表中删除数据视图,请使用以下命令:


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     data-view-routing-custom-list-:view-name
    

创建和配置请求过滤策略和搜索数据隐藏规则

有关请求过滤策略的概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Request Filtering Policies for Connection Handlers”。有关搜索数据隐藏规则的概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Search Data Hiding Rules in the Request Filtering Policy”

有关如何创建和配置请求过滤策略和搜索数据隐藏规则的信息,请参见以下过程。

Procedure创建请求过滤策略

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建请求过滤策略。


    $ dpconf create-request-filtering-policy policy-name
    
  2. 将请求过滤策略与某个连接处理程序关联。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     request-filtering-policy:policy-name
    

Procedure配置请求过滤策略

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看请求过滤策略的属性。


    $ dpconf get-request-filtering-policy-prop -h host -p port policy-name
    

    请求过滤策略的默认属性如下所示:


    allow-add-operations                :  true
    allow-bind-operations               :  true
    allow-compare-operations            :  true
    allow-delete-operations             :  true
    allow-extended-operations           :  true
    allow-inequality-search-operations  :  true
    allow-modify-operations             :  true
    allow-rename-operations             :  true
    allow-search-operations             :  true
    allowed-comparable-attrs            :  all
    allowed-search-scopes               :  base
    allowed-search-scopes               :  one-level
    allowed-search-scopes               :  subtree
    allowed-subtrees                    :  ""
    description                         :  -
    prohibited-comparable-attrs         :  none
    prohibited-subtrees                 :  none
  2. 通过设置步骤 1 中列出的一个或多个属性来配置请求过滤策略。


    $ dpconf set-request-filtering-policy-prop -h host -p port policy-name \
      property:value [property:value ...]

    通过设置步骤 1 中列出的属性,可以配置请求过滤策略的以下功能:

    • 允许客户端执行的操作类型

    • 对客户端公开或隐藏的子树

    • 搜索操作的范围

    • 搜索过滤器的类型

    • 可以或无法在搜索和比较操作中进行比较的属性类型

Procedure创建搜索数据隐藏规则

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 为请求过滤策略创建一个或多个搜索数据隐藏规则。


    $ dpconf create-search-data-hiding-rule -h host -p port policy-name rule-name \
     [rule-name ...]
  2. 查看搜索数据隐藏规则的属性。


    $ dpconf get-search-data-hiding-rule-prop policy-name rule-name
    

    搜索数据隐藏规则的默认属性如下所示:


    attrs                              :  -
    rule-action                        :  hide-entry
    target-attr-value-assertions       :  -
    target-dn-regular-expressions      :  -
    target-dns                         :  -
  3. 通过设置步骤 2 中列出的一个或多个属性来配置搜索数据隐藏规则。


    $ dpconf set-search-data-hiding-rule-prop -h host -p port policy-name rule-name \
      property:value [property:value ...]

    可以使用以下规则操作之一:

    hide-entry

    不返回目标条目。

    hide-attributes

    返回目标条目,但过滤掉指定的属性。

    show-attributes

    返回目标条目,但过滤掉未指定的属性。

    此规则可应用于以下条目:

    target-dns

    具有指定 DN 的条目

    target-dn-regular-expressions

    具有指定 DN 模式的条目

    target-attr-value-assertions

    具有指定属性名称和属性值对 (attrName#attrValue) 的条目

    以下配置定义了用于隐藏 inetorgperson 类型条目的搜索数据隐藏规则。


    $ dpconf set-search-data-hiding-rule-prop -h host1 -p port my-policy my-rule \
      target-attr-value-assertions:objectclass#inetorgperson

请求过滤策略和搜索数据隐藏规则的示例

以下示例包含请求过滤策略和搜索数据隐藏规则。当请求过滤策略与搜索数据隐藏规则相结合时,将限制对数据的访问,如下所示:


示例 26–1 请求过滤策略的样例


allow-add-operations                :  false
allow-bind-operations               :  true
allow-compare-operations            :  true
allow-delete-operations             :  false
allow-extended-operations           :  false
allow-inequality-search-operations  :  true
allow-modify-operations             :  false
allow-rename-operations             :  false
allow-search-operations             :  true
allowed-comparable-attrs            :  all
allowed-search-scopes               :  base
allowed-search-scopes               :  one-level
allowed-search-scopes               :  subtree
allowed-subtrees                    :  ou=people,dc=sun,dc=com
description                         :  myRequestFilteringPolicy
prohibited-comparable-attrs         :  none
prohibited-subtrees                 :  none


示例 26–2 搜索数据隐藏规则的样例


attrs                              :  -
rule-action                        :  hide-entry
target-attr-value-assertions       :  objectclass:inetorgperson
target-dn-regular-expressions      :  -
target-dns                         :  -

创建和配置资源限制策略

有关资源限制策略的概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Resource Limits Policies for Connection Handlers”。有关如何创建和配置资源限制策略,以及如何自定义搜索限制的信息,请参见以下过程。

Procedure创建资源限制策略

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建资源限制策略。


    $ dpconf create-resource-limits-policy -h host -p port policy-name
    

    有关如何修改资源限制策略的属性的信息,请参见配置资源限制策略

  2. 将资源限制策略与某个连接处理程序关联。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler-name \
     resource-limits-policy:policy-name
    

Procedure配置资源限制策略

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看资源限制策略的属性。


    $ dpconf get-resource-limits-policy-prop -h host -p port policy-name
    

    资源限制策略的默认属性如下所示:


    description                                 :  -
    max-client-connections                      :  unlimited
    max-connections                             :  unlimited
    max-simultaneous-operations-per-connection  :  unlimited
    max-total-operations-per-connection         :  unlimited
    minimum-search-filter-substring-length      :  unlimited
    referral-bind-policy                        :  default
    referral-hop-limit                          :  default
    referral-policy                             :  default
    search-size-limit                           :  unlimited
    search-time-limit                           :  unlimited
  2. 通过设置步骤 1 中列出的一个或多个属性来配置资源限制策略:


    $ dpconf set-resource-limits-policy-prop -h host -p port policy-name \
      property:value [property:value ...]

Procedure自定义搜索限制

可以根据搜索基和搜索范围为搜索操作定义自定义限制。如果搜索操作的目标 DN 和搜索范围与指定条件相匹配,则会限制搜索结果的最大大小。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 创建一个或多个自定义搜索限制。


    $ dpconf create-custom-search-size-limit -h host -p port policy-name \
      custom-search-limit-name [custom-search-limit-name ...]
  2. 为自定义搜索限制设置条件。


    $ dpconf set-custom-search-size-limit-prop -h host -p port policy-name \
      custom-search-limit-name one-level-search-base-dn:value subtree-search-base-dn:value
    
  3. 对返回的结果(当搜索符合步骤 2 中的条件之一时)数设置限制。


    $ dpconf set-custom-search-size-limit-prop -h host -p port policy-name \
     custom-search-limit-name search-size-limit:value
    
  4. 查看自定义搜索限制的属性。


    $ dpconf get-custom-search-size-limit-prop -h host -p port policy-name \
      custom-search-limit-name
    

    自定义搜索限制的默认属性如下所示:


    one-level-search-base-dn  :  -
    search-size-limit         :  unlimited
    subtree-search-base-dn    :  -

将目录代理服务器配置为基于连接的路由器

Directory Proxy Server 5.2 是一个基于连接的路由器。在 Directory Proxy Server 5.2 中,客户端连接将被路由到特定的目录服务器。该客户端连接上的所有请求都将发送到相同的目录服务器,直到连接断开或客户端解除绑定为止。

Directory Proxy Server 6.3 是基于操作的路由器。但是,为了实现兼容性,可以将此目录代理服务器版本配置为基于连接的路由器,如以下过程所述。

Procedure将目录代理服务器配置为基于连接的路由器

  1. 创建并配置一个或多个连接处理程序,如创建、配置和删除连接处理程序所述。

    还可以使用默认的连接处理程序。

  2. 将所有连接处理程序配置为只将请求路由到根数据视图

    例如:


    $ dpconf set-connection-handler-prop -h host1 -p 1389 myConnectionHandler \
     data-view-routing-policy:custom data-view-routing-custom-list:"root data view"
  3. 为每个后端 LDAP 服务器创建并配置数据源,如创建和配置 LDAP 数据源所述。

    例如:


    $ dpconf create-ldap-data-source -h host1 -p 1389 myDataSource host2:2389
  4. 创建并配置数据源池,如创建和配置 LDAP 数据源池所述。

    例如:


    $ dpconf create-ldap-data-source-pool -h host1 -p 1389 myDataSourcePool
  5. 将所有数据源连接到数据源池,如将 LDAP 数据源连接到数据源池所述。

    例如,


    $ dpconf attach-ldap-data-source -h host1 -p 1389 myDataSourcePool myDataSource
  6. 将每个数据源配置为使用绑定重放来验证客户端,如使用绑定重放转发请求所述。

    例如:


    $ dpconf set-ldap-data-source-prop -h host1 -p 1389 myDataSource \
     client-cred-mode:use-client-identity
  7. 配置客户端连接和数据源池之间的相似性,如配置客户端相似性所述。

    例如:


    $ dpconf set-ldap-data-source-pool-prop -h host1 -p 1389 myDataSourcePool \
     enable-client-affinity:true client-affinity-policy:read-write-affinity-after-write

第 27 章 目录代理服务器客户端验证

有关目录代理服务器中的客户端验证的概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 21  章 “Directory Proxy Server Client Authentication”

本章包含以下主题:

配置客户端和目录代理服务器之间的侦听器

目录代理服务器提供了安全和非安全的侦听器,以便与客户端进行通信。有关目录代理服务器的侦听器的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Directory Proxy Server Client Listeners”。本部分介绍如何配置侦听器。

Procedure配置客户端和目录代理服务器之间的侦听器


注 –

此过程将配置客户端和目录代理服务器之间的非安全侦听器。要配置安全侦听器,请执行同一过程,但要将 ldap 替换为 ldaps


可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。 在 DSCC 中,可以在“性能”选项卡上配置此属性。

  1. 查看非安全侦听器的属性。


    $ dpconf get-ldap-listener-prop -h host -p port
    

    非安全侦听器的默认属性如下:


    connection-idle-timeout          :  1h
    connection-read-data-timeout     :  2s
    connection-write-data-timeout    :  1h
    is-enabled                       :  true
    listen-address                   :  0.0.0.0
    listen-port                      :  port-number
    max-connection-queue-size        :  128
    max-ldap-message-size            :  unlimited
    number-of-threads                :  2
    use-tcp-no-delay                 :  true
  2. 根据需求更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-ldap-listener-prop -h host -p port property:new-value
    

    例如,要禁用 host1 上运行的目录代理服务器实例的非安全端口,请运行以下命令:


    $ dpconf set-ldap-listener-prop -h host1 -p 1389 is-enabled:false

    注意 – 注意 –

    如果要使用非特权端口号,则必须以超级用户身份运行目录代理服务器。


    要更改非安全端口号,请运行以下命令:


    $ dpconf set-ldap-listener-prop -h host -p port listen-port:new-port-number
    
  3. 重新启动目录代理服务器实例以使更改生效(如有必要)。

    对某些侦听器属性所做的更改需要重新启动服务器才能生效。如果必须重新启动服务器,dpconf 会向您发出警报。有关重新启动目录代理服务器的信息,请参见重新启动目录代理服务器

验证目录代理服务器的客户端

默认情况下,为目录代理服务器配置简单绑定验证。简单绑定验证不需要任何其他配置。

有关客户端和目录代理服务器之间进行验证的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Client Authentication Overview”。有关如何配置验证的信息,请参见以下过程。

Procedure配置基于证书的验证

有关基于证书的客户端验证的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Configuring Certificates in Directory Proxy Server”。本部分介绍如何配置基于证书的验证。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。


注 –

基于证书的验证只能通过 SSL 连接执行。


  1. 将目录代理服务器配置为要求客户端在建立 SSL 连接时提供证书。


    $ dpconf set-server-prop -h host -p port allow-cert-based-auth:require

Procedure配置匿名访问

有关匿名访问的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Anonymous Access”。有关如何将匿名客户端的标识映射到另一个标识的信息,请参见以备用用户身份转发请求

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 允许未经验证的用户执行操作。


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:true

Procedure将目录代理服务器配置为进行 SASL 外部绑定

有关 SASL 外部绑定的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Using SASL External Bind”

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 不允许执行未经验证的操作。


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:false
  2. 要求客户端在建立连接时提供证书。


    $ dpconf set-server-prop -h host -p port allow-cert-based-auth:require

    客户端将提供一个包含 DN 的证书。

  3. 通过 SASL 外部绑定启用客户端验证。


    $ dpconf set-server-prop -h host -p port allow-sasl-external-authentication:true
  4. 将目录代理服务器使用的标识配置为映射后端 LDAP 服务器上的客户端证书。


    $ dpconf set-server-prop -h host -p port cert-search-bind-dn:bind-DN \
     cert-search-bind-pwd-file:filename
    
  5. 配置目录代理服务器所搜索的子树的基 DN。

    目录代理服务器将搜索子树,以查找映射到客户端证书的用户条目。


    $ dpconf set-server-prop -h host -p port cert-search-base-dn:base-DN
    
  6. 将客户端证书中的信息映射到 LDAP 服务器上的证书。

    1. 对 LDAP 服务器上包含证书的属性进行命名。


      $ dpconf set-server-prop cert-search-user-attribute:attribute
      
    2. 将客户端证书上的属性映射到 LDAP 服务器上包含证书的条目 DN。


      $ dpconf set-server-prop -h host -p port \
       cert-search-attr-mappings:client-side-attribute-name:server-side-attribute-name
      

      例如,要将 DN 为 cn=user1,o=sun,c=us 的客户端证书映射到 DN 为 uid=user1,o=sun 的 LDAP 条目,请运行以下命令:


      $ dpconf set-server-prop -h host1 -p 1389 cert-search-attr-mappings:cn:uid \
       cert-search-attr-mappings:o:o
      
  7. (可选的)将 SASL 外部绑定操作的请求路由到所有数据视图或数据视图的自定义列表。

    • 要将请求路由到所有数据视图,请运行以下命令:


      $ dpconf set-server-prop -h host -p port cert-data-view-routing-policy:all-routable
    • 要将请求路由到数据视图列表,请运行以下命令:


    $ dpconf set-server-prop -h host -p port cert-data-view-routing-policy:custom \
     cert-data-view-routing-custom-list:view-name [view-name...]
       

第 28 章 目录代理服务器日志记录

目录代理服务器在访问日志和错误日志中记录信息。与目录服务器不同,目录代理服务器没有审计日志。有关目录代理服务器中的日志的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 23  章 “Directory Proxy Server Logging”

本章包含以下主题:

查看目录代理服务器日志

可以通过日志文件或使用目录服务控制中心 (Directory Service Control Center, DSCC) 直接查看目录代理服务器日志。

默认情况下,日志存储在以下目录中:


instance-path/logs

下图显示了 DSCC 上的目录代理服务器错误日志的屏幕捕获。

图 28–1 目录代理服务器的错误日志窗口

屏幕捕获显示了目录代理服务器的错误日志。表中列出了错误日志条目。

配置目录代理服务器日志

可以使用 dpconf 命令或 DSCC 配置目录代理服务器的错误日志和访问日志。有关如何使用 DSCC 配置日志的信息,请参见目录代理服务器联机帮助。本部分介绍如何使用 dpconf 命令配置目录代理服务器日志。

通过运行以下命令,可以检索完整的配置选项列表以及允许值和默认值:

$ dpconf help-properties error-log
$ dpconf help-properties access-log

Procedure配置目录代理服务器访问日志和错误日志

此过程用于配置目录代理服务器访问日志。要配置目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看访问日志的属性。


    $ dpconf get-access-log-prop -h host -p port
    

    访问日志的默认属性如下所示:


    default-log-level                :  info
    enable-log-rotation				  :  true
    log-buffer-size                  :  9.8k
    log-file-name                    :  logs/access
    log-file-perm                    :  600
    log-level-client-connections     :  -
    log-level-client-disconnections  :  -
    log-level-client-operations      :  -
    log-level-connection-handlers    :  -
    log-level-data-sources           :  -
    log-level-data-sources-detailed  :  -
    log-min-size						  :  100M
    log-rotation-frequency           :  1h
    log-rotation-policy              :  size
    log-rotation-size                :  100M
    log-rotation-start-day           :  1
    log-rotation-start-time          :  0000
    log-search-filters               :  false
    max-age                          :  unlimited
    max-log-files                    :  10
    max-size                         :  unlimited
    min-free-disk-space-size         :  1M
  2. 更改步骤 1 中列出的一个或多个属性。


    $ dpconf set-access-log-prop -h host -p port property:value \
     [property:value ...]

    例如,要将所有消息类别的默认日志级别设置为警告,请将 default-log-level 属性的值设置为 warning


    $ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:warning

    要禁用所有日志,而不考虑每个消息类别的日志级别,请将 default-log-level 属性的值设置为 none


    $ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:none

    要将特定的日志级别重置为默认日志级别,请将该日志级别的属性设置为 inherited。例如,要重置客户端连接的日志级别,请运行以下命令:


    $ dpconf set-access-log-prop -h host1 -p 1389 log-level-client-connections:inherited

    要获取有关可使用 set-access-log-prop 子命令设置的属性的信息,请键入:


    $ dpconf help-properties access-log

配置目录代理服务器日志轮转

默认情况下,在日志文件大小达到 100 MB 时轮转日志文件。默认情况下会保留十个日志文件,超过十个之后,轮转过程将开始覆盖最早的日志文件。本部分介绍如何配置目录代理服务器日志以执行计划的轮转、如何手动轮转日志,以及如何禁用日志轮转。要查看示例配置,请参见日志轮转的示例配置

Procedure配置访问日志和错误日志的定期轮转

此过程用于配置目录代理服务器访问日志。要配置目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. (可选的)查看访问日志的属性。


    $ dpconf get-access-log-prop -h host -p port
    
  2. (可选的)查看访问日志属性的有效值。

    $ dpconf help-properties access-log
  3. 要在日志达到特定大小时轮转日志,请设置以下属性:


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-policy:size log-rotation-size:maximum file size
    

    如果未指定最大文件大小的单位, 则使用默认单位字节。当日志文件达到定义的大小时,将会轮转日志。文件大小至少为 1 MB,且不能超过 2 GB。

    有关如何按大小轮转日志的示例,请参见根据日志大小轮转日志

  4. 要定期轮转日志,而不考虑日志大小,请设置以下属性:


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-frequency:interval in months, weeks, hours, or minutes \
     log-rotation-policy:periodic \
     log-rotation-start-day:day in week (1-7) or day in the month (1-31) \
     log-rotation-start-time:time of day (hhmm)
    

    如果将日志配置为在每月的 31 号轮转,但当月少于 31 天,则日志将在下个月的第一天轮转。

    有关如何定期轮转日志的示例,请参见根据时间轮转日志

  5. 要在日志文件足够大时定期轮转日志,请设置 log-rotation-frequencylog-min-size 属性。


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-frequency:interval in months, weeks, hours, or minutes \
     log-rotation-policy:periodic log-min-size:minimum file size
     log-rotation-start-day:day in week (1-7) or day in the month (1-31) \
     log-rotation-start-time:time of day (hhmm)
    

    log-min-size 属性表示日志的最小大小。只有日志文件大于指定大小时,才会在计划的时间执行轮转。

    如果将日志配置为在每月的 31 号轮转,但当月少于 31 天,则日志将在下个月的第一天轮转。

    有关如何在文件足够大时定期轮转日志的示例,请参见根据时间和日志大小轮转日志

Procedure手动轮转访问日志文件和错误日志文件

此过程用于轮转目录代理服务器访问日志。要轮转目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 轮转访问日志。


    $ dpconf rotate-log-now -h host -p port access

Procedure禁用访问日志轮转和错误日志轮转

此过程用于禁用目录代理服务器访问日志轮转。要禁用目录代理服务器错误日志轮转,请执行相同的过程,但要将 access 替换为 error

  1. 禁用日志文件轮转。


    $ dpconf set-access-log-prop -h host -p port enable-log-rotation:false

日志轮转的示例配置

有关如何按日志大小和/或时间配置日志轮转的示例。

根据日志大小轮转日志

本部分中的示例说明如何只根据日志大小配置日志轮转。此配置将在日志大小达到 10 MB 时轮转日志,而不考虑上次轮转日志的时间。


$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-policy:size \
  log-rotation-size:10M

根据时间轮转日志

本部分中的示例说明如何根据上次轮转日志的时间来配置日志轮转,而不考虑日志大小。

如果将 log-rotation-start-day 设置为 31,而当月仅有 30 天,则日志将在下个月的第一天轮转。如果将 log-rotation-start-day 设置为 31,而当月仅有 28 天(二月),则日志将在下个月的 3 号轮转。

根据时间和日志大小轮转日志

此示例说明如何按指定的时间间隔配置日志轮转(当日志文件足够大时)。

此配置将在每天的 3:00、11:00 和 19:00 轮转日志(当日志文件大小超过 1 MB 时)。如果日志文件大小未超过 1 MB,则不会轮转日志文件。


$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:8h \
 log-rotation-policy:periodic log-min-size:1M log-rotation-start-time:0300

删除目录代理服务器日志

目录代理服务器允许您根据时间、大小或可用磁盘空间(默认)配置日志删除。有关这些删除策略的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Log File Deletion”

以下过程将配置访问日志的日志删除。要配置错误日志的日志删除,请使用相同的命令,但要将 access 替换为 error

Procedure根据时间配置访问日志和错误日志删除

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 指定日志文件的最长存留期。


    $ dpconf set-access-log-prop -h host -p port max-age:duration
    

    其中 duration 包括天 (d)、周 (w) 或月 (M) 等单位。例如,要删除五天前的备份日志文件,请使用以下命令:


    $ dpconf set-access-log-prop -h host1 -p 1389 max-age:5d

Procedure根据文件大小配置访问日志和错误日志删除

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 指定日志文件的最大大小。


    $ dpconf set-access-log-prop -h host -p port max-size:memory-size
    

    例如,要删除大于 1 MB 的备份日志文件,请使用以下命令:


    $ dpconf set-access-log-prop -h host1 -p 1389 max-size:1M

Procedure根据可用磁盘空间配置访问日志和错误日志删除

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 指定最小的可用磁盘空间。


    $ dpconf set-access-log-prop -h host -p port min-free-disk-space-size:memory-size
    

    例如,要在可用磁盘空间小于 2 MB 时删除备份日志文件,请使用以下命令:


    $ dpconf set-access-log-prop -h host1 -p 1389 min-free-disk-space-size:2M

将警报记录到 syslogd 守护进程

本部分介绍如何配置将警报消息记录到 syslogd 守护进程的过程,以及如何将操作系统配置为接受 syslog 警报。

Procedure将目录代理服务器配置为将警报记录到 syslogd 守护进程

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. (可选的)查看系统日志警报属性的当前值。


    $ dpconf get-server-prop -h host -p port syslog-alerts-enabled \
     syslog-alerts-facility syslog-alerts-host

    系统日志警报的默认属性如下所示:


    syslog-alerts-enabled   :  false
    syslog-alerts-facility  :  USER
    syslog-alerts-host      :  localhost

    syslog-alerts-host 属性定义消息所发送到的 syslogd 守护进程的主机名。syslog-alerts-facility 属性为只读属性,可导致消息发送到系统日志的 user 类别。

  2. 将警报消息记录到 syslogd 守护进程。


    $ dpconf set-server-prop -h host -p port syslog-alerts-enabled:true
  3. (可选的)将警报消息发送到其他主机上的 syslogd 守护进程。


    $ dpconf set-server-prop -h host -p port syslog-alerts-host:hostname
    

将操作系统配置为接受 syslog 警报

本部分提供了有关将 SolarisTM、Linux 和 HP-UX 操作系统配置为接受 syslog 警报的说明。

Procedure将 Solaris 操作系统配置为接受 syslog 警报

  1. 将相应的工具添加到 syslog 配置文件中。

    例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:

    user.info       /var/adm/info

    此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info

  2. 重新启动 syslogd 守护进程。

    1. 在 Solaris 8 和 Solaris 9 上,通过键入以下命令重新启动 syslogd

      $ /etc/init.d/syslog stop | start
    2. 在 Solaris 10 上,通过键入以下命令重新启动 syslogd

      $ svcadm restart system/system-log
  3. 验证是否已将消息记录到 syslog 中。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

Procedure将 Linux 配置为接受 syslog 警报

  1. 将相应的工具添加到 syslog 配置文件中。

    例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:

    user.info       /var/adm/info

    此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info

  2. syslogd 守护进程配置为使用 -r 选项运行。

    此选项允许 syslogd 接受来自网络的连接。默认情况下不设置 -r 选项。

    要设置 -r 选项,请在 /etc/sysconfig/syslog 中添加以下行:

    SYSLOGD_OPTIONS="-m 0 -r"

    如果 /etc/sysconfig/syslog 不存在,请将相同的行添加到 /etc/init.d/syslog 中。

  3. 重新启动 syslogd 守护进程。

    $ /etc/init.d/syslog stop | start
  4. 验证是否已将消息记录到 syslog 中。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

Procedure将 HP-UX 配置为接受 syslog 警报

  1. 将相应的工具添加到 syslog 配置文件中。

    例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:

    user.info       /var/adm/info

    此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info

  2. 重新启动 syslogd 守护进程。

    $ /sbin/init.d/syslogd stop | start
  3. 验证是否已将消息记录到 syslog 中。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

通过目录代理服务器和目录服务器访问日志跟踪客户端请求

要跟踪客户端请求,您必须了解在目录代理服务器访问日志和目录服务器访问日志中是如何记录请求的。要了解本部分的内容,请先阅读《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Tracking Client Requests Through Directory Proxy Server and Directory Server Access Logs”

Procedure跟踪从目录服务器经由目录代理服务器到客户端应用程序的操作

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 找到您要在目录服务器访问日志中跟踪的操作的连接号。

    例如,访问日志中的以下行显示连接号为 conn=12839 的操作 op=2


    [20/Jul/2006:18:01:49 -0500] conn=12839 op=2 msgId=4 - SRCH base="dc=example,dc=com" 
     scope=2 filter="(objectClass=organizationalunit)" attrs=ALL
  2. 获取该连接的目录代理服务器连接信息。

    要获取此信息,请搜索目录服务器访问日志,以找到具有相应连接号的所有操作。例如,在 UNIX 系统上运行以下 grep 命令,可找到目录服务器访问日志中与连接 conn=12839 相对应的所有行:


    $ grep conn=12839 access

    显示初始 LDAP 连接的行就是您要查找的行,该行类似于以下内容:


    [19/Jul/2006:16:32:51 -0500] conn=12839 op=-1 msgId=-1 - fd=27 slot=27 
     LDAP connection from 129.153.160.175:57153 to 129.153.160.175

    上面的行表明存在从 129.153.160.175:57153 到目录服务器的 LDAP 连接。端口号 (57153) 是将连接链接回目录代理服务器访问日志所需的信息。通过端口号可以查找目录代理服务器日志中相应的连接,并从此连接找到客户端信息。

    如果日志文件自首次建立连接后已进行了轮转,则需要搜索已归档的日志文件和当前的访问日志文件。

  3. 找到目录代理服务器访问日志中相应的连接。

    要获取此信息,请搜索目录代理服务器访问日志,以找到具有相应端口号的所有操作。

    您可能会在日志文件中找到具有相同端口号的多个条目。要确保找到正确的条目,请在搜索中包含目录服务器日志条目的时间戳。

    例如,在 UNIX 系统上运行以下 grep 命令,以查找与在目录服务器日志中找到的时间戳和端口号相对应的连接条目:


    $ grep 19/Jul/2006:16:32 access | grep 57153

    请注意,考虑到服务器时间会存在一些细微差别,因此从时间戳中排除了值。

    目录代理服务器日志中的相应行应类似于以下内容:


    [19/Jul/2006:16:32:51 -0500] - SERVER_OP  - INFO  - Created BIND  LDAP connection 
     s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 
     server=idm160.central.sun.com:9389 main

    此行表明目录代理服务器创建了到 s_conn=sunds-d1m1-9389:34BIND 连接。目录代理服务器将其自身标识为 TCP 端口 57153 上的客户端 client=0.0.0.0

    可从此日志行中提取的重要信息为服务器 ID 和端口号 (s_conn=sunds-d1m1-9389:34 )。

  4. 找到与上一步中标识的服务器 ID 和端口号相对应的所有操作。

    要获取此信息,请搜索目录代理服务器访问日志,以找到与服务器 ID 和端口号相对应的所有操作。

    例如,在 UNIX 系统上运行以下 grep 命令,可找到与上一步中找到的服务器 ID 相对应的操作。


    $ grep s_conn=sunds-d1m1-9389:34 access

    在这种情况下,搜索时间戳将不起作用,因为这些操作可能会跨越数天。但是,您必须确定搜索返回的操作是否正确。如果存在多个 Create 连接语句,请确保找到与原始搜索语句相对应的语句。要执行此操作,请将此时间戳与步骤 1 中找到的时间戳进行比较。

    从目录代理服务器访问日志中提取的以下内容显示了为 s_conn=sunds-d1m1-9389:34 返回的所有操作。


    [19/Jul/2006:16:32:51 -0500] - SERVER_OP  - INFO - Created BIND LDAP connection
     s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 server=idm160.central.sun.com:9389 main
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=0 BIND dn="cn=directory manager"
     method="SIMPLE" s_msgid=3 s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=0 BIND RESPONSE err=0 msg=""
     s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=1 SEARCH base="dc=example,dc=com"
     scope=2 s_msgid=4 s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=1 SEARCH RESPONSE err=0 msg=""
     nentries=1 s_conn=sunds-d1m1-9389:34

    通过以上信息,您可以看到目录代理服务器上的此搜索操作的连接 ID 为 31 (conn=31)。

  5. 找到与上一步中找到的连接 ID 相对应的客户端连接 IP 地址。

    要获取此信息,请搜索目录代理服务器访问日志,以找到具有正确连接 ID 和时间戳的所有操作。要使用的时间戳为步骤 1 中原始搜索语句中的时间戳。

    例如,在 UNIX 系统上运行以下 grep 命令,可找到客户端连接 IP 地址:


    $ grep "20/Jul/2006:18:01" access | grep conn=31

    您所关注的行应类似于以下内容:


    [20/Jul/2006:18:01:49 -0500] - CONNECT - INFO  - conn=31 client=129.150.64.156:2031
    server=0.0.0.0:11389 protocol=LDAP
  6. 确定在上一步中找到的 IP 地址的所有者。

    通过此信息,可以准确地确定在目录服务器上负责执行该操作的用户。

第 29 章 目录代理服务器监视和警报

监视功能可检测目录代理服务器和数据源的故障。

有关目录代理服务器监视框架的描述以及 cn=monitor 条目的详细布局,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Monitoring Directory Proxy Server”。本章包含以下主题:

检索有关目录代理服务器的监视数据

要检索有关目录代理服务器的监视数据,请使用 cn=monitor 条目。此条目由目录代理服务器在本地内存数据库中进行管理。通过在 cn=monitor 条目上执行 LDAP 搜索,可以检索 cn=monitor 下面的属性。您必须以代理管理员身份进行绑定才能搜索此条目。

有关使用 JVM 检索监视数据的信息,请参见使用 JVM 检索有关目录代理服务器的监视数据

检索有关数据源的监视数据

有关目录代理服务器如何监视数据源运行状况的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Monitoring Data Sources”。本部分介绍如何配置数据源监视。

Procedure通过侦听错误监视数据源

在此类型的监视中,目录代理服务器侦听目录代理服务器和数据源之间的通信错误。此类型的监视称为被动监视,因为只有在检测到错误时目录代理服务器才会反应,而不会主动测试数据源。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将数据源的监视模式设置为 reactive


    $ dpconf set-ldap-data-source-prop -h host -p port datasource monitoring-mode:reactive
  2. 配置警报,以便在检测到错误或者数据源脱机或联机时发送警报,如为目录代理服务器配置管理警报所述。

Procedure通过定期建立专用连接来监视数据源

如果在指定的时间间隔内没有到数据源的请求或来自数据源的响应,目录代理服务器将创建到数据源的专用连接。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将数据源的监视模式设置为 proactive


    $ dpconf set-ldap-data-source-prop -h host -p port datasource monitoring-mode:proactive
  2. 配置目录代理服务器执行的监视搜索请求。


    $ dpconf set-ldap-data-source-prop -h host -p port datasource \
      monitoring-bind-timeout:timeout monitoring-entry-dn:dn \
      monitoring-search-filter:filter monitoring-entry-timeout:timeout
    

    搜索请求中使用以下属性:

    monitoring-bind-timeout

    目录代理服务器等待建立数据源连接的时间长度。默认情况下,此属性的值为 5 秒。

    monitoring-entry-dn

    搜索请求中目标条目的 DN。默认情况下,此属性为根 DSE 条目 ("")。

    monitoring-search-filter

    搜索过滤器。

    monitoring-entry-timeout

    目录代理服务器等待搜索响应的时间长度。默认情况下,此属性的值为 5 秒。

  3. (可选的)配置主动性监视以绑定为特定用户。


    $ dpconf set-ldap-data-source-prop ldap-data-source \
    monitoring-bind-dn:uid=user-id monitoring-bind-pwd-file:password-file
    

    user-id 替换为有效的 DN(如 uid=bjensen,dc=example,dc=com),并将 password-file 替换为包含密码的文件的路径。

    默认情况下,绑定是匿名执行的,也就是说,monitoring-bind-dnmonitoring-bind-pwd 属性均设置为 none

  4. 设置轮询时间间隔。


    $ dpconf set-ldap-data-source-prop -h host -p port datasource monitoring-interval:interval
    

    如果连接中断,目录代理服务器将按此时间间隔对连接进行轮询,以检测其是否恢复。默认情况下,监视时间间隔为 30 秒。

  5. 配置警报,以便在检测到数据源处于脱机或联机状态时发送警报,如为目录代理服务器配置管理警报所述。

Procedure通过测试建立的连接来监视数据源

在这种类型的监视中,目录代理服务器定期在每个数据源的每个连接上执行搜索。这样,目录代理服务器可检测到关闭的连接,从而防止连接因无活动而被断开。

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将数据源的监视模式设置为 proactive


    $ dpconf set-ldap-data-source-prop -h host -p port datasource monitoring-mode:proactive
  2. 设置时间间隔,在该时间间隔后,目录代理服务器会向数据源发送请求以防止连接中断。


    $ dpconf set-ldap-data-source-prop -h host -p port datasource \
     monitoring-inactivity-timeout:time
    

    默认情况下,无活动的超时时间为 120 秒。

  3. (可选的)配置主动性监视以绑定为特定用户。


    $ dpconf set-ldap-data-source-prop ldap-data-source
    monitoring-bind-dn:uid=user-id monitoring-bind-pwd-file:password-file
    

    user-id 替换为有效的 DN(如 uid=bjensen,dc=example,dc=com),并将 password-file 替换为包含密码的文件的路径。

    默认情况下,绑定是匿名执行的,也就是说,monitoring-bind-dnmonitoring-bind-pwd 属性均设置为 none

  4. 配置警报,以便在检测到数据源处于脱机或联机状态时发送警报,如为目录代理服务器配置管理警报所述。

为目录代理服务器配置管理警报

有关如何配置管理警报的信息,请参见以下过程。

Procedure启用管理警报

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 查看启用的警报。


    % dpconf get-server-prop -h host -p port enabled-admin-alerts
  2. 启用一个或多个管理警报。


    % dpconf set-server-prop -h host -p port enabled-admin-alerts:alert1 \
      [enabled-admin-alerts:alert2 ...]

    例如,要启用所有可用警报,请运行以下命令:


    % dpconf set-server-prop -h host -p port \
     enabled-admin-alerts:error-configuration-reload-failure-with-impact \
     enabled-admin-alerts:error-server-shutdown-abrupt \ 
     enabled-admin-alerts:info-configuration-reload \
     enabled-admin-alerts:info-data-source-available \
     enabled-admin-alerts:info-server-shutdown-clean \
     enabled-admin-alerts:info-server-startup \
     enabled-admin-alerts:warning-configuration-reload-failure-no-impact \
     enabled-admin-alerts:warning-data-source-unavailable \
     enabled-admin-alerts:warning-data-sources-inconsistent \
     enabled-admin-alerts:warning-listener-unavailable

    要禁用所有警报,请运行以下命令:


    % dpconf set-server-prop -h host -p port enabled-admin-alerts:none

    要在现有的已启用警报列表中添加警报,请运行以下命令:


    % dpconf set-server-prop -h host -p port enabled-admin-alerts+:alert-name
    

    要从现有的已启用警报列表中删除警报,请运行以下命令:


    % dpconf set-server-prop -h host -p port enabled-admin-alerts-:alert-name
    

    默认情况下不启用任何警报。

另请参见

有关详细信息,请参见 enabled-admin-alerts(5dpconf)

Procedure配置要发送到 syslog 的管理警报

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 选择要发送到 syslog 守护进程的警报,如启用管理警报所述。

  2. 启用要发送到 syslog 守护进程的警报。


    $ dpconf set-server-prop -h host -p port syslog-alerts-enabled:true

    所有警报都通过 USER 工具发送到 syslog 中。

  3. 设置要将警报发送到的 syslog 守护进程的主机名。


    $ dpconf set-server-prop -h host -p port syslog_hostname:hostname
    

Procedure配置要发送到电子邮件的管理警报

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 选择将发送到 syslog 的警报,如启用管理警报所述。

  2. 配置电子邮件的地址和特性。


    $ dpconf set-server-prop -h host -p port email-alerts-smtp-host:host-name \
      email-alerts-smtp-port:port-number \
      email-alerts-message-from-address:sender-email-address \
      email-alerts-message-to-address:receiver-email-address \
      [email-alerts-message-to-address:receiver-email-address ...] \
      email-alerts-message-subject:email-subject
    
  3. 启用要发送到电子邮件的警报。


    $ dpconf set-server-prop -h host -p port email-alerts-enabled:true
  4. (可选的)设置标志,以便在电子邮件中包含警报代码。


    $ dpconf set-server-prop -h host -p port \
     email-alerts-message-subject-includes-alert-code:true

Procedure配置运行脚本的管理警报

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 选择将发送到 syslog 的警报,如启用管理警报所述。

  2. 启用运行脚本的警报。


    $ dpconf set-server-prop -h host -p port scriptable-alerts-enabled:true
  3. 设置将运行的脚本的名称。


    $ dpconf set-server-prop -h host -p port scriptable-alerts-command:script-name
    

使用 JVM 检索有关目录代理服务器的监视数据

目录代理服务器在 Java 虚拟机 (Java Virtual Machine, JVM) 中运行,并且依赖于 JVM 计算机的内存。要确保目录代理服务器正常运行,必须监视 JVM 计算机的内存使用情况。

有关如何为 JVM 计算机调整参数的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning Guide》中的“Hardware Sizing For Directory Proxy Server”

默认情况下,JVM 计算机的堆大小为 250 MB。如果目录代理服务器没有足够的物理内存,则堆大小可能小于 250 MB。

在目录代理服务器运行时,可以监视 JVM 计算机的堆大小,以确保不出现内存不足的情况。要执行此操作,请使用随 Java 开发工具包 (Java Development Kit, JDK) 提供的标准工具。这些工具位于以下目录中:$JAVA_HOME/bin/jps $JAVA_HOME/bin/jstat

Procedure查看 JVM 的堆大小

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查看 JVM 的堆大小。


    $ dpadm get-flags instance-path jvm-args
    jvm-args: -Xms250M  -Xmx250M

Procedure监视目录代理服务器运行时 JVM 的堆大小

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查看目录代理服务器实例的 PID。


    $ jps
  2. 查看 JVM 计算机所使用的内存。


    $ jstat -gcutil PID
    
    • 如果零列接近 100%, 则说明 JVM 计算机没有足够的内存。

    • FGC 是全部垃圾收集 (garbage collection, GC) 事件的数目。垃圾收集会占用很大空间。

    • GCT(garbage collection time,垃圾收集时间)是 GC 所花费的时间。