Полномочия#
Полномочия используются для доступа к различным ресурсам за пределами контроллера.
При создании любых полномочий обязательно должны быть указаны их название и тип. Если при создании полномочий указать организацию, то они будут доступны только в пределах этой организации. В противном случае полномочия доступны для использования всеми организациями.
Поддерживаемые типы полномочий#
В Astra Automation Controller поддерживаются следующие типы полномочий:
API-токен Ansible Galaxy/Automation Hub (Ansible Galaxy/Automation Hub API Token);
Centrify Vault Credential Provider Lookup;
CyberArk Central Credential Provider Lookup;
CyberArk Conjur Secrets Manager Lookup;
Google Compute Engine;
GPG Public Key;
HashiCorp Vault Secret Lookup;
HashiCorp Vault Signed SSH;
Insights;
Microsoft Azure Key Vault;
OpenStack;
Red Hat Satellite 6;
Thycotic DevOps Secrets Vault;
Thycotic Secret Server;
Vault;
VMware vCenter;
Web-сервисы Amazon (Amazon Web Services);
Виртуализация Red Hat (Red Hat Virtualization);
Диспетчер ресурсов Microsoft Azure (Microsoft Azure Resource Manager);
Личный токен доступа к GitHub (GitHub Personal Access Token);
Машина (Machine);
Платформа автоматизации Red Hat Ansbile (Red Hat Ansible Automation Platform);
Реестр контейнеров (Container Registry);
Сеть (Network);
Токен персонального доступа GitLab (GitLab Personal Access Token);
Токен доступа OpenShift или Kubernetes API (OpenShift or Kubernetes API Bearer Token);
Управление версиями (Source Control).
Примечание
По умолчанию при развертывании контроллера в нем создаются полномочия для доступа к Ansible Galaxy типа «Ansible Galaxy/Automation Hub». Контроллер позволяет добавлять собственные типы полномочий.
Также Astra Automation Controller позволяет создавать собственные типы полномочий.
API-токен Ansible Galaxy/Automation Hub#
Полномочия этого типа используются для доступа к Ansbile Galaxy или коллекциям, опубликованным в частном Automation Hub.
Для создания полномочий этого типа необходимо предоставить следующие данные:
токен доступа, создаваемый пользователем на сервере Galaxy;
адрес сервера Keykcloak для выдачи токена (при использовании SSO).
Centrify Vault Credential Provider Lookup#
Полномочия этого типа используются для доступа к системе управления секретами Centrify Vault Credential Provider.
CyberArk Central Credential Provider Lookup#
Полномочия этого типа используются для доступа к системе управления секретами CyberArk Central Credential Provider. Для использования данной интеграции требуется запущенный веб-сервис хранения секретов CyberArk Central Credential Provider.
Поддерживается защита подключения с помощью SSL.
CyberArk Conjur Secrets Manager Lookup#
Полномочия этого типа используются для доступа к системе управления секретами CyberArk Conjur Secrets Manager.
Google Compute Engine#
Полномочия этого типа используются для доступа к списку управляемых узлов в Google Compute Engine с реквизитами сервисной учетной записи.
Для создания полномочий этого типа необходимо предоставить следующие данные о сервисной учетной записи Google Compute Cloud:
адрес электронной почты;
закрытый ключ RSA, связанный с указанным адресом электронной почты.
Совет
Для автоматического заполнения реквизитов сервисной учетной записи Google Compute Cloud можно использовать файл в формате JSON. Пошаговые инструкции по созданию такого файла см. в документации Google Compute Cloud.
GPG Public Key#
Полномочия этого типа используются для проверки подписи содержимого, полученного из внешних источников.
HashiCorp Vault Secret Lookup#
Полномочия этого типа используются для доступа к системе управления секретами HashiCorp Vault.
HashiCorp Vault Signed SSH#
Полномочия этого типа используются для доступа к подписанным сертификатам HashiCorp Vault SSH.
Insights#
Полномочия этого типа используются для доступа к списку управляемых узлов в Red Hat Insights.
Microsoft Azure Key Vault#
Полномочия этого типа используются для доступа к списку управляемых узлов в Microsoft Azure Key Vault.
OpenStack#
Полномочия этого типа используются для доступа к списку управляемых узлов в OpenStack.
Поддерживается защита подключения с помощью SSL.
Red Hat Satellite 6#
Полномочия этого типа используются для доступа к списку управляемых узлов в Red Hat Satellite 6.
Thycotic DevOps Secrets Vault#
Полномочия этого типа используются для доступа к системе управления секретами Thycotic DevOps Secrets Vault.
Thycotic Secret Server#
Полномочия этого типа используются для доступа к серверу секретов Thycotic Secret Server.
Vault#
Полномочия этого типа используются для доступа к списку управляемых узлов в Ansbile Vault.
Если необходим доступ к нескольким хранилищам, необходимо предоставить соответствующие им идентификаторы Vault.
VMware vCenter#
Полномочия этого типа используются для доступа к списку управляемых узлов в VMware vCenter.
Web-сервисы Amazon#
Полномочия этого типа используются для доступа к списку управляемых узлов в Web-сервисах Amazon.
Для создания полномочий этого типа необходимо предоставить следующие данные Web-сервисов Amazon:
публичный ключ доступа;
секретный ключ.
Виртуализация Red Hat#
Полномочия этого типа используются для доступа к расширению (plug-in) инвентаря oVirt4.py
, которым управляют с помощью Виртуализации Red Hat.
Диспетчер ресурсов Microsoft Azure#
Полномочия этого типа используются для доступа к списку управляемых узлов в Диспетчере ресурсов Microsoft Azure.
Личный токен доступа к GitHub#
Полномочия этого типа используются для доступа к GitHub с помощью личного токена доступа. Данный тип полномочий позволяет устанавливать API-соединение с GitHub для использования в заданиях и публикации обновлений состояния.
Пошаговые инструкции по созданию токена см. в документации GitHub.
Машина#
Полномочия этого типа используются для доступа к управляемым узлам по SSH. Поддерживается аутентификация по паролю и ключам SSH, созданным с применением различных алгоритмов.
При настройке полномочия можно выбрать один из следующих способов повышения привилегий:
sudo;
su;
pbrun;
pfexec;
dzdo;
pmrun;
runas;
enable;
doas;
ksu;
machinectl;
sesu.
Использование этой настройки эквивалентно выполнению команды ansible-playbook
с параметром --become-method=<method>
.
Платформа автоматизации Red Hat Ansbile#
Полномочия этого типа используются для доступа к Платформе автоматизации Red Hat Ansbile.
Поддерживается защита подключения с помощью SSL.
Реестр контейнеров#
Полномочия этого типа используются для доступа к различным хранилищам образов, например:
Поддерживается защита подключения с помощью SSL.
Сеть#
Полномочия этого типа используются для управления сетевым оборудованием. К настоящему времени, согласно документации Ansible, он устарел и не рекомендован к использованию. Вместо него рекомендуется использовать тип «Машина».
Токен персонального доступа GitLab#
Полномочия этого типа используются для доступа к GitLab с помощью личного токена доступа. Данный тип полномочий позволяет устанавливать API-соединение с GitLab для использования в заданиях и публикации обновлений состояния с помощью webhook.
Пошаговые инструкции по созданию токена см. в документации GitLab.
Токен доступа для OpenShift или Kubernetes API#
Полномочия этого типа используются для создания групп с доступом в контейнеры OpenShift или Kubernetes.
Для обеспечения доступа необходимо предоставить следующие данные:
адрес точки доступа OpenShift или Kubernetes API для аутентификации;
токен.
Поддерживается защита подключения с помощью SSL.
Управление источниками кода#
Полномочия этого типа используются для доступа к системам контроля версий на основе Git и Subversion.
Поддерживается доступ с помощью ключа SSH или с использованием имени пользователя и пароля.
Создание типа полномочий#
Astra Automation Controller поддерживает создание дополнительных типов полномочий, которые можно использовать в заданиях на основе шаблонов и заданиях обновления инвентаря.
Поддерживаются следующие способы передачи данных идентификации в среду исполнения:
переменные окружения;
дополнительные переменные Ansible;
шаблонизация на основе файлов (генерация файлов в форматах CONF и INI).
Создание типа полномочий имеет следующие особенности:
Контроллер не проверяет наличие коллизий названий переменных окружения, дополнительных переменных Ansible и пространств имен.
Следует избегать использования названий переменных, начинающихся с
ANSIBLE_
, поскольку они зарезервированы.
Настройка входных данных#
Входные данные используются при создании экземпляра полномочий указанного типа.
Типовая конфигурация входных данных состоит из обязательного блока fields
и опционального блока required
.
В блоке fields
содержится список записей с описанием полей ввода данных полномочия.
Запись может состоять из следующих полей:
id
– идентификатор поля. Значение, указанное в этом поле, используется для передачи данных в инжектор.type
– тип поля.Поддерживаются следующие значения:
string
– строка;boolean
– логическое.
default
– значение по умолчанию.format
– дополнительная проверка корректности значения, указанного в поле.Поддерживаются следующие значения:
ssh_private_key
– приватный ключ SSH;url
– URI.
label
– название поля при заполнении сведений о полномочии через графический интерфейс.help_text
– подсказка, которая выводится рядом с полем при заполнении сведений о полномочии через графический интерфейс.secret
– если равноtrue
, вводимое значение является секретом.Для защиты ввода используется маскировка символов, для защиты значения в таблице базы данных контроллера – защитное преобразование.
multiline
– логическое значение для полей типаstring
. При значенииtrue
поле позволяет вводить многострочный текст.choices
– массив доступных значений для полей типаstring
. Если массив не пуст, при заполнении поля через графический интерфейс значение нужно выбрать из списка, а не вводить вручную.
В блоке required
содержится список идентификаторов полей, обязательных для заполнения.
Конфигурация инжектора#
Настройки инжектора определяют порядок передачи данных полномочия в среду исполнения.
Для доступа к значению, полученному из входных данных, следует в двойных фигурных скобках указать идентификатор входных данных, например:
---
file:
template: '[credentials]\nusername={{ username }}\npassword={{ password }}'
env:
API_URL: '{{ api_url }}'
AUTH_DATA_FILE: '{{ tower.filename }}'
extra_vars:
auth_token: '{{ auth_token }}'
Типовая конфигурация инжектора может содержать следующие блоки:
file
– шаблон, на основе которого генерируется содержимое временного файла.Имя файла генерируется случайным образом. Оно хранится в переменной Ansible
tower.filename
.Если используется несколько полей для загрузки файлов, их следует описать в отдельных переменных, названия которых начинаются со слова
template.
. Для получения имени файла следует обратиться к соответствующему значению словаряtower.filename
, например:--- file: template.cert_file: '{{ tls_cert }}' template.key_file: '{{ tls_key }}' env: TLS_CERT_FILE_NAME: '{{ tower.filename.cert_file }}' TLS_KEY_FILE_NAME: '{{ tower.filename.key_file }}'
Здесь для хранения сертификата и соответствующего ему ключа создаются два временных файла, имена которых сохраняются в переменных
tower.filename.cert_file
иtower.filename.key_file
соответственно.env
– список названий переменных окружения и соответствующих им значений.extra_vars
– список названий дополнительных переменных Ansible и соответствующих им значений.Подробности о порядке разрешения значений переменных см. в документе Переменные.
Примеры#
Пусть для работы с некоторым сервисом необходимы следующие учетные данные:
имя пользователя;
токен;
уровень доступа (может принимать значения
low
,medium
иhigh
);приватный ключ SSH для защиты соединения.
Пусть для получения данных используется форма со следующими полями:
Параметр |
Идентификатор |
Тип |
Обязательное |
Имя пользователя |
|
|
Да |
Токен |
|
|
Да |
Уровень доступа |
|
|
Да |
Ключ SSH |
|
|
Нет |
В этом случае настройки входных данных могут иметь следующий вид:
---
fields:
- id: username
type: string
label: Username
- id: token
type: string
label: Token
help_text: A string of 32 charactes long.
- id: access_level
type: string
label: Access level
choices:
- low
- medium
- high
default: low
required:
- username
- token
- access_level
Пусть в среду исполнения данные передаются следующими способами:
Имя пользователя и токен – в переменных окружения
API_USERNAME
иAPI_TOKEN
соответственно. При этом строка для передачи токена должна иметь следующий вид:Bearer-Token: <token>
Уровень доступа – в дополнительной переменной Ansible
api_access_level
.Приватный ключ SSH – в виде файла.
Имя файла формируется автоматически и передается через переменную окружения
API_PRIVATE_SSH_KEY
, а содержимое формируется на основе входных данных с идентификаторомssh_key
.
В этом случае конфигурация инжектора выглядит следующим образом:
---
env:
API_USERNAME: '{{ username }}'
API_TOKEN: 'Bearer-Token:: {{ token }}'
API_PRIVATE_SSH_KEY: '{{ tower.filename.private_ssh_key }}'
extra_vars:
api_access_level: '{{ access_level }}'
file:
template.private_ssh_key: '{{ ssh_key }}'
Примечание
Два двоеточия в строке с параметром API_TOKEN
необходимы для соблюдения корректности синтаксиса YAML.
При передаче данных строка будет преобразована в указанный выше формат с одним двоеточием.
Форма для создания полномочий этого типа имеет следующий вид: