Sun 企业鉴别机制指南

第 5 章 管理授权对象和策略

本章提供用于管理授权对象及与其相关联的策略的步骤。其还显示如何管理一个主机的密钥表。

本章应当为需要管理授权对象和策略的人员所使用。在使用本章之前,您应当熟悉授权对象和策略,其中包括规划考虑。请分别参考 第 1 章,SEAM 介绍第 2 章,规划 SEAM

这是本章中步进操作指示的一个列表。

管理授权对象和策略的方法

主 KDC 上的 Kerberos 数据库包含所有您的区域的 Kerberos 授权对象,其口令,策略,及其它的管理信息。如要创建和删除授权对象,以及修改其属性,您可以使用 kadmin(1M)gkadmin(1M) 命令。

kadmin 命令提供一个交互式的命令行接口,使您可以维护 Kerberos 授权对象,策略和密钥表. 有两个版本的 kadmin 命令: kadmin,使用 Kerberos 鉴别来从网络上的任意地方安全地进行操作,以及 kadmin.local,必须直接在主 KDC 上运行。除了 kadmin 使用 Kerberos 来鉴别用户,两个版本的功能相类似。如要设置使用远程版本所需的足够的数据库,就必须使用本地版本。

另外,随 SEAM 产品一起还提供有 SEAM 管理工具, gkadmin,这是一个交互式的图形用户接口 (GUI),其所提供的功能实质上与kadmin命令相同。请参见"SEAM 管理工具",了解更多的信息。

SEAM 管理工具

SEAM 管理工具是一个交互式的图形用户接口 (GUI),使您可以维护 Kerberos 授权对象和策略。其所提供的功能,许多与 kadmin 命令相同; 然而,其并不支持对密钥表的管理。您必须使用 kadmin 命令来管理密钥表,这"管理密钥表" 中得到描述。

类似于 kadmin 命令, SEAM Tool 使用 Kerberos 鉴别和经过加密的 RPC 来从网络上的任意地方安全地进行操作。 SEAM Tool 使您可以:

SEAM Tool 还提供语境敏感和一般联机帮助。

下列任务图提供到您可以借助 SEAM Tool 进行的各种各样任务的指针:

另外,请转到 "SEAM Tool 面板描述",了解对您可以在 SEAM 工具中指定或查看的所有授权对象和策略属性的描述。

SEAM Tool 的等效命令行;

本节列出 kadmin 命令,其所提供的功能与 SEAM Tool 相同,不用运行 X Window 系统就可以加以使用。尽管本章中的大多数的步骤使用 SEAM Tool, 但其中许多步骤还提供相应的使用等效命令行的示例。

表 5-1 SEAM Tool 的等效命令行

步骤 

kadmin 命令

查看授权对象的列表 

list_principalsget_principals

查看一个授权对象的属性 

get_principal

创建一个新的授权对象 

add_principal

复制一个授权对象 

无等效命令行 

修改一个授权对象 

modify_principalchange_password

删除一个授权对象 

delete_principal

为创建新的授权对象设置默认值 

无等效命令行 

查看策略的列表 

list_policiesget_policies

查看一个策略的属性 

get_policy

创建一个新的策略 

add_policy

修改一个策略 

modify_policy

复制一个策略 

无等效命令行 

删除一个策略 

delete_policy

SEAM Tool 所修改的文件

SEAM Tool 所修改的唯一文件就是 $HOME/.gkadmin 文件。其包含用于创建新的授权对象的默认的值,且可以通过从编辑菜单选择属性加以更新。

SEAM Tool 的打印和联机帮助特性

SEAM Tool 提供打印和联机帮助特性两者。从打印菜单,您可以将下列发送到一个打印机或一个文件:

从帮助菜单,您可以获得语境敏感帮助和一般帮助。当您从帮助菜单选择语境敏感帮助时,语境敏感帮助窗口就显示出来,且工具被切换到帮助模式。在帮助模式中,当您在窗口上的任意字段,标签,或按钮上单击时,该项目上的帮助就在帮助窗口中显示出来。如要切换回工具的常规模式,请在帮助窗口中单击撤除。

您还可以选择帮助内容,打开一个 HTML 浏览器,其中提供到本章中所提供的一般总览和任务信息的指针。

在 SEAM Tool 中操作大型列表

随着您的站点开始蓄积大量的授权对象和策略, SEAM 工具加载和显示授权对象和策略列表时所花费的时间将变得越来越长,并将减缓您使用工具的生产率。有多个方法可以使用,以对此加以解决。

首先,您可以完全消除加载列表的时间,方法是不让 SEAM 工具加载列表。您可以通过从编辑菜单选择属性和撤销对显示列表字段的复选,对该选项进行设定。当然,当工具不加载列表时,其就无法显示列表,而您不再能够使用列表面板来选择授权对象或策略。替代方法是,您必须在所提供的新的名称字段中录入一个授权对象或策略名称,然后选择您想要对其进行的操作。基本上,录入一个名称与从列表选择一个项目等效。

操作大型列表的另一方法是对其进行高速缓存。实际上,在一个有限的时间里对列表进行高速缓存被设定为 SEAM 工具的默认行为。 SEAM 工具起初依旧必须将列表加载进高速缓存,但在此后,工具就可以使用高速缓存,而不是再次取回列表。这就消除了不断从服务器加载列表的必要,而正是这花费的时间较长。

您可以通过另外从编辑菜单选择属性,设定列表高速缓存。有两个高速缓存设定。您可以选择永远高速缓存列表,您也可以指定一个时限,此时工具必须将列表从服务器重新加载进高速缓存。

