10. 凭据
在针对机器启动作业、与清单源同步以及从版本控制系统导入项目内容时,凭据用于身份验证。
您可以授予用户和团队使用这些凭据的能力,而无需实际向用户公开凭据。如果用户转移到不同的团队或离开组织,您无需仅仅因为该凭据在 AWX 中可用而重新对所有系统进行加钥。
注意
AWX 会加密数据库中的密码和密钥信息,并且永远不会通过 API 显示秘密信息。有关详细信息,请参阅《AWX 管理指南》中的密钥处理和连接安全性。
10.1. 了解凭据的工作原理
AWX 使用 SSH 连接到远程主机(或 Windows 等效项)。为了将密钥从 AWX 传递到 SSH,必须在将其写入命名管道之前对其进行解密。然后,AWX 使用该管道将密钥发送到 SSH(以便它永远不会写入磁盘)。
如果使用密码,AWX 会通过直接响应密码提示并在将其写入提示之前对其进行解密来处理这些密码。
10.2. 凭据入门
单击左侧导航栏中的**凭据**以访问凭据页面。凭据页面显示所有可用凭据的可搜索列表,并且可以按**名称**排序。
添加到团队的凭据可供团队的所有成员使用,而默认情况下,添加到用户的凭据仅供该特定用户使用。
为了帮助您入门,已创建了一个演示凭据供您使用。
单击**演示凭据**的链接将带您到此凭据的**详细信息**视图。
单击**访问**选项卡将显示与此凭据关联的用户和团队及其授予的角色(所有者、管理员、审计员等)。
注意
即使在凭据已重新分配到另一个组织后,具有关联角色的凭据也将保留这些角色。
您可以单击**添加**按钮将此**演示凭据**分配给其他用户。如果不存在用户,请从**用户**菜单中添加它们,并参阅用户部分以获取更多详细信息。
单击**作业模板**选项卡将显示与此凭据关联的作业模板以及最近使用此特定凭据运行的作业。
您可以单击**添加**按钮将此**演示凭据**分配给其他作业模板。有关创建新作业模板的详细信息,请参阅作业模板部分。
10.3. 添加新的凭据
要创建新的凭据
从**凭据**屏幕单击**添加**按钮。
在**名称**字段中输入新凭据的名称。
可以选择输入描述并输入或选择与凭据关联的组织的名称。
注意
即使在凭据已重新分配到另一个组织后,与一个组织关联的一组权限的凭据也将保留。
输入或选择要创建的凭据类型。
根据所选凭据的类型输入相应的详细信息,如下一节凭据类型中所述。
完成后,单击**保存**。
10.4. 凭据类型
AWX 支持以下凭据类型
与 AWS Secrets Manager、Centrify、CyberArk、HashiCorp Vault、Microsoft Azure 密钥管理系统 (KMS) 和 Thycotic 关联的凭据类型是凭据插件功能的一部分,该功能允许外部系统查找您的密钥信息。有关更多详细信息,请参阅密钥管理系统部分。
10.4.1. Amazon Web Services
选择此凭据类型将启用与 Amazon Web Services 的云清单同步。
AWX 使用以下环境变量用于 AWS 凭据,并且是用户界面中提示的字段
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN
传统的 Amazon Web Services 凭据由 AWS**访问密钥**和**密钥**组成。
AWX 支持 EC2 STS 令牌(有时称为 IAM STS 凭据)。安全令牌服务 (STS) 是一种 Web 服务,使您可以请求 AWS 身份和访问管理 (IAM) 用户的临时、有限权限的凭据。要了解有关 IAM/EC2 STS 令牌的更多信息,请参阅:http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html
注意
如果 EC2 中的标签值包含布尔值(yes/no/true/false),则必须记住对它们进行引用。
警告
要使用隐式 IAM 角色凭据,在依赖 IAM 角色访问 AWS API 时,请不要在 AWX 中附加 AWS 云凭据。虽然将您的 AWS 云凭据附加到您的作业模板似乎很有意义,但这样做将强制使用您的 AWS 凭据,并且不会“贯穿”以使用您的 IAM 角色凭据(这是由于使用了 boto 库)。
10.4.2. AWS Secrets Manager
这被认为是密钥管理功能的一部分。有关更多详细信息,请参阅AWS Secrets Manager Lookup。
10.4.3. Ansible Galaxy/Automation Hub API 令牌
选择此凭据允许 AWX 访问 Galaxy 或使用在本地 Automation Hub 上发布的集合。有关详细信息,请参阅通过 Hub 使用集合。在此屏幕上,输入 Galaxy 服务器 URL 是唯一必需的值。
要填充**Galaxy 服务器 URL**和**Auth 服务器 URL**字段,请分别查找Red Hat Hybrid Cloud Console的 Automation Hub 部分中标记为**服务器 URL**和**SSO URL**的相应字段。
10.4.4. Centrify Vault 凭据提供程序查找
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅Centrify Vault 凭据提供程序查找。
10.4.5. 容器注册表
选择此凭据允许 AWX 访问容器映像的集合。有关更多信息,请参阅什么是容器注册表?。
除了指定名称外,**身份验证 URL** 是此屏幕上唯一必填字段,并且已预先填充了默认值。您可以通过指定不同容器注册表的身份验证端点来更改此默认值。
10.4.6. CyberArk Central 凭据提供程序查找
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅CyberArk Central 凭据提供程序 (CCP) 查找。
10.4.7. CyberArk Conjur Secrets Manager 查找
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅CyberArk Conjur Secrets Manager 查找。
10.4.8. GitHub 个人访问令牌
选择此凭据允许您使用通过 GitHub 获取的个人访问令牌 (PAT) 访问 GitHub。有关详细信息,请参阅使用 Webhook。在此屏幕中,输入提供的令牌是唯一必填值。
GitHub PAT 凭据需要在**令牌**字段中输入值,该值在您的 GitHub 个人资料设置中提供。
此凭据可用于建立与 GitHub 的 API 连接,以用于 Webhook 侦听器作业,发布状态更新。
10.4.9. GitLab 个人访问令牌
选择此凭据允许您使用通过 GitLab 获取的个人访问令牌 (PAT) 访问 GitLab。有关详细信息,请参阅使用 Webhook。在此屏幕中,输入提供的令牌是唯一必填值。
GitLab PAT 凭据需要在**令牌**字段中输入值,该值在您的 GitLab 个人资料设置中提供。
此凭据可用于建立与 GitLab 的 API 连接,以用于 Webhook 侦听器作业,发布状态更新。
10.4.10. Google Compute Engine
选择此凭据类型可启用与 Google Compute Engine (GCE) 的云清单同步。
AWX 使用以下环境变量用于 GCE 凭据,并且是用户界面中提示的字段
GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH
GCE 凭据具有以下必需的输入
**服务帐户电子邮件地址**:分配给 Google Compute Engine **服务帐户**的电子邮件地址。
**项目**:可选地提供 GCE 分配的标识或您在项目创建时提供的唯一项目 ID。
**服务帐户 JSON 文件**:可选地上传 GCE 服务帐户文件。使用文件夹()图标浏览包含特殊帐户信息的文件,该文件可由在您的 GCE 实例上运行的服务和应用程序用于与其他 Google Cloud Platform API 交互。这会授予服务帐户和虚拟机实例权限。
**RSA 私钥**:与服务帐户电子邮件关联的 PEM 文件。
10.4.11. GPG 公钥
选择此凭据类型允许您创建凭据,使 AWX 能够在从源代码控制同步时验证项目的完整性。
有关如何生成有效的密钥对、使用 CLI 工具签名内容以及如何将公钥添加到 AWX 的详细信息,请参阅项目签名和验证。
10.4.12. HashiCorp Vault 密钥查找
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅HashiCorp Vault 密钥查找。
10.4.13. HashiCorp Vault 签名 SSH
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅HashiCorp Vault 签名 SSH。
10.4.14. Insights
选择此凭据类型可启用与 Red Hat Insights 的云清单同步。
Insights 凭据包括 Insights **用户名**和**密码**,即用户的 Red Hat 客户门户帐户用户名和密码。
10.4.15. 机器
机器凭据使 AWX 能够在您管理的主机上调用 Ansible。就像在命令行上使用 Ansible 一样,您可以指定 SSH 用户名,可选地提供密码、SSH 密钥、密钥密码,或者甚至让 AWX 在部署时提示用户输入其密码。它们为 playbook 定义 ssh 和用户级权限提升访问权限,并在提交作业以在远程主机上运行 playbook 时使用。网络连接(httpapi
、netconf
和 network_cli
)对凭据类型使用**机器**。
机器/SSH 凭据不使用环境变量。相反,它们通过ansible -u
标志传递用户名,并在底层 SSH 客户端提示时交互式地写入 SSH 密码。
机器凭据具有可以配置的几个属性
**用户名**:用于 SSH 身份验证的用户名。
**密码**:用于 SSH 身份验证的实际密码。如果输入,此密码将加密存储在数据库中。或者,您可以配置 AWX 在启动时询问用户密码,方法是选择**启动时提示**。在这种情况下,当作业启动时会打开一个对话框,提示用户输入密码和密码确认。
**SSH 私钥**:复制或拖放机器凭据的 SSH 私钥。
**私钥密码短语**:如果使用的 SSH 私钥受密码保护,则可以为私钥配置密钥密码。如果输入,此密码将加密存储在数据库中。或者,您可以配置 AWX 在启动时询问用户密码,方法是选择**启动时提示**。在这种情况下,当作业启动时会打开一个对话框,提示用户输入密码和密码确认。
**权限提升方法**:指定要分配给特定用户的权限提升类型。这等效于指定
--become-method=BECOME_METHOD
参数,其中BECOME_METHOD
可以是下面描述的任何典型方法,或您编写的自定义方法。开始输入方法的名称,相应的名称将自动填充。
空选择:如果任务/剧本将
become
设置为yes
并与空选择一起使用,则它将默认为sudo
**sudo**:以超级用户(root 用户)权限执行单个命令
**su**:切换到超级用户(root 用户)帐户(或其他用户帐户)
**pbrun**:请求在受控帐户中运行应用程序或命令,并提供高级 root 权限委派和密钥记录
**pfexec**:使用预定义的进程属性(例如特定用户或组 ID)执行命令
**dzdo**:sudo 的增强版本,在 Centrify 的 Active Directory 服务中使用 RBAC 信息(请参阅 Centrify 的DZDO 网站)
**pmrun**:请求在受控帐户中运行应用程序(请参阅Privilege Manager for Unix 6.0)
**runas**:允许您以当前用户身份运行
**enable**:切换到网络设备上的提升权限
**doas**:允许您的远程/登录用户通过 doas(“Do as user”)实用程序以其他用户身份执行命令
**ksu**:允许您的远程/登录用户通过 Kerberos 访问以其他用户身份执行命令
**machinectl**:允许您通过 systemd 机器管理器管理容器
**sesu**:允许您的远程/登录用户通过 CA Privileged Access Manager 以其他用户身份执行命令
注意
自定义become
插件仅从 Ansible 2.8 开始可用。有关此概念的更多详细信息,请参阅了解权限提升 https://docs.ansible.org.cn/ansible/latest/user_guide/become.html和become 插件列表 https://docs.ansible.org.cn/ansible/latest/plugins/become.html#plugin-list。
仅当选择了权限提升选项时,才会显示**权限提升用户名**字段。输入要在远程系统上使用提升权限的用户名称。
**权限提升密码**:仅当选择了权限提升选项时,才会显示该字段。输入用于通过远程系统上选定的权限提升类型对用户进行身份验证的实际密码。如果输入,此密码将加密存储在数据库中。或者,您可以配置 AWX 在启动时询问用户密码,方法是选择**启动时提示**。在这种情况下,当作业启动时会打开一个对话框,提示用户输入密码和密码确认。
注意
Sudo 密码必须与 SSH 密码或 SSH 私钥结合使用,因为 AWX 必须首先与主机建立经过身份验证的 SSH 连接,然后才能调用 sudo 切换到 sudo 用户。
警告
在计划作业中使用的凭据不得配置为“**启动时提示**”。
10.4.16. Microsoft Azure Key Vault
这被认为是秘密管理功能的一部分。有关更多详细信息,请参阅Microsoft Azure Key Vault。
10.4.17. Microsoft Azure 资源管理器
选择此凭据类型可启用与 Microsoft Azure 资源管理器的云清单同步。
Microsoft Azure 资源管理器凭据具有可以配置的几个属性。
订阅 ID:Microsoft Azure 帐户的订阅 UUID(必需)。
用户名:用于连接到 Microsoft Azure 帐户的用户名。
密码:用于连接到 Microsoft Azure 帐户的密码。
客户端 ID:Microsoft Azure 帐户的客户端 ID。
客户端密钥:Microsoft Azure 帐户的客户端密钥。
租户 ID:Microsoft Azure 帐户的租户 ID。
Azure 云环境:与 Azure 云或 Azure Stack 环境关联的变量。
这些字段等同于 API 中的变量。要传递服务主体凭据,请定义以下变量。
AZURE_CLIENT_ID
AZURE_SECRET
AZURE_SUBSCRIPTION_ID
AZURE_TENANT
AZURE_CLOUD_ENVIRONMENT
要传递 Active Directory 用户名/密码对,请定义以下变量。
AZURE_AD_USER
AZURE_PASSWORD
AZURE_SUBSCRIPTION_ID
您还可以将凭据作为参数传递到 playbook 中的任务。优先级顺序为参数、然后是环境变量,最后是在您的主目录中找到的文件。
要将凭据作为参数传递给任务,请对服务主体凭据使用以下参数。
client_id
secret
subscription_id
tenant
azure_cloud_environment
或者,为 Active Directory 用户名/密码传递以下参数。
ad_user
password
subscription_id
10.4.18. 网络
仅当您使用local连接和provider来使用 Ansible 网络模块连接和管理网络设备时,才选择网络凭据类型。连接到网络设备时,凭据类型必须与连接类型匹配。
对于使用
provider
的local
连接,凭据类型应为网络。对于所有其他网络连接(
httpapi
、netconf
和network_cli
),凭据类型应为机器。
有关网络设备可用连接类型的概述,请参阅多种通信协议。
AWX 使用以下环境变量用于网络凭据,并且是用户界面中提示的字段。
ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD
网络凭据具有可以配置的几个属性。
用户名:与网络设备一起使用的用户名(必需)。
密码:与网络设备一起使用的密码。
SSH 私钥:复制或拖放用于通过 SSH 认证用户到网络的实际 SSH 私钥。
私钥密码短语:用于通过 SSH 认证用户到网络的私钥的实际密码短语。
授权:从“选项”字段中选择此选项以控制是否进入特权模式。
如果选中授权,请在授权密码字段中输入密码以访问特权模式。
有关更多信息,请参阅Inside Playbook 博客使用新的连接插件移植 Ansible 网络 playbook。
10.4.19. OpenShift 或 Kubernetes API Bearer 令牌
选择此凭据类型允许您创建指向 Kubernetes 或 OpenShift 容器的实例组。有关此概念的更多信息,请参阅容器和实例组。
容器凭据具有以下输入。
OpenShift 或 Kubernetes API 端点(必需):用于连接到 OpenShift 或 Kubernetes 容器的端点。
API 身份验证 Bearer 令牌(必需):用于验证连接的令牌。
验证 SSL:您可以选择选中此选项以验证服务器的 SSL 证书是否有效且受信任。使用内部或私有 CA 的环境应取消选中此选项以禁用验证。
证书颁发机构数据:如果提供,在粘贴证书时包含
BEGIN CERTIFICATE
和END CERTIFICATE
行。
一个ContainerGroup
是一种InstanceGroup
类型,它具有一个关联的凭据,允许连接到 OpenShift 集群。要设置容器组,您必须首先拥有以下内容。
您可以启动到的命名空间(每个集群都有一个“默认”命名空间,但您可能希望使用特定的命名空间)。
具有允许其在此命名空间中启动和管理 Pod 的角色的服务帐户。
如果您将在私有注册表中使用执行环境,并且在 AWX 中与其关联了容器注册表凭据,则服务帐户还需要获取、创建和删除命名空间中密钥的角色。如果您不想将这些角色授予服务帐户,则可以在创建
ImagePullSecrets
之前创建它们,并在 ContainerGroup 的 pod 规范上指定它们。在这种情况下,执行环境不应关联容器注册表凭据,否则 AWX 将尝试在命名空间中为您创建密钥。与该服务帐户关联的令牌(OpenShift 或 Kubernetes Bearer 令牌)。
与集群关联的 CA 证书。
本节介绍如何在 Openshift 集群(或 K8s)中创建服务帐户,以便通过 AWX 在容器组中运行作业。创建服务帐户后,其凭据将以 OpenShift 或 Kubernetes API Bearer 令牌凭据的形式提供给 AWX。下面描述了如何创建服务帐户并收集配置 AWX 所需的信息。
配置 AWX。
要创建服务帐户,您可以下载并使用此服务帐户示例
containergroup sa
,并根据需要修改它以获取上述凭据。应用
containergroup-sa.yml
中的配置。oc apply -f containergroup-sa.yml
获取与服务帐户关联的密钥名称。
export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')
从密钥获取令牌。
oc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.token
获取 CA 证书。
oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crt
使用
containergroup-sa.token
和containergroup-ca.crt
的内容来提供容器组所需的OpenShift 或 Kubernetes API Bearer 令牌的信息。
10.4.20. OpenStack
选择此凭据类型可启用与 OpenStack 的云清单同步。
OpenStack 凭据具有以下必需的输入。
用户名:用于连接到 OpenStack 的用户名。
密码(API 密钥):用于连接到 OpenStack 的密码或 API 密钥。
主机(身份验证 URL):用于身份验证的主机。
项目(租户名称):用于 OpenStack 的租户名称或租户 ID。此值通常与用户名相同。
项目(域名称):可选地提供与您的域关联的项目名称。
域名:可选地提供用于连接到 OpenStack 的 FQDN。
如果您有兴趣使用 OpenStack 云凭据,请参阅本指南中的利用云凭据,以获取更多信息,包括示例 playbook。
10.4.21. Red Hat Ansible Automation Platform
选择此凭据允许您访问 Red Hat Ansible Automation Platform 实例。
Red Hat Ansible Automation Platform 凭据具有以下必需的输入。
Red Hat Ansible Automation Platform:要连接到的其他实例的基本 URL 或 IP 地址。
用户名:用于连接到它的用户名。
密码:用于连接到它的密码。
Oauth 令牌:如果未使用用户名和密码,请提供 OAuth 令牌用于身份验证。
10.4.22. Red Hat Satellite 6
选择此凭据类型可启用与 Red Hat Satellite 6 的云清单同步。
AWX 基于用户界面中提示的字段编写 Satellite 配置文件。文件的绝对路径设置在以下环境变量中。
FOREMAN_INI_PATH
Satellite 凭据具有以下必需的输入。
Satellite 6 URL:要连接到的 Satellite 6 URL 或 IP 地址。
用户名:用于连接到 Satellite 6 的用户名。
密码:用于连接到 Satellite 6 的密码。
10.4.23. Red Hat Virtualization
此凭据允许 AWX 访问 Ansible 的 oVirt4.py
动态清单插件,该插件由 Red Hat Virtualization (RHV) 管理。
AWX 使用以下环境变量来存储 Red Hat Virtualization 凭据,这些变量也是用户界面中的字段。
OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD
RHV 凭据需要以下输入项
主机(身份验证 URL):要连接到的主机 URL 或 IP 地址。为了与清单同步,凭据 URL 需要包含
ovirt-engine/api
路径。用户名:用于连接到 oVirt4 的用户名。这需要包含域名才能成功,例如
[email protected]
。密码:用于连接到它的密码。
CA 文件:可以选择提供 oVirt 证书文件的绝对路径(它可能以
.pem
、.cer
和.crt
扩展名结尾,但为了保持一致性,最好使用.pem
)。
10.4.24. 源代码管理
SCM(源代码管理)凭据与项目一起使用,用于从远程版本控制系统(如 Git 或 Subversion)克隆和更新本地源代码存储库。
源代码管理凭据具有多个可配置的属性。
用户名:与源代码控制系统一起使用的用户名。
密码:与源代码控制系统一起使用的密码。
SCM 私钥:复制或拖放用于通过 SSH 认证用户到源代码控制系统的实际 SSH 私钥。
私钥密码短语:如果使用的 SSH 私钥受密码短语保护,则可以为私钥配置密钥密码短语。
注意
源代码管理凭据无法配置为“启动时提示”。如果您正在为源代码管理凭据使用 GitHub 帐户,并且您的帐户启用了 2FA(双因素身份验证),则需要在密码字段中使用您的个人访问令牌,而不是您的帐户密码。
10.4.25. Terraform 后端配置
Terraform 是 HashiCorp 用于自动化各种基础设施任务的工具。选择此凭据类型以启用与 Terraform 清单源的同步。
Terraform 凭据需要后端配置属性,该属性应包含来自 Terraform 后端块 的数据。您可以粘贴、拖放文件、浏览以上传文件,或单击()按钮以从外部 密钥管理系统填充字段。S3 后端的示例配置
bucket = "my-terraform-state-bucket"
key = "path/to/terraform-state-file"
region = "us-east-1"
access_key = "my-aws-access-key"
secret_key = "my-aws-secret-access-key"
保存它会将后端配置的文件路径存储在环境变量 TF_BACKEND_CONFIG_FILE
中,该变量可用于任何附加了凭据的作业。
10.4.26. Thycotic DevOps Secrets Vault
这被认为是密钥管理功能的一部分。有关更多详细信息,请参阅 Thycotic DevOps Secrets Vault。
10.4.27. Thycotic Secret Server
这被认为是密钥管理功能的一部分。有关更多详细信息,请参阅 Thycotic Secret Server。
10.4.28. Vault
选择此凭据类型可以启用与 Ansible Vault 的清单同步。
Vault 凭据需要Vault 密码,如果应用多 Vault 凭据,则需要一个可选的Vault 标识符。有关 AWX 多 Vault 支持的更多信息,请参阅AWX 管理指南的 多 Vault 凭据 部分。
您可以配置 AWX 以在启动时提示用户输入密码,方法是选择启动时提示。在这些情况下,作业启动时会打开一个对话框,提示用户输入密码和密码确认。
警告
在计划作业中使用的凭据不得配置为“**启动时提示**”。
有关 Ansible Vault 的更多信息,请参阅:https://docs.ansible.org.cn/ansible/playbooks_vault.html
10.4.29. VMware vCenter
选择此凭据类型可以启用与 VMware vCenter 的清单同步。
AWX 使用以下环境变量来存储 VMware vCenter 凭据,这些变量也是用户界面中提示的字段。
VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS
VMware 凭据需要以下输入项
vCenter 主机:要连接到的 vCenter 主机名或 IP 地址。
用户名:用于连接到 vCenter 的用户名。
密码:用于连接到 vCenter 的密码。
注意
如果实例上未运行 VMware Guest Tools,则 VMware 清单同步可能不会为该实例返回 IP 地址。