金鱼哥RHCA回忆录:CL210集成身份管理--管理集成的IDM配置

举报
金鱼哥 发表于 2022/07/18 09:21:56 2022/07/18
【摘要】 第三章 集成身份管理--管理集成的IDM配置

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜身份服务架构

OpenStack身份服务(代码名为Keyston)使用内部服务功能提供身份验证、角色基础授权、策略管理和令牌处理,这些内部服务功能分类为身份、策略、令牌、资源、角色分配和目录。身份服务APl可用于由公共和内部流量划分的可信任端点。多个控制节点使用具有虚拟IP (VIP)的Pacemaker来提供对API的冗余访问。内部服务功能管理身份服务的不同方面:


📑身份

身份包含身份验证和授权功能。用户是使用其他OpenStack服务的人、系统或服务的数字表示。用户在向OpenStack组件请求服务之前要进行身份验证。用户必须被分配一个角色来参与项目。用户可以使用在Identity Service v3中引入的组来管理,组可以作为辅助角色,并像个人用户一样附加到项目中。


项目(以前称为租户)是拥有的资源的集合,如网络、镜像、服务器和安全组。这些是根据组织的发展需要来构建的。项目可以代表客户、帐户或任何组织单元。使用Identity Service v3,项目可以包含子项目,子项目从父项目继承项目角色分配和配额。


📑资源

资源功能管理域,域是一个Identity Service v3实体,用于创建分离的用户、组和项目集合。域允许多个组织共享一个OpenStack安装。在一个域中创建的用户、项目和资源不能转移到另一个域中;按照设计,它们必须被重新创建。新安装的OpenStack会创建一个名为default的域。在Identity Service v2中,多个域不能被识别,所有的活动都使用默认域。


📑令牌

令牌函数创建、管理和验证有时间限制的令牌,用户将这些令牌传递给其他OpenStack组件来请求服务。令牌是用户访问权限的结构化枚举,旨在简化对每个单独的OpenStack服务请求进行验证以获得足够的用户特权的要求。令牌协议自早期的OpenStack时代以来一直在发展,本章稍后将对其进行讨论。


📑策略

策略函数提供基于规则的授权引擎和关联的规则管理接口。策略规则定义角色的功能。默认角色包括admin、member、swiftoperator和heat_stack user。您可以构建策略来创建自定义角色。


📑角色分配

角色分配功能用于将用户分配给项目。用户不属于项目;相反,他们在项目中有自己的角色。用户可以为同一个项目分配多个角色,也可以在多个项目中分配不同的角色。

角色定义了一组用户特权,用于在OpenStack服务上执行由策略定义的特定操作。最常见的角色是_member_,它可以在项目中执行所有常规活动,以及admin,它添加额外的权限来创建用户、项目和其他受限制的资源对象。


📑目录

目录函数用端点的形式,存储关于每个其他OpenStack服务组件的连接信息。目录为每个服务包含多个端点条目,以便基于流量管理和安全原因,可以通过公共、内部和管理任务分隔服务流量。由于OpenStack服务可能冗余地安装在多个控制和计算节点上,因此目录包含每个节点的端点。当用户进行身份验证并获得访问服务时使用的令牌时,同时会为他们提供所请求服务的当前URL。

注意:Red Hat OpenStack平台同时支持Identity Service v2和v3。Identity v3需要使用新的身份验证环境变量OS_IDENTITY_API_VERSION和OS_DOMAIN_NAME,并更改新版本端点的OS_AUTH_URL。本红帽OpenStack管理Il课程仅使用Identity Service v3。


每个列出的身份服务功能支持多种后端选择,通过插件定义,可以是以下类型之一(不是所有的功能都支持所有后端类型):

键值存储:使用主键查找的基于文件的或内存中的字典。

Memcached:分布内存共享缓存结构。

结构化查询语言:OpenStack使用SQLAlchemy作为大多数组件的默认持久数据存储。SQLAlchemy是一个基于python的SQL工具包。