对列表进行高速缓存依旧使您可以使用列表面板来选择授权对象和策略,因而其并不象第一个选项那样对您如何使用 SEAM Tool 构成影响。另外,尽管进行高速缓存并不使您可以看到其它的变更,您依旧能够看到基于您的变更的最新的列表信息,因为您的变更对服务器上的和高速缓存中的列表均进行更新。而且,如果您想更新高速缓存来查看其它的变更并获得列表的最新副本,则每当您想刷新来自服务器的高速缓存时,您均可以使用刷新菜单。

如何启动 SEAM Tool

  1. 通过使用 gkadmin 命令来启动 SEAM Tool。


    $ /usr/krb5/sbin/gkadmin
    

    登录窗口显示出来。

    Graphic
  2. 如果您不想使用默认的值,则请指定新的值。

    登录窗口自动填充为默认的值。默认的授权对象名称,是通过从 USER环境变量提取您的当前的身份并向其追加 /admin 而加以确定的 (username/admin)。默认的区域和主 KDC 字段是从 /etc/krb5/krb5.conf 文件选择的。如果您真地想要返回到默认的值,则请单击从头开始。


    注意:

    授权对象名称可以进行的管理操作取决于 Kerberos ACL 文件, /etc/krb5/kadm5.acl请参见"将 SEAM Tool 用于有限的 Kerberos 管理特权",了解关于有限特权的信息。


  3. 为所指定的授权对象名称录入一个口令。

  4. 单击确认。

    下列窗口显示出来。

    Graphic

管理授权对象

本节提供用于借助 SEAM Tool 管理授权对象的一步步的操作指示。可用时,还提供有等效命令行示例,即在每个步骤之后使用 kadmin 命令。

管理授权对象任务图

表 5-2 管理授权对象任务图

任务 

描述 

如要了解操作指示,请转到 ... 

查看授权对象的列表 

通过单击授权对象选项卡,查看授权对象的列表。 

"如何查看授权对象的列表"

查看一个授权对象的属性 

通过在授权对象列表中选择授权对象并单击修改按钮,查看一个授权对象的属性。  

"如何查看一个授权对象的属性"

创建一个新的授权对象 

通过在授权对象列表面板中单击创建新的按钮,创建一个新的授权对象。 

"如何创建一个新的授权对象"

复制一个授权对象 

通过在授权对象列表中选择要复制的授权对象和单击复制按钮,复制一个授权对象。 

"如何复制一个授权对象"

修改一个授权对象 

通过在授权对象列表中选择要修改的授权对象并单击修改按钮,修改一个授权对象。 

请注意,您无法修改一个授权对象的名称。如要重命名一个授权对象,您必须复制授权对象,为其指定一个新的名称,加以保存,然后删除旧的授权对象。 

"如何修改一个授权对象"

删除一个授权对象 

通过在授权对象列表中选择要删除的授权对象并单击删除按钮,删除一个授权对象。 

"如何删除一个授权对象"

为创建新的授权对象设置默认值 

通过从编辑菜单选择属性,为创建新的授权对象设置默认值。 

"如何为创建新的授权对象设置默认值"

修改 Kerberos 管理特权 (kadm5.acl 文件)

限于命令行。 Kerberos 管理特权确定一个授权对象可以在 Kerberos 数据库上进行何种操作,诸如添加和修改。您必须编辑 /etc/krb5/kadm5.acl 文件才能为每个授权对象修改 Kerberos 管理特权。

"如何修改 Kerberos 管理特权"

自动化新的授权对象的创建

尽管 SEAM Tool 提供了使用上的便利,但其并没有提供一个自动化新的授权对象的创建的方法。如果您想要在一个短时间内添加 10 个甚至 100 个新的授权对象,则自动化就特别有用。然而,通过在一个 Bourne 外壳正文中使用 kadmin.local 命令,您就可以做到这一点。

下面的外壳正文行是如何做到这一点的一个示例:

sed -e 's/^\(.*\)$/ank +needchange -pw \1 \1/' < princnames |
       time /usr/krb5/sbin/kadmin.local> /dev/null

本示例业已分为两行,以使其更加可读。正文读入一个称为 princnames 的文件,其中包含授权对象名称及其口令,并将其添加到 Kerberos 数据库。您必须创建 princnames 文件,在每行上包含一个授权对象名称及其口令,其间通过一个或多个空格来加以分隔。 +needchange选项配置授权对象,从而用户在第一次借助授权对象进行登录时,被提示录入一个新的口令,这有助于确保 princnames 文件中的口令并非一个安全隐患。

这只是一个示例。您可以建立更多的精致的正文,诸如在名称服务中使用信息来为授权对象名称获得用户名的列表。您做什么以及您如何做,取决于您的站点需要和您的正文编写经验。

如何查看授权对象的列表

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击授权对象选项卡。

    授权对象的列表显示出来。

    Graphic
  3. 如要显示一个具体的授权对象或授权对象的子列表,请在过滤器样式字段中录入一个过滤器字符串并按回车。如果过滤器成功,与过滤器匹配的授权对象的列表就显示出来。

    过滤器字符串必须由一个或多个字符构成。因为过滤器机制对大小写敏感,您必须为过滤器使用适当的大写和小写字母。例如,如果您录入过滤器字符串 ge,过滤器机制将只显示其中带有 ge 字符串的授权对象 (例如,georgeedge)。

    如果您想显示整个授权对象的列表,请单击清除过滤器。

示例-查看授权对象的列表 (命令行)

下列示例使用 kadminlist_principals 命令来列示所有匹配 test* 的授权对象。通配符可以用于 list_principals 命令。


kadmin: list_principals test*
test1@ACME.COM
test2@ACME.COM
kadmin: 退出

如何查看一个授权对象的属性

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击授权对象选项卡。

  3. 选择列表中您想要查看的授权对象并单击修改。

    包含授权对象的某些属性的授权对象基本内容面板显示出来。

  4. 继续单击下一步来观看所有授权对象的属性。

    三个窗口包含属性信息。从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 "SEAM Tool 面板描述",了解所有授权对象属性描述。

  5. 当您查看完毕时,单击取消。

