Documentation

10. 凭证

在针对机器启动作业、与清单源同步以及从版本控制系统中导入项目内容时,会使用凭证进行验证。

您可以在不向用户公开凭证信息的情况下,授权用户使用这些凭证。如果有用户转到另外一个团队或已离开相关机构,您将不需要对所有系统进行 re-key 的工作,因为这些凭证已存在于 automation controller 中。

注解

automation controller 会加密数据库中的密码和密钥信息,且永远不会通过 API 使这些机密信息可见。详情请参阅 Automation Controller Administration Guide

10.1. 凭据的工作方式

automation controller 使用 SSH 连接到远程主机(或 Windows 相对应的系统)。为了把密钥从 automation controller 传递给 SSH,在它可以被写入 pipe 前,密钥需要被解密。automation controller 然后会使用那个 pipeto 把密钥发送到 SSH(因此,它永远不会被写到磁盘)。

如果使用密码,automation controller 将会直接响应密码的输入提示,并在把它写到输入提示前对密码进行解密。

10.2. 使用凭证

点左侧导航栏中的 Credentials 访问 Credentials 页面。Credentials 页面包括了一个可以对其进行搜索的所有可用凭证的列表,并可根据 Name 进行排序。

Credentials - home with example credentials

添加到团队的凭证对团队所有成员都可用,而添加到用户的凭证默认只对该特定用户可用。

注解

如果删除了由其他工作项目使用的项,则会打开一条信息,列出会受到删除影响的项,并提示您确认删除。一些界面会包括无效的或以前已被删除的项,因此它们将无法运行。以下是这类信息的一个示例:

_images/warning-deletion-dependencies.png

为了帮助您尽快开始工作,系统创建了一个示例凭证以供参考。

点击**Demo Credential** 的链接可以进入这个凭证的 Details 页查看它的内容。

Credentials - home with demo credential details

Access 标签页显示与您的用户和团队相关联的凭证及其授权角色(owner、admin、auditor 等)

Credentials - home with permissions credential details

注解

即使在凭证被重新分配给另一个机构后,相关角色的凭证仍会保留。

您可以点 Add 按钮将这个 Demo Credential 分配给其他用户。如果没有用户存在,从 Users 菜单中添加用户,并参阅 用户 部分了解更多详情。

10.3. 添加新凭证

创建一个新凭证

  1. Credentials 屏幕中的 Add 按钮。

Create credential

  1. Name 字段输入新凭证的名称。

  2. (可选)输入描述信息,再输入或选择与凭证关联的机构名称。

注解

带有与一个机构关联的一组权限的凭证将会被保留,即使这个凭证已被重新分配给另外一个机构。

  1. 输入或选择您要创建的凭证类型。

_images/credential-types-drop-down-menu.png
  1. 根据所选的凭证类型输入相关详情,如下一部分 凭证类型 所述。

  2. 完成后请点击 Save

10.4. 凭证类型

automation controller 支持以下凭证类型:

The credential types associated with Centrify, CyberArk, HashiCorp Vault, Microsoft Azure Key Management System (KMS), and Thycotic are part of the credential plugins capability that allows an external system to lookup your secrets information. See the Secret 管理系统 section for further detail.

10.4.1. Amazon Web Services

选择此凭证类型可启用与 Amazon Web Services 的云清单同步。

automation controller 为 AWS 凭证使用以下环境变量,并在用户界面中提示输入字段:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN

Credentials - create AWS credential

传统的 Amazon Web Services 凭证由 AWS Access KeySecret Key 组成。