可插拔身份验证模块:使用Linux PAM身份验证服务。

轻量级目录访问协议:使用LDAP协议连接到现有的后端目录,例如IdM或AD,用于用户身份验证和角色信息。


📜身份验证方法

身份服务的一个关键功能是对用户和项目凭据进行身份验证。身份验证的目的是验证每个用户的身份。在身份服务确认了用户的身份后,它可以继续授予用户授权并访问Red Hat OpenStack平台环境。

红帽OpenStack平台支持各种身份验证方法。最基本的身份验证方法根据存储在本地数据库中的帐户信息验证用户名和密码。在大型企业环境中,Red Hat OpenStack平台可以根据外部身份验证后端(如Active Directory (AD)、Red Hat IdM或通用的LDAP服务器)验证用户凭证。


📜安装红帽IDM

Red Hat IdM将LDAP、Kerberos、DNS和PKI协议与一个丰富的管理框架结合在一起,为企业环境中的Linux客户端提供身份服务。IdM是Red Hat对上游开放源码FreeIPA项目进行调优并得到支持的版本,由流行的Linux管理组件构建,包括PAM、BIND DNS、MIT Kerberos和Dogtag PKI,这些组件与核心389 LDAP目录服务器集成在一起。

因为ldM包含在标准的Red Hat Enterprise Linux订阅中,所以使用它需要最小的配置。在创建IdM实例之前,至少需要安装ipaserver包。根据您的体系结构,如果希望IdM也管理DNS服务器,则必须安装两个额外的包来设置DNS。在这两种情况下,您都可以使用yum命令来安装所有必需的包。这个示例展示了ldM包和其他DNS包的安装:

在这里插入图片描述

ip-server包中安装了大量的依赖项。其中包括用于LDAP服务的389-ds-base和用于Kerberos服务的krb5-server,以及IdM工具。


📑ldM安装脚本

在安装了所有必需的包之后,您可以创建一个新的IdM实例。运行ipa-server-install命令来创建这个实例。这将交互式地启动脚本。系统会提示您输入帮助您设置基本IdM实例的信息。这有助于快速设置基本ldM实例,而不使用更高级的特性,如DNS管理或CA认证管理。

设置脚本创建一个ldM域的新实例,并确定所需的所有服务和策略:

• 389 LDAP Directory Server instance

• Kerberos key distribution center (KOC)

• Active Directory WinSync plug-in

• Certificate Authority (CA)

• Network time protocol daemon (ntpd)

• Apache (httpd)

• SE Linux targeted policy

• Domain Name Service (DNS). (This is optional.)

根据您对ldM域的需求,设置过程可以是最小的,您可以提供少量信息,也可以是非常具体的,使用IdM服务的各个部分的用户定义设置。如果必须创建定制的IdM环境,可以将这些配置设置作为参数传递给ipa -server-install脚本。使用这些的理由可以实现一个通用的配置,可以很容易地用脚本编写。通过这些非交互设置,您还可以设置在交互安装模式期间未使用的其他ldM设置。要访问可用选项的完整列表,请参阅ipa-server-install手册页。


📜红帽IDM集成

要使用Red Hat IdM在Red Hat OpenStack平台环境中认证用户凭证,您必须确认Red Hat IdM服务器和Red Hat OpenStack平台环境的整合。ldM服务器需要一个帐户,该帐户允许从Red Hat OpenStack平台环境中运行的身份服务进行LDAP查找。之间的通信这两个环境还需要使ldM服务器的CA证书对身份服务可用。最后,您需要为多域支持和到ldM后端的LDAP通信配置身份服务。


📑配置LDAP查找帐户

要使用Red Hat IdM后端执行用户凭据身份验证,身份服务需要ldM服务器上的LDAP查找帐户。作为管理用户运行ipa user-add命令,以在IdM服务器上创建LDAP查找帐户。使用ipa group-add-member命令将LDAP查找帐户添加到适当的ldM用户组