示例-查看一个授权对象的属性

下列示例显示查看 jdb/admin 授权对象时的第一个窗口。

Graphic

示例-查看一个授权对象的属性 (命令行)

下列示例使用 kadminget_principal 命令来查看jdb/admin 授权对象的属性。


kadmin: getprinc jdb/admin
Principal: jdb/admin@ACME.COM 
到期日: Fri Aug 25 17:19:05 PDT 2000 
上次口令更改: [never] 口令到期日: Wed Apr 14 11:53:10 PDT 1999 
最长票券期限: 1 day 16:00:00 
最长续延期限: 1 天 16:00:00 
上次修改: Thu Jan 14 11:54:09 PST 1999 (admin/admin@ACME.COM) 
最近成功鉴别: [never] 
最近失败鉴别: [never] 
失败口令尝试: 0 
密钥数: 1 
密钥: vno 1, DES cbc 模式带 CRC-32, 无 salt 
属性: REQUIRES_HW_AUTH 
策略: [none] 
kadmin: 退出

如何创建一个新的授权对象

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。


    注意:

    如果您正在创建一个可能需要一个新的策略的新的授权对象,则在创建新的授权对象之前,您应当创建新的策略。请转到 "如何创建一个新的策略"


  2. 单击授权对象选项卡。

  3. 单击新建。

    包含一个授权对象的某些属性的授权对象基本内容面板显示出来。

  4. 指定一个授权对象名称和口令。

    授权对象名称和口令两者均为强制性的。

  5. 为授权对象的属性指定值并继续单击下一步来指定更多的属性。

    三个窗口包含属性信息。从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 "SEAM Tool 面板描述",了解所有授权对象属性描述。

  6. 单击保存来保存授权对象,或在最后的面板上单击完成。

  7. 如有必要,请在 /etc/krb5/kadm5.acl 文件中为新的授权对象设置 Kerberos 管理特权。

    请参见"如何修改 Kerberos 管理特权",了解更多的细节。

示例-创建一个新的授权对象

下列示例显示创建一个称为 pak 的新的授权对象时的授权对象基本内容面板。到目前为止,策略业已设定为 testuser

Graphic

示例-创建一个新的授权对象 (命令行)

下列示例使用 kadminadd_principal 命令来创建一个称为 pak 的新的授权对象。授权对象的策略设定为 testuser


kadmin: add_principal -policy testuser pak
为授权对象录入口令 "pak@ACME.COM": <键入口令>
为授权对象重新录入口令 "pak@ACME.COM":  <再次键入口令> 
授权对象 "pak@ACME.COM" 已创建。
kadmin:退出

如何复制一个授权对象

本步骤解释如何使用一个现有的授权对象的所有或某些属性来创建一个新的授权对象。本步骤没有等效命令行。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击授权对象选项卡。

  3. 在列表中选择您想要复制的授权对象并单击复制。

    授权对象基本内容面板显示出来。所选择授权对象的所有属性得到复制,授权对象名称和口令字段除外,其为空。

  4. 指定一个授权对象名称和口令。

    授权对象名称和口令两者均为强制性的。如果您想制作所选授权对象的一个精确的副本,则请单击保存并跳到最后的步骤。

  5. 为授权对象的属性指定不同的值并继续单击下一步来指定更多的属性。

    三个窗口包含属性信息。从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 "SEAM Tool 面板描述",了解所有授权对象属性描述。

  6. 单击保存来保存授权对象,或在最后的面板上单击完成。

  7. 如有必要,请在 /etc/krb5/kadm5.acl 文件中为新的授权对象设置 Kerberos 管理特权。

    请参见"如何修改 Kerberos 管理特权",了解更多的细节。

如何修改一个授权对象

本步骤后跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool",了解有关细节。

  2. 单击授权对象选项卡。

  3. 在列表中选择您想要修改的授权对象并单击修改。

    包含授权对象的某些属性的授权对象基本内容面板显示出来。

  4. 修改授权对象的属性,并继续单击下一步,修改更多的属性。

    三个窗口包含属性信息。从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 "SEAM Tool 面板描述",了解所有授权对象属性描述。


    注意:

    您无法修改一个授权对象的名称。如要重命名一个授权对象,您必须复制授权对象,为其指定一个新的名称,加以保存,然后删除旧的授权对象。


  5. 单击保存来保存授权对象,或在最后的面板上单击完成。

  6. /etc/krb5/kadm5.acl 文件中为授权对象修改 Kerberos 管理特权。

    请参见"如何修改 Kerberos 管理特权",了解更多的细节。

示例-修改一个授权对象的口令 (命令行)

下列示例使用 kadminchange_password 命令来为 jdb 授权对象修改口令。 change_password 不让您将口令更改为已存在于授权对象的口令历史记录中的口令。


kadmin: change_password jdb
为授权对象 "jdb" 录入口令: <键入新的口令>
再为授权对象 "jdb" 录入口令: <再次键入口令>
"jdb@ACME.COM" 的口令已更改。
kadmin: 退出

如要为一个授权对象修改其它的属性,您必须使用 kadminmodify_principal 命令。

如何删除一个授权对象

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击授权对象选项卡。

  3. 在列表中指定您想要删除的授权对象并单击删除。

    在您确认删除之后,授权对象被删除。

  4. 从 Kerberos ACL 文件, /etc/krb5/kadm5.acl, 去除授权对象。

    请参见"如何修改 Kerberos 管理特权",了解更多的细节。

示例-删除一个授权对象 (命令行)

下列示例使用 kadmindelete_principal 命令来删除 jdb 授权对象。


kadmin: delete_principal pak
您确信您想删除授权对象 "pak@ACME.COM" 吗? (是/否): 
授权对象 "pak@ACME.COM" 被删除。
在重新使用之前,请确保您业已从所有的 ACL 去除该授权对象。 
kadmin: 退出

