下面一节展示 SEAM 文档从头至尾所使用的术语及其定义。为了能够领会许多讨论,必需理解这些术语。
下文所讨论的术语,是理解鉴别步骤所必需的。程序员和系统管理员应当熟悉这些术语。
客户机是运行在一个用户的工作站上的软件。运行在客户机上的 SEAM 软件在该步骤过程中发出许多请求,而将该软件的动作从用户区分开来很重要。
术语服务器和服务经常互相换用。为了将其分清,术语服务器 被用来定义 SEAM 软件运行时所在的物理系统。术语服务对应于服务器上所支持的一个具体功能 (例如, ftp 或 nfs)。文档经常将服务器作为一个服务的一部分而加以提及,但是使用这一定义模糊了该术语的意义; 因此,服务器是指物理系统而服务是指软件。
SEAM 产品包括三个类型的密钥。其中一个是私有密钥。该密钥被给予每个用户授权对象,且只为授权对象的用户以及 KDC 所知晓。对于用户授权对象,密钥是基于用户的口令的。对于服务器和服务,密钥则是服务密钥。该密钥所服务的目标与私有密钥相同,但是为服务器和服务所用。第三个类型的密钥是一个对话密钥。这是鉴别服务或票券授予服务所生成的密钥。对话密钥的生成目的是为了在一个客户机和一个服务之间提供安全事务。
票券是一种信息包,用于安全地将用户的身份传递到一个服务器或服务。一个票券只在一个具体服务器上对单独一个客户机和一个具体服务有效。它包含服务的授权对象名称,用户的授权对象名称,用户主机的 IP 地址,一个时戳,以及一个用来定义票券期限的值。票券是借助一个随机对话密钥加以创建的,为客户机和服务所用。一旦一个票券得到创建,其就可以得到重新利用,直到该票券到期。
资格是一种信息包,其中包括一个票券和一个相匹配的对话密钥。用于鉴别一个授权对象的身份。资格经常使用一个私有密钥或服务密钥进行加密,而这取决于为该资格解密的主体。
鉴别符是另一类型的信息。当与一个票券一同使用时,鉴别符就可以用来鉴别用户授权对象。一个鉴别符包括用户的授权对象名称,用户主机的 IP 地址,以及一个时戳。不同于一个票券,一个鉴别符只能使用一次,通常是在请求访问一个服务时。鉴别符是借助针对该客户机和该服务器的对话密钥而进行过加密的。
票券拥有对其如何使用进行管辖的属性。这些属性是在创建之初赋予票券的,但日后您可以修改票券的属性。 (例如,可以将一个票券从 可转发 更改为 已转发)。您可以借助 klist 命令来查看票券属性 (请参见"如何查看票券")。
票券可以通过下列术语中的一个或多个加以描述:
可转发票券可以被从一个主机发送到另一主机,而客户机不必重新进行自我鉴别。例如,如果用户 david 在 jennifer 的机器上时获得了一个可转发票券,他就可以登录到他自己的机器,而不必获得一个新的票券 (为了再次鉴别其自己)。 (请参见"示例 - 创建一个票券",了解可转发票券的一个示例。) 下面是对一个可转发票券和一个 可代理 票券进行比较。
初始 票券是直接发放的一种票券,即并非基于一个具有票券授予权的票券。某些服务,诸如更改口令的应用程序,可能会要求票券标记为 初始,以便确信客户机可以证明其知晓其密钥 - 因为一个 初始 票券指示客户机最近业已进行过自身鉴别 (而不是依赖于一个具有票券授予权的票券,而这有可能业已存在很长一段时间了)。
invalid 票券是一个尚未可用的超期票券。 (请参见超期,在下文。) 其将遭到应用程序服务器的拒绝,直到得到证实。如要得到证实,其就必须在其启动时间已过之后,通过一个 TGS 请求,由客户机提交给 KDC, 其中要设定 VALIDATE 标志。
超期 票券是一种票券,其在创建之后,直到某个指定的时间才变为有效。此类票券很有用,例如,用于打算在深夜运行的批处理任务,因为该票券如果被偷的话,只有批处理任务运行才可以使用。当一个 超期 票券被发放时,其是作为 无效 发放的,且保持该状态,直到其启动时间已过,且客户机请求由 KDC 加以证实。(请参见无效,在上文。) 超期 票券通常保持有效,一直到具有票券授予权的票券的到期时间; 然而,如果其被标记为 可续延,其期限通常设定为等于具有票券授予权的票券的完整期限的时长。请参见可续延,在下文。
有时可能有必要让一个授权对象允许一个服务来代表其进行一个操作。 (一个示例可能会是,当一个授权对象请求一个服务在某一第三个主机上运行一个打印任务时。) 服务必须能够具有客户机的身份,但只需为该单一操作这样做。在这种情形下,服务器称作作为客户机的代理行事。代理的授权对象名称必须在票券被创建时得到指定。
可代理 票券类似于 可转发 票券,只不过只对单独一个操作有效,而 可转发 票券授予服务对客户机身份的完全使用权。因而可以将 可转发 票券看作是一种超级代理。
因为拥有带有很长期限的票券是一个安全隐患,票券可以被指定为 可续延。 可续延 票券拥有两个到期时间: 票券的当前实例到期的时间,以及任意票券的最长期限。如果一个客户机想要继续使用一个票券,则要在第一次到期发生之前对其进行续延。例如,一个票券的有效期可以是一小时,而所有票券拥有一个最长为十小时的期限。如果持有票券的客户机想要将其保留,持续一个小时以上,则其必须在这一小时内进行续延。当一个票券到达最长票券期限时 (10 小时),其就自动到期且无法加以续延。
如要了解有关如何查看票券来查看其属性的信息,请参见"如何查看票券"。
每当一个授权对象获得一个票券,其中包括一个具有票券授予权的票券,票券的期限就被设定为下列期限值中的最小者:
在 Kerberos 数据库中为提供票券的服务授权对象指定的最长期限值。(如果是 kinit 的情形,则其服务授权对象为 krbtgt/realm)
在 Kerberos 数据库中为请求票券的用户授权对象指定的最长期限值。
图形 7-1 显示一个 TGT 的期限是如何确定的,且说明四个期限值是从何处来的。尽管 图形 7-1 显示一个 TGT 的期限是如何确定的,任何授权对象获得一个票券时的基本情况都是一样的。唯一的区别就是, kinit 不提供一个期限值,而提供票券的服务授权对象提供一个最长期限值 (而不是 krbtgt/realm 授权对象)。
可续延票券期限也是由四个值中的最小者确定的,但是使用的却是可续延期限值:
通过 kinit 的 -r 选项指定的可续延期限值,如果 kinit 被用来获得或续延票券的话
kdc.conf 文件中所指定的最长可续延期限值 (max_renewable_life)
Kerberos 数据库中为提供票券的服务授权对象指定的最长期限可续延值 (如果是 kinit 的情形,则服务授权对象为 krbtgt/realm)
Kerberos 数据库中为请求票券的用户授权对象指定的最长期限可续延值
每个票券是通过一个授权对象名称加以识别的。授权对象名称可以识别一个用户或一个服务。下面是多个授权对象名称的示例。
表 7-4 授权对象名称的示例
授权对象名称 |
描述 |
---|---|
root/boston.acme.com@ACME.COM |
NFS 客户机上与 root 帐户相关联的授权对象。这称为 root 授权对象,且是经过鉴别的 NFS 成功进行装配所必需的。 |
host/boston.acme.com@ACME.COM |
Kerberized 应用程序 (例如 klist 和 kprop) 和服务 (诸如 ftp 和 telnet) 所使用的授权对象。这称为 主机 或服务授权对象。 |
username@ACME.COM |
用于用户的授权对象 |
username/admin@ACME.COM |
可以用于管理 KDC 数据库的 admin 授权对象 |
ftp/boston.acme.com@ACME.COM |
ftp 服务所使用的授权对象。这可以用于替换 主机 授权对象。 |
K/M@ACME.COM |
主密钥名称授权对象。每个主 KDC 均有其中一个与之相关联。 |
kadmin/history@ACME.COM |
一种授权对象,包含一个用于为其它的授权对象保留口令历史记录的密钥。每个主 KDC 均有其中一个与之相对应。 |
kadmin/kdc1.acme.com@ACME.COM |
用于主 KDC 服务器的授权对象,允许使用 kadmind 来访问 KDC |
changepw/kdc1.acme.com@ACME.COM |
用于主 KDC 服务器的授权对象,允许在更改口令时访问 KDC |
krbtgt/ACME.COM@ACME.COM |
该授权对象用于生成一个具有票券授予权的票券时。 |