4.8. 使用 LDAP 进行身份验证
您可以使用外部身份提供程序(IdP)向 OpenStack 服务供应商(SP)进行身份验证。在本例中,Service Providers 是 OpenStack 云提供的服务。
对于身份验证和授权服务,OpenStack 身份模型将外部身份验证数据库视为单独的 keystone 域。每个外部身份验证机制都与 keystone 域关联,支持多个共存域。您可以使用角色为外部域中的用户授予对云中资源的访问权限;这种方法也适用于跨域多项目部署。这种方法还对每个组件策略也有影响,因为并非所有 OpenStack 角色都可以在策略中映射到外部验证的用户。例如,如果外部身份验证数据库中的用户需要管理访问权限,则通常还需要额外的配置,并且需要与 admin 域中的 admin 用户类似。
外部身份验证提供了一种方式,可以使用现有凭证来访问使用一组凭证在多个授权云中提供的多个端点(如服务器、卷和数据库)的云资源,而无需多次置备额外的身份或登录。凭据由用户的身份提供程序维护。
身份服务可以将用户凭据存储在 SQL 数据库中,也可以使用与 LDAP 兼容的目录服务器。身份数据库可能独立于其他 OpenStack 服务使用的数据库,以减少存储的凭据的风险。
当您使用用户名和密码进行身份验证时,Identity 不会强制对密码强度、过期或身份验证尝试失败的策略。希望强制实施更强大的密码策略的组织应考虑使用身份扩展或外部身份验证服务。
LDAP 简化了身份验证集成到机构的现有目录服务和用户帐户管理流程中的集成。OpenStack 中的身份验证和授权策略可能会被委派给其他服务。典型的用例是寻求部署私有云的组织,并且已经在 LDAP 系统中拥有员工和数据库用户。使用这个作为身份验证授权,对 Identity 服务的请求会被委派给 LDAP 系统,然后根据其策略授权或拒绝。身份验证成功后,Identity 服务会生成用于访问授权服务的令牌。
请注意,如果 LDAP 系统为用户定义了属性,如 admin、finance 和 HR 等,则这些属性必须映射到身份内的角色和组中,以供各种 OpenStack 服务使用。/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf 文件将 LDAP 属性映射到 Identity 属性。