如何为创建新的授权对象设置默认值

本步骤无等效命令行。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 从编辑菜单选择属性。

    属性窗口显示出来。

    Graphic
  3. 选择您创建新的授权对象时您想要的默认值。

    从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。

  4. 单击保存。

如何修改 Kerberos 管理特权

尽管您的站点可能拥有许多用户授权对象,但您通常只想要几个用户能够管理 Kerberos 数据库。管理 Kerberos 数据库的特权是通过 Kerberos 访问控制列表 (ACL) 文件, kadm5.acl(4),来加以确定的。 kadm5.acl 文件使您可以为单个的授权对象允许或撤销允许特权,您也可以在授权对象名称中使用 '*' 通配符来为成组的授权对象指定特权。

  1. 在主 KDC 上变为超级用户。

  2. 编辑 /etc/krb5/kadm5.acl 文件。

    kadm5.acl 文件中的一个条目必须拥有下列格式:


    授权对象   特权  [principal_target]

    授权对象

    被授予特权的授权对象。授权对象名称的任意部分均可以包括 '*' 通配符,向一组授权对象提供相同的特权时,这就很有用。例如,如果您想将所有授权对象指定为 admin 实例,您会使用 */admin@realm。请注意,admin 实例的一个常见的用法就是,将独立的特权 (诸如对 Kerberos 数据库的管理访问) 授予一个独立的 Kerberos 授权对象。例如,用户 jdb 可能为其管理之用拥有一个授权对象,称为 jdb/admin。这样,只当其实际需要使用上述特权时, jdb 才会获得 jdb/admin 票券。

    特权

    指定授权对象可以或不可以进行何种操作。这是来自下面字符列表的一个或多个字符的字符串或其大写形式。如果字符为大写(或者没有指定),则操作遭到拒绝。如果字符为小写,则操作得到许可。 

     

    a

    [不]允许添加授权对象或策略。 

     

    d

    [不]允许删除授权对象或策略。 

     

    m

    [不]允许修改授权对象或策略。 

     

    c

    [不]允许为授权对象更改口令。 

     

    i

    [不]允许对数据库进行查询。 

     

    l

    [不]允许列示数据库中的授权对象或策略。 

     

    x*

    允许所有特权 (admcil)。

    principal_target

    当该字段中指定有一个授权对象时, 特权只有在对 principal_target 进行操作时,其才适用于 授权对象。授权对象名称的任意部分均可以包括 '*' 通配符,这对授权对象进行归组时很有用。

示例-修改 Kerberos 管理特权

kadm5.acl 文件中下面的条目,向 ACME.COM 区域中的带有 admin 实例的任意授权对象给予对数据库的所有特权。


*/admin@ACME.COM *

kadm5.acl 文件中下面的条目,向 jdb@ACME.COM 授权对象给予添加,列示,和查询带有 root 实例的任意授权对象的特权。


jdb@ACME.COM ali */root@ACME.COM

管理策略

本节提供用于借助 SEAM Tool 管理授权对象的步进操作指示。可用时,还提供有等效命令行示例,即在每个步骤之后使用 kadmin 命令。

管理策略任务图

表 5-3 管理策略任务图

任务 

描述 

如要了解操作指示,请转到 ... 

查看策略的列表 

通过单击策略选项卡,查看策略的列表。 

"如何查看策略的列表"

查看一个策略的属性 

通过在策略列表中选择策略并单击修改按钮,查看一个策略的属性。 

"如何查看一个策略的属性"

创建一个新的策略 

通过在策略列表面板中单击新创建按钮,创建一个新的策略。 

"如何创建一个新的策略"

复制一个策略 

通过在策略列表中选择要复制的策略并单击复制按钮,复制一个策略。 

"如何复制一个策略"

修改一个策略 

通过在策略列表中选择要修改的策略并单击修改按钮,修改一个策略。 

请注意,您无法修改一个策略的名称。如要重命名一个策略,您必须复制策略,为其指定一个新的名称,加以保存,然后删除旧的策略。 

"如何修改一个策略"

删除一个策略 

通过在策略列表中选择要删除策略并单击删除按钮,删除一个策略。 

"如何删除一个策略"

如何查看策略的列表

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。

    策略的列表显示出来。

    Graphic
  3. 如要显示一个具体的授权对象或策略的子列表,请在过滤器样式字段中录入一个过滤器字符串并按回车。如果过滤器成功,与过滤器匹配的策略的列表就显示出来。

    过滤器字符串必须由一个或多个字符构成。因为过滤器机制对大小写敏感,您必须为过滤器使用适当的大写和小写字母。例如,如果您录入过滤器字符串 ge,过滤器机制将只显示其中带有 ge 字符串的授权对象 (例如,georgeedge)。

    如果您想显示整个策略的列表,请单击清除过滤器。

示例-查看策略的列表 (命令行)

下列示例使用 kadminlist_policies 命令来列表所有匹配 *user* 的策略。通配符可以用于 list_policies 命令。


kadmin: list_policies *user*
testuser 
enguser 
kadmin:退出

如何查看一个策略的属性

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。

  3. 选择列表中您想要查看的策略并单击修改。

    策略细节面板显示出来。

  4. 当您查看完毕时,单击取消。

示例-查看一个策略的属性

下列示例显示查看 test 策略时的策略细节面板。

Graphic

示例-查看一个策略的属性 (命令行)

下列示例使用 kadminget_policy 命令来查看 enguser 策略的属性。


kadmin: get_policy enguser
Policy: enguser 
最长口令期限: 2592000 
最短口令期限: 0 
最短口令长度: 8 
口令字符类的最低数量: 2 
所保留的旧密钥的数量: 3 
参考计数: 0 
kadmin: 退出

参考计数是使用该策略的授权对象的数量。