automation controller 引入了对 EC2 STS 令牌(有时称为 IAM STS 凭证)的支持。安全令牌服务 (STS) 是一个 web 服务,可让您为 AWS Identity and Access Management (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 时请不要在 automation controller 中附加 AWS 云凭证。虽然在您的作业模板中附加 AWS 云凭证似乎有意义,但这样做会强制使用您的 AWS 凭证,且不会因“失败”而使用您的 IAM 角色凭证(这是由于使用 boto 库造成的)。

10.4.2. Ansible Galaxy/Automation Hub API 令牌

选择这个凭证后,automation controller 可以访问 Galaxy 或使用本地 Automation Hub 上发布的集合。详情请参阅 通过 Hub 使用集合。在这个屏幕中,唯一需要的输入是 Galaxy 服务器的 URL。

Credentials - create galaxy credential

10.4.3. Centrify Vault Credential Provider Lookup

This is considered part of the secret management capability. See Centrify Vault Credential Provider Lookup for more detail.

10.4.4. Container Registry

Selecting this credential allows the automation controller to access a collection of container images. See What is a container registry? for more information.

Aside from specifying a name, the Authentication URL is the only required field on this screen, and it is already pre-populated with a default value. You may change this default by specifying the authentication endpoint for a different container registry.

Credentials - create container credential

10.4.5. CyberArk AIM Credential Provider Lookup

This is considered part of the secret management capability. See CyberArk AIM Credential Provider Lookup for more detail.

10.4.6. CyberArk Conjur Secret Lookup

This is considered part of the secret management capability. See CyberArk Conjur Secret Lookup for more detail.

10.4.7. GitHub 个人访问令牌

选择这个凭证后,您可以使用通过 GitHub 获取的个人访问令牌 (PAT) 访问 GitHub。详情请参阅 使用 Webhook。输入提供的令牌是这个屏幕中唯一需要的值。

Credentials - create GitHub credential

GitHub PAT credentials require a value in the Token field, which is provided in your GitHub profile settings.

此凭证可用于建立与 GitHub 的 API 连接,以在 Webhook 侦听器作业中用于发布状态更新。

10.4.8. GitLab 个人访问令牌

选择这个凭证后,您可以使用通过 GitLab 获取的个人访问令牌 (PAT) 访问 GitLab。详情请参阅 使用 Webhook。输入提供的令牌是这个屏幕中唯一需要的值。

Credentials - create GitLab credential

GitLab PAT credentials require a value in the Token field, which is provided in your GitLab profile settings.

此凭证可用于建立与 GitLab 的 API 连接,以在 Webhook 侦听器作业中用于发布状态更新。

10.4.9. Google Compute Engine

选择此凭证类型可启用与 Google Compute Engine (GCE) 的云清单同步。

automation controller 为 GCE 凭证使用以下环境变量,并在用户界面中提示输入字段:

GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH

Credentials - create GCE credential

GCE 凭证需要以下输入:

  • Service Account Email Address:分配给 Google Compute Engine **服务帐户**的电子邮件地址。

  • **Project**(可选):提供 GCE 分配的标识或您在项目创建时提供的唯一项目 ID。

  • **Service Account JSON File**(可选):上传 GCE 服务帐户文件。使用文件夹 (file-browser) 图标来浏览包含特殊帐户信息的文件。此信息可供 GCE 实例上运行的服务和应用程序与其他 Google Cloud Platform API 交互。这会向服务帐户和虚拟机实例授予权限。

  • RSA Private Key:与服务帐户电子邮件关联的 PEM 文件。

10.4.10. HashiCorp Vault Secret Lookup

This is considered part of the secret management capability. See HashiCorp Vault Secret Lookup for more detail.

10.4.11. HashiCorp Vault Signed SSH

This is considered part of the secret management capability. See HashiCorp Vault Signed SSH for more detail.

10.4.12. Insights

选择此凭证类型可启用与红帽 Insights 的云清单同步。

Credentials - create Insights credential

Insights 凭证包括 Insights UsernamePassword,这是用户的红帽客户门户网站帐户的用户名和密码。

10.4.13. 机器

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

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

Credentials - create machine credential

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

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

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

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

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

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

_images/credentials-create-machine-credential-priv-escalation.png
  • 空选择:如果任务/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:允许您的远程/登录用户以另一个用户的身份通过 doas("Do as user")实用程序执行命令

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

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

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

注解

自定义 become 插件只适用于 Ansible 2.8。有关这个概念的更多详情,请参阅 Understanding Privilege Escalation https://docs.ansible.com/ansible/latest/user_guide/become.htmllist of become plugins https://docs.ansible.com/ansible/latest/plugins/become.html#plugin-list

  • 只有在选择了权限升级选项时,才会看到 Privilege Escalation Username 字段。输入在远程系统上用于升级权限的用户名。

  • Privilege Escalation Password:只有在选择了权限升级选项时才会看到该字段。请输入在远程系统上通过所选权限升级类型验证用户的实际密码。如果输入此密码,则它会以加密的形式存储在数据库中。或者,您可以将 automation controller 配置为通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。

注解

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

警告

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

10.4.14. Microsoft Azure Key Vault

This is considered part of the secret management capability. See Microsoft Azure Key Vault for more detail.

10.4.15. Microsoft Azure Resource Manager

选择此凭证类型可启用与 Microsoft Azure Resource Manager 的云清单同步。

Credentials - create Azure credential

Microsoft Azure Resource Manager 凭证有几个可以配置的属性:

  • Subscription ID:Microsoft Azure 帐户的订阅 UUID(必需)。

  • Username:用于连接 Microsoft Azure 帐户的用户名。

  • Password:用于连接 Microsoft Azure 帐户的密码。

  • Client ID:Microsoft Azure 帐户的客户端 ID。

  • Client Secret:Microsoft Azure 帐户的客户端 Secret。

  • Tenant ID:Microsoft Azure 帐户的租户 ID。

  • Azure Cloud Environment:与 Azure 云或 Azure 堆栈环境关联的变量。

这些字段等同于 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.16. 网络

**仅**当您正在通过 provider 使用 local 连接以使用 Ansible 网络模块来连接到并管理网络设备时,才应选择网络凭证类型。当连接到网络设备时,凭证类型必须与连接类型匹配:

  • 对于使用 providerlocal 连接,凭证类型应该是 Network

  • 对于所有其他网络连接(httpapinetconfnetwork_cli),凭证类型应该是 Machine

有关网络设备的可用连接类型的概述,请参阅 Multiple Communication Protocols

automation controller 为网络凭证使用以下环境变量,并在用户界面中提示输入字段:

ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD

Credentials - create network credential

网络凭证有几个可以配置的属性:

  • Username:与网络设备结合使用的用户名(必需)。

  • Password:与网络设备结合使用的密码。

  • SSH Private Key:复制或拖放要用于通过 SSH 向网络验证用户的实际 SSH 私钥。

  • Private Key Passphrase:要用于通过 SSH 向网络验证用户的私钥的实际密码。

  • Authorize:从 Options 字段中选择此项来控制是否进入特权模式。

  • 如果选中了 Authorize,请在“Authorize Password”字段中输入密码以访问特权模式。

有关详情请参阅 Inside Playbook 博文 Porting Ansible Network Playbooks with New Connection Plugins

10.4.17. OpenShift 或 Kubernetes API 持有者令牌

选择此凭证类型后,您可以创建实例组以指向 Kubernetes 或 OpenShift 容器。有关此概念的更多信息,请参阅 容器和实例组

Credentials - create Containers credential

容器凭证有以下输入:

  • **OpenShift 或 Kubernetes API Endpoint**(必需):用于连接到 OpenShift 或 Kubernetes 容器的端点

  • **API Authentication Bearer Token**(必需):用于验证连接的令牌

  • **Verify SSL**(可选):您可以检查该选项以验证服务器的 SSL 证书是否有效且可信。使用内部或私有 CA 的环境应当不勾选此选项以禁用验证。

  • Certificate Authority Data:如果提供,请在粘贴证书时包括 BEGIN CERTIFICATEEND CERTIFICATE 行。

A ContainerGroup is a type of InstanceGroup that has an associated Credential that allows for connecting to an OpenShift cluster. To set up a container group, you must first have the following:

  • A namespace you can launch into (every cluster has a “default” namespace, but you may want to use a specific namespace)

  • 具有允许在该命名空间中启动和管理 Pod 的角色的服务帐户

  • 如果您要在私有 registry 中使用 execution environments,并在自动化控制器中关联了与其关联的 Container Registry 凭证,则服务帐户还需要这些角色来获取、创建和删除命名空间中的 secret。如果您不想将这些角色赋予服务帐户,可以预先创建 ImagePullSecrets 并在 ContainerGroup 的 pod 规格中指定它们。在这种情况下,execution environment 不能关联 Container Registry 凭证,或者控制器会尝试为您在命名空间中创建 secret。

  • 与该服务帐户关联的令牌(OpenShift 或 Kubernetes Bearer Token)

  • 与集群关联的 CA 证书

This section describes creating a Service Account in an Openshift cluster (or K8s) in order to be used to run jobs in a container group via automation controller. After the Service Account is created, its credentials are provided to the controller in the form of an Openshift or Kubernetes API bearer token credential. Below describes how to create a service account and collect the needed information for configuring automation controller.

To configure the controller:

  1. To create a service account, you may download and use this sample service account, containergroup sa and modify it as needed to obtain the above credentials.

  2. 应用来自 containergroup-sa.yml 的配置:

    oc apply -f containergroup-sa.yml
    
  3. 获取与服务帐户关联的 secret 名称:

    export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')
    
  4. 从 secret 获取令牌:

    oc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.token
    
  5. 获取 CA 证书:

    oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crt
    
  6. 使用 containergroup-sa.tokencontainergroup-ca.crt 的内容,为容器组所需的 OpenShift 或 Kubernetes API 持有者令牌 提供信息。

10.4.18. OpenStack

选择此凭证类型可启用与 OpenStack 的云清单同步。

Credentials - create OpenStack credential

OpenStack 凭证有以下所需输入:

  • Username:用于连接 OpenStack 的用户名。

  • 密码 (API Key):用于连接 OpenStack 的密码或 API 密钥。

  • Host (Authentication URL):用于身份验证的主机。

  • Project (Tenant Name):用于 OpenStack 的租户名称或租户 ID。这个值通常与用户名相同。

  • **Project(Domain Name)**(可选)提供与您的域关联的项目名称。

  • **Domain name**(可选):提供用于连接到 OpenStack 的 FQDN。

如果您有兴趣使用 OpenStack 云凭证,请参阅本指南中的 使用云凭证 以了解更多信息,包括一个示例 playbook。

10.4.19. Red Hat Ansible Automation Platform

选择这个凭证可让您访问另一个 automation controller 实例。

Credentials - create tower credential

Automation controller 凭证有以下所需输入:

  • Controller Hostname:要连接的其他实例的基本 URL 或 IP 地址。

  • Username:用于连接的用户名。

  • Password:用于连接的密码。

  • OAuth Token:如果没有使用用户名和密码,提供一个 OAuth 令牌来进行验证。

10.4.20. Red Hat Satellite 6

选择此凭证类型可启用与 Red Hat Satellite 6 的云清单同步。

automation controller 根据用户界面中提示的字段写入 Red Hat Satellite 配置文件。该文件的绝对路径在以下环境变量中设置:

FOREMAN_INI_PATH

Credentials - create Red Hat Satellite 6 credential

Red Hat Satellite 凭证需要以下输入:

  • Satellite 6 URL:要连接的 Red Hat Satellite 6 的 URL 或 IP 地址。

  • Username:用于连接到 Red Hat Satellite 6 的用户名。

  • Password:用于连接到 Red Hat Satellite 6 的密码。

10.4.21. Red Hat Virtualization

此凭证允许 automation controller 访问由 Red Hat Virtualization (RHV) 管理的 Ansible 的 oVirt4.py 动态清单插件。

automation controller 为 Red Hat Virtualization 凭证使用以下环境变量,并在用户界面中输入字段:

OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD

Credentials - create rhv credential

RHV 凭证有以下所需输入:

  • Host (Authentication URL): 要连接的主机 URL 或 IP 地址。为了与清单同步,凭据 URL 需要包含 ovirt-engine/api 路径。

  • Username: 用来连接到 oVirt4 的用户名。这需要包括域配置集才能成功 username@ovirt.host.com

  • Password:用于连接的密码。

  • **CA File**(可选):提供 oVirt 证书文件的绝对路径(它的结尾可以为 .pem.cer.crt 扩展名,但最好为 .pem 以保持一致性)

10.4.22. 源控制

SCM(源控制)凭证与项目一起用于从远程修订控制系统(如 Git 或 Subversion)中克隆和更新本地源代码存储库。

Credentials - create SCM credential

源控制凭证有几个可以配置的属性:

  • Username:与源控制系统结合使用的用户名。

  • Password:与源控制系统结合使用的密码。

  • SCM Private Key:复制或拖放要用于通过 SSH 向源控制系统验证用户的实际 SSH 私钥。

  • Private Key Passphrase:如果使用的 SSH 私钥受密码保护,您可以为该私钥配置密钥密码。

注解

无法将源控制凭证配置为 "Prompt on launch"。如果您使用 GitHub 帐户作为 Source Control 凭证,且您的帐户上启用了 2FA(Two Factor Authenication),您需要在 password 字段中使用您的个人访问令牌,不是您的帐户密码。

10.4.23. Thycotic DevOps Secrets Vault

This is considered part of the secret management capability. See Thycotic DevOps Secrets Vault for more detail.

10.4.24. Thycotic Secret Server

This is considered part of the secret management capability. See Thycotic Secret Server for more detail.

10.4.25. Vault

选择此凭证类型可启用与 Ansible Vault 的清单同步。

Credentials - create Vault credential

如果应用多 Vault 凭证,则 Vault 凭证需要 Vault Password 和可选 Vault Identifier。有关 automation controller 多 Vault 支持的更多信息,请参阅 Automation Controller Administration Guide多 Vault 凭证 部分。

您可以通过选择 Prompt on launch 将 automation controller 配置为要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。

警告

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

如需有关 Ansible Vault 的更多信息,请参阅:http://docs.ansible.com/ansible/playbooks_vault.html

10.4.26. VMware vCenter

选择此凭证类型可启用与 VMware vCenter 的清单同步。

automation controller 为 VMware vCenter 凭证使用以下环境变量,并在用户界面中提示输入字段:

VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS

Credentials - create VMware credential

VMware 凭证有以下所需输入:

  • vCenter Host:要连接的 vCenter 主机名或 IP 地址。

  • Username:用于连接到 vCenter 的用户名。

  • Password:用于连接到 vCenter 的密码。

注解

如果 VMware 客户机工具没有在这个实例中运行,VMware 清单同步可能不会返回那个实例的 IP 地址。