金鱼哥RHCA回忆录:DO447管理清单和凭据--为访问清单主机创建机器凭据

举报
金鱼哥 发表于 2022/06/24 11:53:22 2022/06/24
【摘要】 第八章 管理清单和凭据--为访问清单主机创建机器凭据

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

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


📜官网:

https://docs.ansible.com/ansible-tower/3.8.1/html_zh/userguide/credentials.html


📜8.2.1 凭证

凭证是Ansible Tower对象,用于对远程系统进行身份验证。它们可能提供秘密,如密码和SSH密钥,或成功访问或使用远程资源所需的其他支持信息。

Ansible Tower负责维护这些凭证对象中的秘密的安全存储。证书密码和密钥在保存到Tower数据库之前是加密的,并且不能从Tower用户界面以明文方式检索。尽管可以为用户和团队分配使用凭证的特权,但这些秘密不会向他们公开。这意味着当用户更改团队或离开组织时,不需要重新对凭据和系统进行密匙。当Tower需要凭据时,它在内部解密数据,并直接将其传递给SSH或其他程序。

📑重要:

一旦敏感的身份验证数据被输入到一个凭证并被加密,它将不能再通过Tower的web界面以解密的形式被检索。


📜8.2.2 凭证类型

Ansible Tower可以管理许多不同类型的凭据。其中包括:

  • Machine凭据用于对清单主机的剧本登录和特权升级进行身份验证。

  • 使用Ansible网络模块管理网络设备时,需要使用Network凭据

  • 源代码控制(SCM)凭据 被项目用来从远程版本控制系统(如Git、Subversion或Mercurial/)复制和更新Ansible项目材料

  • Vault凭据用于解密存储在Ansible Vault保护的项目文件中的敏感信息。

  • 几种类型的inventory凭证可用来从Ansible Tower的内置动态清单来源更新动态清单信息。每个有问题的清单源都有单独的凭据类型:Amazon Web Services、VMware vCenter、Red Hat Satellite 6、Red Hat CloudForms、谷歌计算引擎、Microsoft Azure资源管理器、OpenStack等等。

  • Tower管理员还可以创建自定义凭据类型,这些类型可以像内置凭据类型一样使用,使用YAML定义指定。关于自定义证书类型的更多信息,请参阅Ansible Tower用户指南。

本节重点介绍如何设置机器凭据,以提供适当的登录和权限升级信息,以便在清单中的主机上使用。其他一些类型的凭证将在本课程的其他地方进行更详细的讨论。


📜8.2.3 创建机器凭证

下面部分,使用官网解释,也可以自行参照课本的说明 ^_^

机器凭证使 Tower 可以在您管理的主机上调用 Ansible。就像在命令行上使用 Ansible 一样,您可以指定 SSH 用户名,提供可选的密码、SSH 密钥、密钥密码,甚至可以让 Tower 在部署时提示用户输入密码。它们为 playbook 定义 ssh 和用户级权限升级访问,并在提交作业以在远程主机上运行 playbook 时使用。网络连接(httpapi、netconf 和 network_cli)使用 Machine 作为凭证类型。

机器/SSH 凭证不使用环境变量,而是通过 ansible -u 标志传递用户名,并在底层 SSH 客户端提示时以互动方式写入 SSH 密码。
在这里插入图片描述

📑机器凭证有几个可以配置的属性:

  • Username:用于 SSH 验证的用户名。

  • Password:用于 SSH 验证的实际密码。如果输入此密码,则它会以加密的形式加密存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。

  • SSH Private Key:为机器凭证复制或拖放 SSH 私钥。

  • Private Key Passphrase:如果使用的 SSH 私钥受密码保护,则可以为私钥配置密钥密码。如果输入此密码,则它会以加密的形式加密存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。

  • Privilege Escalation Method:指定分配给特定用户的升级特权类型。这等同于指定 --become-method=BECOME_METHOD 参数,其中 BECOME_METHOD 可以是下面描述的任一典型方法,也可以是您编写的自定义方法。输入方法的名称后,相应的名称会自动填充。
    在这里插入图片描述

  • 空选择:如果任务/play 的 become 设置为 yes,且与空选择搭配使用,则它将默认为 sudo

  • sudo:使用超级用户(root 用户)权限执行单次命令

  • su:切换到超级用户(root 用户)帐户(或其他用户帐户)

  • pbrun:请求在受控帐户中运行应用程序或命令,并为高级 root 权限委托和键盘记录提供条件

  • pfexec:执行带有预定义的进程属性的命令,如特定的用户或组群 ID

  • dzdo:改进的 sudo 版本,它使用 Centrify 的 Active Directory 服务中的 RBAC 信息(请参阅 Centrify 的 site on DZDO

  • pmrun:请求在受控帐户中运行应用程序(请参阅 Privilege Manager for Unix 6.0

  • runas:允许您以当前用户身份运行

  • enable:切换到网络设备上的升级权限

  • doas: Allows your remote/login user to execute commands as another user via the doas (“Do as user”) utility

  • ksu:允许您的远程/登录用户以另一个用户的身份通过 Kerberos 访问执行命令

  • machinectl:允许您通过 systemd 机器管理器管理容器

  • sesu:允许您的远程/登录用户以另一个用户的身份通过 CA 特权访问管理器执行命令

注解

Custom become plugins are available only starting with Ansible 2.8. For more detail on this concept, refer to Understanding Privilege Escalation https://docs.ansible.com/ansible/latest/user_guide/become.html and the list of become plugins https://docs.ansible.com/ansible/latest/plugins/become.html#plugin-list.
  • 只有在选择了权限升级选项时,才会看到 Privilege Escalation Username 字段。输入在远程系统上用于升级权限的用户名。
  • Privilege Escalation Password:只有在选择了权限升级选项时才会看到该字段。请输入在远程系统上通过所选权限升级类型验证用户的实际密码。如果输入此密码,则它会以加密的形式存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。

注解

sudo 密码必须与 SSH 密码或 SSH 私钥结合使用,因为 Tower 必须首先与主机建立经过身份验证的 SSH 连接,然后才能调用 sudo 以更改为 sudo 用户。

警告

Scheduled Jobs 中使用的凭证不能配置为“Prompt on launch”。


📜8.2.4 编辑机器凭证

一旦创建了Machine 凭证,如果需要,可以使用Credential编辑器界面对它们进行编辑。下面的过程详细说明了如何修改凭证。

  1. 作为具有适当角色分配的用户登录。如果编辑私有凭证,则作为创建该凭证的用户登录。如果编辑组织凭据,则以组织凭据上具有Admin角色的用户登录。

  2. 单击Credentials链接进入Credentials管理界面。

  3. 在CREDENTIAL屏幕上,单击CREDENTIAL的名称进行编辑。

  4. 在Credential编辑器屏幕上,对所需的Credentiall属性进行必要的更改。

  5. 单击SAVE按钮以完成对凭证的更改。


📜8.2.5 凭证角色

如前所述,私有凭据(未分配给组织的凭据)只能被其创建者或具有系统管理员或系统审计员用户类型的用户访问。不能为其他用户分配私有凭据上的角色。

若要将角色分配给凭证,凭证必须具有组织。然后,该组织中的用户和团队可以通过角色分配共享该凭证

下面是可用的凭证角色列表。

📑Admin

凭据管理角色向用户授予凭据上的完全权限。这些权限包括删除和修改凭证,以及在作业模板中使用凭证的能力。


📑Use

凭据使用角色授予用户在作业模板中使用凭据的能力。在作业模板中证书的使用将在本课程的后面讨论。


📑Read

凭据读角色授予用户查看凭据详细信息的能力。这仍然不允许他们解密属于该证书通过web界面的秘密。


📜8.2.6 管理凭据访问

首次创建组织凭据时,只有创建该凭据的组织中的所有者和具有Admin或Auditor角色的用户才能访问该凭据。如果需要,必须特别配置其他访问。

在第一次保存其他角色之前不能分配其他角色,之后可以通过编辑凭证设置其他角色。

角色是通过凭证编辑器屏幕的PERMISSIONS部分分配的。

以下过程详细说明了在创建组织凭据之后向其授予权限的步骤。

  1. 在创建凭据的组织中,以具有Admin角色的用户登录。

  2. 单击Credentials进入Credentials管理界面。

  3. 单击要编辑的Credential的名称,以进入Credential编辑器屏幕。

  4. 在Credential编辑器屏幕上,单击PERMISSIONS按钮进入权限编辑器。

  5. 单击+按钮添加权限。

  6. 在用户和团队选择屏幕上,单击USERS或TEAMS,然后为要分配角色的用户或团队选择复选框。

  7. 在“请为选定的用户/团队分配角色”下,单击KEY以显示Credential角色及其定义的列表。

  8. 单击SELECT ROLES下拉菜单并为每个用户或团队选择所需的Credential角色。

  9. 单击SAVE以完成对权限的更改。

还可以通过用户或团队管理屏幕添加凭证的权限。


📜8.2.7 常见的凭据场景

为了帮助您理解使用凭证的方式,以下是一些常见的凭证场景:

📑受Tower保护的凭据,用户不知道

使用Tower 凭据的一个常见场景是将任务执行从管理员委托给第一级支持人员。

例如,假设需要委托支持人员运行剧本的能力,以确保在业务时间以外发生宕机时重新启动web应用程序来恢复服务。支持人员的Credential使用共享帐户、支持和密码保护的私钥,用于对托管主机进行SSH身份验证。支持帐户需要使用sudo升级权限,并使用sudo密码,以便运行playbook。

由于Credential是由支持人员的团队共享的,因此应该创建一个Organization Credential资源来存储所需的用户名、SSH私钥和SSH密钥密码验证到被管理主机的SSH会话。Credential还存储特权升级方法、用户名和sudo密码信息。创建之后,支持人员可以使用Credential在托管主机上启动Jobs,而不需要知道SSH密钥密码或sudo密码。
在这里插入图片描述


📑证书提示敏感密码,不存储在Tower中

另一种场景是使用Credentials存储用户名身份验证信息,同时在使用Credential时仍然交互式地提示输入敏感密码。

假设一个数据库管理员想要运行一个在Tower中管理的剧本来执行数据库服务器上的任务,该服务器存放公司财务的敏感数据。由于数据的高度敏感性,公司的财务合规规定禁止存储账户密码。

机器Credential仍然用于配置数据库管理员对数据库服务器的身份验证。因为凭据不是共享的,所以可以使用私有凭据来存储SSH USERNAME。它还被配置为在作业使用Credential时提示用户输入帐户密码,方法是选择prompt on launch复选框作为password。
在这里插入图片描述


📑重要:

Ansible Tower有一个功能,允许剧本按照计划自动运行,很像cron作业。但配置为在运行时交互式地提示密码信息的凭据不能用于计划的作业,因为如果没有用户交互,Tower无法提供该信息。


📜8.2.8 课本练习

📑1. 以admin帐号和redhat密码登录Ansible Tower web。


📑2. 创建名为Operations的新凭据。

2.1 单击左侧导航栏中的Credentials。

2.2 单击+按钮以添加新的凭据。

2.3 在下一画面中,详细信息如下所示:
在这里插入图片描述

2.4 保持其他字段不变,并单击SAVE以创建新的凭据。
在这里插入图片描述


📑3. 为Operations团队分配Operations凭据上的Admin角色。

3.1 单击左侧导航栏中的Credentials

3.2 在Operations凭据的同一行上,单击铅笔图标以编辑Operations凭据

3.3 在下一个paqe中,单击PERMISSIONS来管理凭证的权限。

3.4 单击+按钮添加权限。

3.5 单击TEAMS可显示可用列表

3.6 在第一部分中,勾选Operations团队旁边的复选框。这将导致团队显示在第一部分下面的第二部分中。

3.7 在下面的第二部分中,从下拉菜单中选择Admin Role。

3.8 单击SAVE进行角色分配。这将将您重定向到操作凭据的权限列表,该列表现在显示操作团队的所有成员oliver和ophelia都被分配了operations凭据上的Admin角色。
在这里插入图片描述


📑4. 与用户oliver一起验证Admin角色对Operations凭据的权限,oliver属于Operations团队。

4.1 点击右上角的登出图标,以oliver的身份登出并以redhat123的密码重新登录。此用户是操作团队的成员。

4.2 单击左侧导航栏中的Credentials。

4.3 单击前面创建的操作凭据的链接。请注意oliver如何修改凭据。


📑5. 为Developers团队分配Operations凭据上的Use角色。

5.1 单击右上角的“退出”图标,退出并以admin身份和redhat密码重新登录

5.2 单击左侧导航栏中的Credentials。

5.3 在Operations凭据条目的同一行上。单击铅笔图标编辑凭据。

5.4 在下一个paqe中,单击PERMISSIONS来管理权限。

5.5 单击+按钮添加权限。

5.6 点击TEAMS以显示可用的列表

5.7 在第一部分中,选择developer团队旁边的复选框。这将导致团队显示在第一部分下面的第二部分中。

5.8 在下面的第二节中。从下拉菜单中选择Use角色

5.9 单击SAVE以完成角色分配。这将将您重定向到Operations凭据的权限列表,该列表现在显示所有成员在开发团队中,daniel和david被分配操作凭据上的Use角色。
在这里插入图片描述


📑6. 与属于Developers团队的用户daniel一起验证Operations凭据的Use角色。

6.1 单击右上角的“注销”图标退出,并以daniel的身份以redhat123作为密码重新登录。此用户对开发人员团队具有Admin角色。

6.2 单击左侧导航栏中的Credentials。

6.3 单击前面创建的操作凭据的链接。请注意,daniel不能修改凭证,即使他对团队具有Admin角色。

6.4 点击右上角的登出图标可以登出Tower网站界面。


📜8.3 章节实验

此实验不做笔记,自行进行练习。

[student@workstation ~]$ lab host-review grade


💡总结

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

以上就是【金鱼哥】对 第八章 管理清单和凭据–为访问清单主机创建机器凭据 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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