如何创建一个新的策略

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。

  3. 单击新建。

    策略细节面板显示出来。

  4. 在策略名称字段中为策略指定一个名称。

    策略名称是强制性的。

  5. 为策略的属性指定值。

    从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 表 5-7,了解所有策略属性描述。

  6. 单击保存来保存策略,或单击完成。

示例-创建一个新的策略

下列示例显示创建一个称为 build11 的新的策略。到目前为止,最少口令类业已更改为 3.

Graphic

示例-创建一个新的策略 (命令行)

下列示例使用 kadminadd_policy 命令来创建 build11 策略,该策略要求一个口令中有至少 3 个字符类。


$ kadmin
kadmin: add_policy -minclasses 3 build11
kadmin: 退出

如何复制一个策略

本步骤解释如何使用一个现有的策略的所有或某些属性来创建一个新的策略。本步骤没有等效命令行。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。

  3. 在列表中选择您想要复制的策略并单击复制。

    策略细节面板显示出来。所选择策略的所有属性得到复制,策略名称字段除外,其为空。

  4. 在策略名称字段中为所复制策略指定一个名称。

    策略名称是强制性的。如果您想制作您所选择的策略的一个精确的副本,则请单击保存并跳到最后的步骤。

  5. 为策略的属性指定不同的值。

    从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 表 5-7,了解所有策略属性描述。

  6. 单击保存来保存策略,或单击完成。

如何修改一个策略

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。

  3. 在列表中选择您想要修改的策略并单击修改。

    策略细节面板显示出来。

  4. 修改策略的属性。

    从帮助菜单选择语境敏感帮助,获得关于每个窗口中的各种各样属性的信息。也可以转到 表 5-7,了解所有策略属性描述。


    注意:

    您无法修改一个策略的名称。如要重命名一个策略,您必须复制策略,为其指定一个新的名称,加以保存,然后删除旧的策略。


  5. 单击保存来保存策略,或单击完成。

示例-修改一个策略 (命令行)

下列示例使用 kadminmodify_policy 命令来将一个口令的最小长度修改为五个字符为 build11 策略。


$ kadmin
kadmin: modify_policy -minlength 5 build11
kadmin: 退出

如何删除一个策略

本步骤后面跟有相对应的等效命令行的一个示例。

  1. 如有必要,请启动 SEAM Tool。

    请参见"如何启动 SEAM Tool" ,了解有关细节。

  2. 单击策略选项卡。


    注意:

    在删除一个策略之前,您必须从当前正在使用该策略的所有授权对象将其取消 (您必须修改授权对象的策略属性)。策略如果正在为任何授权对象所用,则无法予以删除。


  3. 在列表中指定您想要删除的策略并单击删除。

    在您确认删除之后,策略被删除。

示例-删除一个策略 (命令行)

下列示例使用 kadmin 命令的 delete_policy 命令来删除 build11 策略。


kadmin: delete_policy build11  
您确信您想删除策略 "build11" 吗? (是/否): yes
kadmin: 退出

在删除一个策略之前,您必须从当前正在使用该策略的所有授权对象将其取消 (您必须在授权对象上使用 kadminmodify_principal -policy命令)。如果其正在为一个授权对象所使用,则 delete_policy 命令将失败。

SEAM Tool 参考

本节为 SEAM Tool 提供参考信息。

SEAM Tool 面板描述

本节为您可以在 SEAM 工具中指定或查看的每个授权对象和策略属性提供描述。属性是通过其显示时所在的面板加以组织的。

表 5-4 授权对象基本面板属性

属性 

描述 

授权对象名称 

授权对象的名称 (一个完全合格的授权对象名称的 主干/实例 部分)。授权对象是一个独特的身份, KDC 可以向其分派票券。

如果您正在修改一个授权对象,您就无法编辑一个授权对象的名称。 

口令 

用于授权对象的口令。您可以使用生成随机口令按钮来为授权对象创建一个随机口令。 

策略 

一个可用于授权对象的策略的菜单。 

帐户到期 

授权对象的帐户到期的日期和时间。当帐户到期时,授权对象不再可以获得一个具有票券授予权的票券 (TGT) 且不可以登录。 

最近授权对象更改 

授权对象的信息最近得到修改的日期。(只读) 

最近更改者 

最近为该授权对象修改帐户的授权对象的名称。(只读) 

说明 

与授权对象有关的说明 (例如,'临时帐户') 

表 5-5 授权对象细节面板属性

属性 

描述 

最近成功 

授权对象最近成功登录的日期和时间。(只读) 

最近失败 

最近为授权对象进行登录发生失败的日期和时间。(只读) 

失败计数 

为授权对象进行登录发生失败的次数。(只读) 

上次口令更改 

授权对象的口令最近遭到更改的日期和时间。(只读) 

口令到期 

授权对象的当前的口令将要到期的日期和时间。 

密钥版本 

授权对象的密钥版本号码; 通常只有当口令被折衷后才对此进行更改。 

最长期限 (秒) 

可以为授权对象授予票券的最大时间长度 (无续延)。 

最长续延期 (秒) 

可以为授权对象续延一个现有票券的最大时间长度。 

表 5-6 授权对象标志面板属性

属性 (单选按钮) 

描述 

禁用帐户 

当选中时,防止授权对象登录。这是出于某些原因而暂时冻结一个授权对象帐户的一个简便方法。 

要求口令更改 

当选中时,使授权对象的当前的口令到期,强迫用户使用 kpasswd 命令来创建一个新的口令。如果有一个安全漏洞而您必须确保旧的口令得到替换,这就很有用。

允许超期票券 

当选中时,允许授权对象获得超期票券。 

例如,您可能需要为 cron 任务使用超期票券,此类任务必须在几小时后运行,而其又因为票券期限太短而无法事先获得票券。 

允许可转发票券 