下面的示例展示了如何创建一个名为ldaplookup的帐户,以执行LDAP查找。该帐户的密码设置为redhat。该示例还展示了如何创建一个openstack用户组,并将ldaplookup用户添加到该组中。

在这里插入图片描述


📑安装ldM CA证书

为了让身份服务使用LDAP在ldM服务器上执行LDAP查找,它需要安装IdM服务器的CA证书。默认情况下,此CA证书在/etc/ipa/ca.crt的IdM服务器上。要使该证书对身份服务可用,请将其安装到身份服务容器上的/etc/ssl/certs目录。将证书转换为PEM格式,然后将PEM版本安装到身份服务容器上的/etc/pki/ca-trust/source/anchors目录中。

对于使用容器身份服务的环境,请将证书安装到控制节点上服务容器下的适当配置目录中。将CA证书复制到控制节点上的/var/lib/config-data/puppet-generated/keystone/etc/ssl/certs目录。同样,将CA证书的PEM版本复制到/var/lib/config-data/puppet-generated/keystone/etc/pki/ca-trust/source/ anchors目录中。如果这些证书文件不存在,则为它们创建父目录。将目录和证书文件的所有权设置为42425 UID和GID,以确保keystone用户可以访问这些文件。


📑配置horizon仪表板

默认情况下,身份服务使用一个名为default的域。与外部身份验证后端集成需要为每个后端创建单独的身份域,因此,要与IdM后端集成,必须首先在Horizon仪表板中启用多域支持,以便用户可以使用特定域登录。

要启用多域支持,请在/var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings配置文件中设置以下参数。

OPENSTACK_API_VERSIONS = {
  'identity': 3,
}

# Set this to True if running on multi-domain model. When this is enabled, it
# will require user to enter the Domain name in addition to username for login.
#OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

# Overrides the default domain used when running on single-domain model
# with Keystone V3. All entities will be created in the default domain.
#OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'

在所有Horizon配置更改就绪后,使用docker horizon restart命令重新启动容器并应用这些更改。


📑配置身份服务

在/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf的身份部分设置以下参数以在仪表板中启用多域支持。

# A subset (or all) of domains can have their own identity driver, each with
# their own partial configuration options, stored in either the resource
# backend or in a file in a domain configuration directory (depending on the
# setting of `[identity] domain_configurations_from_database`). Only values
# specific to the domain need to be specified in this manner. This feature is
# disabled by default, but may be enabled by default in a future release; set
# to true to enable. (boolean value)
#domain_specific_drivers_enabled = false
domain_specific_drivers_enabled=True

# Absolute path where keystone should locate domain-specific `[identity]`
# configuration files. This option has no effect unless `[identity]
# domain_specific_drivers_enabled` is set to true. There is typically no reason
# to change this value. (string value)
#domain_config_dir = /etc/keystone/domains
domain_config_dir=/etc/keystone/domains

在同一个文件中,在赋值部分设置以下参数。

[identity_mapping]
# From keystone
#
# Entry point for the identity mapping backend driver in the
# `keystone.identity.id_mapping` namespace. Keystone only provides a `sql`
# driver, so there is no reason to change this unless you are providing a
# custom entry point. (string value)
#driver = sql

在身份服务配置中启用了多域支持后,现在可以配置身份服务来对ldM后端执行LDAP查找。此配置保存在控制节点上的/var/lib/config-data/puppet-generated/keystone/etc/keystone/domains目录中。在此目录中,每个外部身份验证后端都需要一个单独的域身份验证配置文件。这些域身份验证配置文件的文件名必须符合keystone.DOMAIN.conf格式,其中域是域的名称。

[root@controller0 ~]# ll /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains
total 4
-rw-r--r--. 1 root root 872 Oct 23  2018 keystone.Example.conf

下面的示例演示域配置文件keystone.idm.conf,它允许身份服务使用前面示例中安装的ldaplookup IdM用户帐户和IdM服务器CA证书。

