授权¶
身份服务支持组和角色的概念。用户属于组,而组具有角色列表。OpenStack 服务引用尝试访问该服务的用户的角色。OpenStack 策略执行中间件会考虑与每个资源关联的策略规则,然后是用户的组/角色以及关联性,以确定是否允许访问请求的资源。
策略执行中间件能够对 OpenStack 资源进行细粒度的访问控制。策略的行为在 策略 中进行了深入讨论。
建立正式的访问控制策略¶
在配置角色、组和用户之前,请记录 OpenStack 安装所需的访问控制策略。这些策略应与组织的任何法规或法律要求保持一致。对访问控制配置的未来修改应与正式策略保持一致。这些策略应包括创建、删除、禁用和启用帐户的条件和流程,以及向帐户分配权限的条件和流程。定期审查策略,并确保配置符合批准的策略。
服务授权¶
云管理员必须为每个服务定义具有 admin 角色的用户,如 OpenStack 管理员指南 中所述。此服务帐户为服务提供授权以验证用户身份。
计算和对象存储服务可以配置为使用身份服务存储身份验证信息。存储身份验证信息的其他选项包括使用“tempAuth”文件,但是不应在生产环境中部署此选项,因为密码将以明文形式显示。
身份服务支持 TLS 的客户端身份验证,可以启用该身份验证。TLS 客户端身份验证提供额外的身份验证因素,除了用户名和密码之外,从而提高了用户身份的可靠性。它降低了在用户名和密码可能被泄露时发生未经授权访问的风险。但是,向用户颁发证书会产生额外的管理开销和成本,这在每次部署中可能都不可行。
注意
我们建议您使用 TLS 客户端身份验证来验证服务与身份服务的身份验证。
云管理员应保护敏感的配置文件,防止未经授权的修改。这可以通过强制访问控制框架(如 SELinux)来实现,包括 /etc/keystone/keystone.conf 和 X.509 证书。
使用 TLS 进行客户端身份验证需要向服务颁发证书。这些证书可以由外部或内部证书颁发机构签名。OpenStack 服务默认情况下会检查证书签名的有效性,并与受信任的 CA 进行比较,如果签名无效或 CA 不受信任,则连接将失败。云部署者可以使用自签名证书。在这种情况下,必须禁用有效性检查,或者应将证书标记为受信任。要禁用自签名证书的验证,请在 /etc/nova/api.paste.ini 文件中的 [filter:authtoken] 部分中设置 insecure=False。此设置还会禁用其他组件的证书。
管理用户¶
我们建议管理用户使用身份服务和支持双因素身份验证的外部身份验证服务(例如证书)进行身份验证。这降低了密码可能被泄露的风险。此建议符合 NIST 800-53 IA-2(1) 指南,即对特权帐户的网络访问使用多因素身份验证。
最终用户¶
身份服务可以直接提供最终用户身份验证,或者可以配置为使用外部身份验证方法,以符合组织的安全性策略和要求。