当选中时,允许授权对象获得可转发票券。 

可转发票券是指被转发到远程主机的票券,用以提供单次进入系统对话。例如,如果您正在使用可转发票券而且您通过 ftprsh 鉴别您自己,则您可享用其它服务,例如 NFS,而不会提示您输入另一口令。

允许可续延票券 

当选中时,允许授权对象获得可续延票券。 

新的授权对象能够自动地延展可续延票券的到期日期或时间(而无需在第一张票券到期后不得不获得新票券)。目前, NFS 服务是唯一能够续延票券的服务。 

允许可代理票券 

当选中时,允许授权对象来获得可代理票券。 

可代理票券是指能够被某项服务用来代表客户进行客户操作的票券。有了可代理票券,一项服务就能够具有客户的身份,并为另一项服务获得票券,但它不能获得具有票券授予权的票券。 

允许服务票券 

当选中时,允许为授权对象发放服务票券。 

您不应当允许为 kadmin/hostnamechangepw/hostname 授权对象发放服务票券来。这就确保这些授权对象只可以更新 KDC 数据库。

允许基于 TGT 的鉴别 

当选中时,允许服务授权对象向另一授权对象提供服务。更加具体来讲,它允许 KDC 为服务授权对象发放某项服务票券。 

本属性只对服务授权对象有效。当不加选中时,就不能为新服务授权对象发放服务票券。 

允许复制鉴别 

当选中时,允许用户授权对象为其它的用户授权对象获得服务票券。 

本属性只对用户授权对象有效。当不加选中时,用户授权对象依旧可以为服务授权对象获得服务票券,但不能为其它的用户授权对象获得服务票券。 

要求预鉴别 

当选中时,KDC 将不会将所请求的具有票券授予权的票券 (TGT) 发送到授权对象,直到它能够鉴别 (通过软件) 它确实为请求该 TGT 的授权对象。本预鉴别一般通过附加口令完成,例如,从 DES 卡。 

当不加选中时,KDC 将无需在其向授权对象发送所请求的 TGT 之前对它进行预鉴别。 

要求硬件鉴别 

当选中时,KDC 将不会将所请求的具有票券授予权的票券 (TGT) 发送到授权对象,直到它能够鉴别 (通过硬件) 它确实为请求该 TGT 的授权对象。硬件预鉴别可以是类似 Java 环形阅读器的东西。 

当不加选中时,KDC 将无需在其向授权对象发送所请求的 TGT 之前对它进行预鉴别。 

表 5-7 策略基本内容面板属性

属性 

描述 

策略名称 

策略是用于管辖授权对象的口令和票券的全套规定。 

如果您正在修改一个策略,您就无法编辑一个策略的名称。 

最短口令长度 

最小长度为授权对象的口令。 

最少口令类别 

授权对象的口令所要求的不同字符类型的最低数量。 

例如,最少类别值为 2 意味着口令必须至少有两种不同字符类,如字母和数字 (hi2mom)。类别值为 3 意味着口令必须有三种不同字符类,如字母、数字和标点符号(hi2mom!)。依次类推。 

类别值为 1 基本上对口令字符类数量不设限制。 

保存的口令历史记录 

授权对象曾使用而且不能再重新使用的原先口令数量。 

最短口令期限 (秒) 

口令必须加以使用的最短时间,然后才能对其进行更改。 

最长口令期限 (秒) 

口令能够加以使用的最长时间,然后必须对其进行更改。 

使用该策略的授权对象 

本策略目前适用的授权对象数量。(只读) 

将 SEAM Tool 用于有限的 Kerberos 管理特权

如果您的 admin 授权对象拥有管理 Kerberos 数据库的所有特权,则 SEAM 管理工具的所有特性均可用。但也可能拥有有限特权,诸如只允许查看授权对象的列表或更改一个授权对象的口令。借助有限的 Kerberos 管理特权,您依旧可以使用 SEAM 管理工具; 然而, SEAM 工具的各个部分将基于您所没有的 Kerberos 管理特权而发生改变。 表 5-8 显示 SEAM 工具如何基于您的 Kerberos 管理特权而发生改变。

对 SEAM 工具进行的最为明显的改变发生在您没有列表特权时。没有列表特权,列表面板就不显示授权对象和策略的列表,您就无法操纵。替代方法是,您必须在列表面板中使用名称字段来指定一个您想操作的授权对象或策略。

如果您登录到 SEAM 工具而您没有充足的特权来借助它进行有用的任务,则下列消息将显示出来,而您将被送回到登录窗口:


没有充足的特权来使用 gkadmin: ADMCIL。请尝试使用另一授权对象。

如要更改特权,以便一个授权对象来管理 Kerberos 数据库,请转到 "如何修改 Kerberos 管理特权"

表 5-8 在有限的 Kerberos 管理特权的情况下使用 SEAM 工具

如果您没有该特权 ... 

则 SEAM 工具变更如下 ... 

a (添加)

创建新的和复制按钮在授权对象和策略列表面板中不可用。没有添加特权,您就无法创建新的或复制授权对象或策略。 

d (删除)

删除按钮在授权对象和策略列表面板中不可用。没有删除特权,您就无法删除授权对象或策略。 

m (修改)

修改按钮在授权对象和策略列表面板中不可用。没有修改特权,您就无法修改授权对象或策略。 

另外,修改按钮不可用,您就无法修改一个授权对象的口令,即使您拥有更改口令特权。 

c (更改口令)

授权对象基本内容面板中的口令字段为只读和无法加以更改。没有更改口令特权,您就无法修改一个授权对象的口令。 

请注意,即使您拥有更改口令特权,您还必须拥有修改特权才能更改一个授权对象的口令。 

i (查询数据库)

修改和复制按钮在授权对象和策略列表面板中不可用。没有查询特权,您就无法修改或复制一个授权对象或策略。 