[ldap]
url = ldaps://idm.lab.example.com
user= uid=ldaplookup,cn=users,cn=accounts,dc=lab,dc=example,dc=net
user_filter =(memberOf=cn=openstack,cn=groups,cn=accounts,dc=lab,dc=example,dc=net)
password=redhat
user_tree _dn = cn=users,cn=accounts,dc=lab,dc=example,dc=net
user_objectclass = inetuser
user_id_attribute = uid
user_name_attribute = uid
user_mail_attribute = mail
user_pass_attribute =
user_allow_create = False
user_allow_update = False
user_allow_delete = False
group_objectclass = groupofnames
group_tree_dn = cn=groups,cn=accounts,dc=lab,dc=example,dc=net
group_id_attribute = en
group_name_attribute = en
group_allow_create = False
group_allow_update = False
group_allow_delete = False
use_tls = False
query_scope = sub
chase_referrals = false
tls_cacertfile = /etc/ssl/certs/ca.crt

[identity]
driver= ldap

为域身份验证配置文件创建父目录,即/var/lib/ config-data/puppet-generated/keystone/etc/keystone/domains(如果还不存在的话)。将目录及其内容的所有权设置为42425 UID和GID以确保keystone用户可以访问它们。

在所有Horizon配置更改就绪后,使用docker horizon restart命令重新启动容器并应用这些更改。


📑创建身份域

由于与外部身份验证后端集成需要为每个后端创建单独的身份域,因此必须为新集成的Red Hat IdM后端创建一个新域。使用openstack域创建命令作为管理用户创建域。下面的示例创建了一个名为idm的新域。

在这里插入图片描述

要启用OpenStack管理用户对管理新域的访问,请授予它新域的管理角色。
在这里插入图片描述

使用为ldM后端创建的新域,使用openstack user list命令搜索新域中的用户列表,并验证集成。该命令返回IdM用户列表。
在这里插入图片描述

有了ldM集成,用户可以使用他们的ldM凭据登录到仪表板。在指示板和身份中启用多域支持时,除了用户名和密码外,指示板还要求用户指定域和项目。因此,要使IdM用户能够访问仪表板,必须首先使用openstack role add命令为他们授予至少一个项目的角色。下面的示例演示如何为IdM域中的research项目授予IdM idm_members用户组_member_ 角色。

[student@workstation -]$ openstack role add \
--project research \
--project-domain idm \
--group developer2 \
--group-domain idm \
_member_

📜使用TRIPLEO配置IDM集成

对于Red Hat OpenStack平台环境的初始部署,管理员可以配置TripleO部署和管理工具,以包括IdM集成的一些配置。这些配置包括启用对LDAP后端的域支持和定义LDAP后端。

在TripleO环境文件中启用LDAP,将KeystoneLDAPDomainEnable设置为true。

KeystoneLDAPDomainEnable: true

锁定KeystoneLDAPDomainEnable标志将自动为身份配置组设置domain_specific_drivers_enabled选项。默认情况下,此配置还配置用于存储域配置文件的/etc/keystone/domains目录。


📑定义LDAP后端

KeystoneLDAPBackendConfigs参数定义了LDAP后端配置TripleO编排模板。这些定义使用各种属性为LDAP后端配置指定选项。下面的示例展示了一个环境文件,其中的LDAP配置与之前为身份域idm所显示的配置相匹配。

parameter_defaults:
  KeystoneLDAPDomainEnable: true
  KeystoneLDAPBackendConfigs:
    idm:
      url: ldaps://idm.lab.example.com
      user: uid=ldaplookup,cn=users,cn=accounts,dc=lab,dc=example,dc=net
      user filter:
      "(memberOf=cn=openstack,cn=groups,cn=accounts,dc=lab,dc=example,dc=net)"
      password: redhat
      user_tree_dn: cn=users,cn=accounts,dc=lab,dc=example,dc=net
      user_objectclass: inetUser
      user_id_attribute: uid
      user_name_attribute: uid
      user_mail_attribute: mail
      user_allow_create: false
      user_allow—update: false
      user_allow_delete: false
      group_objectclass = groupofnames
      group_tree_dn = cn=groups,cn=accounts,dc=lab,dc=example,dc=net
      group_id_attribute = en
      group_name_attribute = en
      group_allow_create = False
      group_allow_update = False
      group—allow_delete = False
      query_scope = sub
      chase_referrals = false
      tls_cacertfile: /etc/ssl/certs/ca.crt