另外,修改按钮不可用,您就无法修改一个授权对象的口令,即使您拥有更改口令特权。 

l (列表)

列表面板中的授权对象和策略的列表不可用。没有列表特权,您就必须使用列表面板中的名称字段来指定您想操作的授权对象或策略。 

管理密钥表

提供某项服务的每个主机必须拥有一个本地文件,称为 密钥表 (密钥表的缩写), 其中包含用于适当服务的授权对象,称为 服务密钥。服务密钥被某项服务用来向 KDC 进行自我鉴别,且仅为 Kerberos 和服务自身所知晓。例如,如果您拥有一个 Kerberized NFS 服务器,则该服务器必须拥有一个包含其 nfs 服务授权对象的密钥表。

如要添加某项服务密钥到一个密钥表, 您就通过使用 kadminktadd 命令,将适当的服务授权对象添加到一个主机的密钥表。而且,因为您将添加某项服务授权对象正在到一个密钥表,该授权对象必须业已存在于 Kerberos 数据库,从而 kadmin 可以验证其存在。在主 KDC 上,默认情况是,密钥表文件位于 /etc/krb5/kadm5.keytab。在提供 Kerberized 服务的应用程序服务器上,默认情况是,密钥表文件位于 /etc/krb5/krb5.keytab

一个密钥表类似于一个用户的口令。为用户保护其口令很重要,应用程序服务器保护其密钥表同样很重要。您应当总是将密钥表存储在一个本地磁盘上,并使其只能为 root 读取,而您永远不应跨越一个不安全的网络发送一个密钥表。

还有一个特殊的实例,即将一个root 授权对象添加到一个主机的密钥表。基本上,如果您想要 SEAM 客户机上的一个用户借助 Kerberos 鉴别来自动装配 Kerberized NFS 文件系统,您就必须添加客户机的root 授权对象到客户机的密钥表。否则,每当用户想要装配一个 Kerberized NFS 文件系统时,用户就必须作为 root,借助 kinit 命令来为客户机的root 授权对象获得资格,即便是使用自动装配器。请参见"设置 Root 鉴别来装配 NFS 文件系统",了解详细的信息。


注意:

当设置一个主 KDC 时,您必须将 kadmindchangepw 授权对象添加到 kadm5.keytab 文件,因而 KDC 可以为管理员的 Kerberos 票券解密,以确定是否其应当给予其对来数据库的访问。


您可以用来管理密钥表的另一命令是 ktutil 命令。 ktutil 是一个交互式的命令行接口实用程序,使您没有 Kerberos 管理特权就可以管理一个本地主机的密钥表, 因为 ktutil 不象 kadmin 那样与 Kerberos 数据库交互作用。因此,在将一个授权对象添加到一个密钥表之后,您可以用 ktutil 来查看一个密钥表中的密钥列表,或暂时为某项服务禁用鉴别。

管理密钥表任务图

表 5-9 管理密钥表任务图

任务 

描述 

如要了解操作指示,请转到 ... 

添加某项服务授权对象到一个密钥表 

使用 kadminktadd 命令来添加某项服务授权对象到一个密钥表。

"如何添加某项服务授权对象到一个 keytab"

从一个密钥表去除某项服务授权对象 

使用 kadminktremove 命令来从一个密钥表去除某项服务。

"从一个密钥表如何去除某项服务授权对象"

显示一个密钥表中的密钥列表 (授权对象) 

使用 ktutil 命令来显示一个密钥表中的密钥列表。

"如何显示一个密钥表中的密钥列表 (授权对象)"

在一个主机上暂时为某项服务禁用鉴别 

本步骤是在一个主机上暂时为某项服务禁用鉴别的一个快捷方式,且不必拥有 kadmin 特权。在使用 ktutil 来从服务器的密钥表删除服务授权对象之前,请将原来的密钥表复制到一个临时位置。当您想要再次启用服务时,请将原来的密钥表复制回去。

"如何在一个主机上暂时为某项服务禁用鉴别"

如何添加某项服务授权对象到一个 keytab

  1. 请确保授权对象业已存在于 Kerberos 数据库。

    请参见"如何查看授权对象的列表",了解更多的信息。

  2. 在需要将一个授权对象添加到其密钥表的主机上,变为超级用户。

  3. 启动 kadmin 命令。


    # /usr/krb5/sbin/kadmin
    
  4. 通过使用 ktadd 命令,添加一个授权对象到一个密钥表。


    kadmin: ktadd [-k keytab] [-q] [授权对象 | -glob principal_exp]

    -k keytab

    指定密钥表文件。默认情况是,/etc/krb5/krb5.keytab 被使用。

    -q

    显示不太冗余的信息。 

    授权对象

    要添加到密钥表的授权对象。您可以添加下列服务授权对象: host, root, nfs, 和 ftp

    -glob principal_exp

    与授权对象表达式匹配的所有的授权对象均被添加到密钥表。用于授权对象表达式的规则与 kadminlist_principals 命令相同。

  5. 退出 kadmin 命令。


    kadmin: 退出
    

示例-添加某项服务授权对象到一个 keytab

下列示例添加 kadmin/adminkadmin/changepw 授权对象到一个主 KDC 的密钥表。针对该示例,密钥表文件必须是在 kdc.conf 文件中所指定的一个文件。


kdc1 # /usr/krb5/bin/kadmin.local 
kadmin.local:ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw
授权对象 kadmin/admin@ACME.COM 的条目, kvno 为 3, 加密类型为 DES-CBC-CRC
 被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。
授权对象 kadmin/changepw@ACME.COM 的条目,kvno 为 3, 加密类型为 DES-CBC-CRC 
 被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。 
kadmin.local: 退出

下列示例添加 denverhost授权对象到 denver 的密钥表文件,因而 denver 的网络服务可以通过 KDC 加以鉴别。


denver # /usr/krb5/bin/kadmin
kadmin: ktadd host/denver@acme.com@ACME.COM
kadmin: 授权对象 host/denver@acme.com@ACME.COM 的条目,
 kvno 为 2,
  加密类型为 DES-CBC-CRC 被添加到密钥表 WRFILE:/etc/krb5/krb5.keytab。kadmin: 退出

从一个密钥表如何去除某项服务授权对象

  1. 在带有某项必须从其密钥表去除的服务授权对象的主机上,变为超级用户。

  2. 启动 kadmin 命令。


    # /usr/krb5/bin/kadmin
    
  3. 可选。如要显示密钥表中的当前的授权对象的列表 (密钥), 请使用 ktutil 命令。

    请参见"如何显示一个密钥表中的密钥列表 (授权对象)",了解详细的操作指示。

  4. 通过使用 ktremove 命令,从一个密钥表去除一个授权对象。


    kadmin: ktremove [-k keytab] [-q] 授权对象 [kvno | 所有 | 旧的 ]

    -k keytab

    指定密钥表文件。默认情况是,/etc/krb5/krb5.keytab 被使用。

    -q

    显示不太冗余的信息。 

    授权对象

    要从密钥表去除的授权对象。 

    kvno

    为所指定的其 kvno (密钥版本号码) 与 kvno 相匹配的授权对象去除所有条目。

    all

    为所指定的授权对象去除所有条目。 

    old

    为所指定的授权对象去除所有条目,带有最高 kvno 的授权对象除外。 

  5. 退出 kadmin 命令。


    kadmin: 退出
    

示例-从一个密钥表去除某项服务授权对象

下列示例从 denver 的密钥表文件去除 denverhost 授权对象。


denver # /usr/krb5/bin/kadmin
kadmin: ktremove  host/denver.acme.com@ACME.COM
kadmin: 授权对象 host/denver.acme.com@ACME.COM 的条目,
 kvno 为 3
   已从密钥表去除 WRFILE:/etc/krb5/krb5.keytab。 
kadmin: 退出

如何显示一个密钥表中的密钥列表 (授权对象)

  1. 借助密钥表,在主机上变为超级用户。


    注意:

    尽管您可以创建其它用户所拥有的密钥表,但密钥表的默认的位置要求有 root 所有权。


  2. 启动 ktutil 命令。


    # /usr/krb5/bin/ktutil
    
  3. 通过使用 read_kt命令,将密钥表读入密钥列表缓冲区。


    ktutil: read_kt  keytab
    
  4. 通过使用 list 命令,显示密钥列表缓冲区。


    ktutil: 列表
    

    当前的密钥列表缓冲区显示出来。

  5. 退出 ktutil 命令。


    ktutil: 退出
    

示例-显示一个密钥表中的密钥列表 (授权对象)

下列示例显示 denver 主机上 /etc/krb5/krb5.keytab 文件中的密钥列表。


denver # /usr/krb5/bin/ktutil
    ktutil: read_kt /etc/krb5/krb5.keytab 
    ktutil: list
slot KVNO Principal ---- ---- ---------------------------------------   
   1    5 host/denver@ACME.COM
     ktutil: 退出

如何在一个主机上暂时为某项服务禁用鉴别

您有时可能需要在一个网络应用程序服务器上暂时为某项服务,诸如 rloginftp, 禁用鉴别机制。例如,在进行维护过程中,您可能想要阻止用户登录到一个系统。 ktutil 命令通过从服务器的密钥表去除服务授权对象,使您可以做到这一点,而无需 kadmin 特权。如要再次启用鉴别,所有需要您做的就是将您所保存的原来的密钥表复制回到其原来的位置。


注意:

大多数的服务默认设置为要求鉴别起作用。如果并非如此,则服务将依旧起作用,即使您为服务禁用鉴别。


  1. 借助密钥表,在主机上变为超级用户。


    注意:

    尽管您可以创建其它用户所拥有的密钥表,但密钥表的默认的位置要求有 root 所有权。


  2. 将当前的密钥表保存到一个临时文件。

  3. 启动 ktutil 命令。


    # /usr/krb5/bin/ktutil
    
  4. 通过使用 read_kt命令,将密钥表读入密钥列表缓冲区。


    ktutil: read_kt  keytab
    
  5. 通过使用 list 命令,显示密钥列表缓冲区。


    ktutil: 列表
    

    当前的密钥列表缓冲区显示出来。请注意您想禁用的服务的槽口号码。

  6. 如要暂时禁用一个主机的服务,请通过使用 delete_entry 命令,从密钥列表缓冲区去除具体服务授权对象。


    ktutil: delete_entry slot_number
    

    slot_number

    想要删除的服务授权对象的槽口号码,这是通过 list 命令加以显示的。

  7. 通过使用 write_kt命令,将密钥列表缓冲区写到密钥表。


    ktutil: write_kt  keytab
    
  8. 退出 ktutil 命令。


    ktutil: 退出
    
  9. 当您想要再次启用服务时,请将临时 (原来的) keytab 复制回到其原来的位置。

示例-在一个服务器上暂时禁用某项服务

下列示例暂时禁用denver 服务器上的 host 服务。如要在 denver 上恢复启用服务器服务,您要将 krb5.keytab.temp 文件复制到 /etc/krb5/krb5.keytab 文件。


denver # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp
denver # /usr/krb5/bin/ktutil
    ktutil:read_kt /etc/krb5/krb5.keytab
    ktutil:list
slot KVNO Principal ---- ---- ---------------------------------------
    1    8 root/denver@ACME.COM
    2    5 host/denver@ACME.COM 
    ktutil:delete_entry 2
    ktutil:list
slot KVNO Principal ---- ---- --------------------------------------
    1    8 root/denver@ACME.COM 
    ktutil:write_kt /etc/krb5/krb5.keytab 
    ktutil:退出