📜课本练习

  • 在域中创建项目。

  • 为域项目中的IdM用户分配角色。

  • 使用Red Hat ldM后端对仪表板进行身份验证。

[student@workstation ~]$ lab identity-idm setup
Setting up environment for the exercise:

 • Verifying user: developer2..................................  SUCCESS
 • Verifying user: developer3..................................  SUCCESS
 • Verifying user: architect2..................................  SUCCESS

教室环境体现了红帽OpenStack平台(RHOSP)的红帽IdM身份服务。它使用Red Hat IdM作为外部身份验证后端域的例子。


📑1. 列出示例域中的用户,以验证与ldM服务器的集成。查看实验室的例子列表、网域用户。

[student@workstation ~]$ source admin-rc
[student@workstation ~]$ openstack user list --domain Example | egrep -E 'architect2|developer2|developer3'
| fa2c40ec562ff5f7561d9c6707d0463a0201822b4fe2ab5ddb7bb1292ccec0e3 | architect2 |
| a8a02ef35b8acf43ac3203e862cd8666fb35423352e60e8780a11f2e99a573f2 | developer2 |
| 0a7bd5cfc1fbf3e247c1678068ea9b832ab79db03533ab4abc266564f6785f17 | developer3 |

📑2. 在示例域中创建一个名为research的项目。

[student@workstation ~]$ openstack project create research --domain Example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | 8dd2d316acc74f54b890bae519ea75b9 |
| enabled     | True                             |
| id          | 92b3045118e040a981d85f5697047bbc |
| is_domain   | False                            |
| name        | research                         |
| parent_id   | 8dd2d316acc74f54b890bae519ea75b9 |
| tags        | []                               |
+-------------+----------------------------------+

📑3.将research项目的_member_ 角色分配给ldM research-members组。

[student@workstation ~]$ openstack role add --project research --project-domain Example --group research-members --group-domain Example  _member_

📑4. 将research项目的admin角色分配给ldM research-admins组。

[student@workstation ~]$ openstack role add --project research --project-domain Example --group research-admins --group-domain Example  admin

📑5. 登录到仪表板以验证分配给developer2 IdM用户的角色。

5.1 在工作站上,启动Firefox web浏览器并通过http://dashboard.overcloud.example.com/连接到仪表板。

5.2 输入Example作为域,输入developer2作为用户名,输入redhat作为要验证的密码。

5.3 登录到仪表板后,可以看到顶部导航菜单显示了Project和ldentity选项卡。

5.4 退出仪表板。


📑6. 来验证分配给developer3 IdM用户的角色。

6.1 在工作站上,启动Firefox web浏览器并通过http://dashboard.overcloud.example.com/连接到仪表板。

6.2 输入Example作为域,输入developer3作为用户名,输入redhat作为要验证的密码。

6.3 登录到仪表板后,观察顶部导航菜单显示项目和标识选项卡。

6.4 退出仪表板


📑7. 来验证分配给architect2 IdM用户的角色。

7.1 在工作站上,启动Firefox web浏览器并通过http://dashboard.overcloud.example.com/连接到仪表板。

7.2 输入Example作为域,输入architect2作为用户名,输入redhat作为要验证的密码。

7.3登录到仪表板后,观察顶部导航菜单显示项目、Admin和Identity选项卡,表明该用户被分配了Admin角色。

7.4 退出仪表板


📑清除练习

[student@workstation ~]$ lab identity-idm cleanup

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第三章 集成身份管理–管理集成的IDM配置 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。