Spec-Zone.ru › Ansible 2.11

community.crypto.openssh_cert – Генерация сертификатов OpenSSH хоста или пользователя.

Примечание

Этот плагин входит в коллекцию community.crypto (версия 1.4.0).

Для его установки используйте: ansible-galaxy collection install community.crypto.

Для использования в плейбуке укажите: community.crypto.openssh_cert.

  • Описание
  • Требования
  • Параметры
  • Примеры
  • Возвращаемые значения

Описание

  • Генерация и перегенерация сертификатов OpenSSH хоста или пользователя.

Требования

Ниже приведены требования к хосту, на котором выполняется данный модуль.

  • ssh-keygen

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
строка
добавлен в 2.3 ansible.builtin
Атрибуты, которые должны иметь результирующий файл или каталог.
Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и при отображении командой lsattr.
Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.

псевдонимы: attr
force
логическое
    Варианты:
  • нет ←
  • да
Сертификат должен быть перегенерирован, даже если он уже существует и действителен.
group
строка
Имя группы, которой должен принадлежать файл/каталог, как если бы это было передано команде chown.
identifier
строка
Укажите идентификатор ключа при подписании открытого ключа. Идентификатор, который регистрируется сервером, когда сертификат используется для аутентификации.
mode
сырой
Разрешения, которые должен иметь результирующий файл или каталог.
Для тех, кто привык к команде /usr/bin/chmod, помните, что режимы фактически представляют собой восьмеричные числа. Вы должны либо добавить ведущую нуль, чтобы парсер YAML Ansible понимал, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и смог выполнить преобразование из строки в число.
Если Ansible получит число без выполнения одного из этих правил, в результате получится десятичное число, что приведёт к непредсказуемым последствиям.
Начиная с Ansible 1.8, режим может быть указан в символическом формате (например, u+rwx или u=rw,g=r,o=r).
Если mode не указан, и целевой файл не существует, по умолчанию будет использоваться значение umask на системе при установке режима для вновь создаваемого файла.
Если mode не указан, и целевой файл существует, будет использован режим существующего файла.
Указание mode — лучший способ гарантировать, что файлы будут созданы с правильными разрешениями. См. CVE-2020-1736 для получения дополнительной информации.
options
список / элементы=строка
Укажите параметры сертификата при подписании ключа. Валидные параметры для пользовательских сертификатов:
clear: Очистка всех включенных разрешений. Это полезно для очистки набора разрешений по умолчанию, чтобы разрешения можно было добавлять по отдельности.
force-command=command: Вынуждает выполнение команды вместо любой оболочки или команды, указанной пользователем, когда сертификат используется для аутентификации.
no-agent-forwarding: Отключение переадресации ssh-agent (разрешено по умолчанию).
no-port-forwarding: Отключение переадресации портов (разрешено по умолчанию).
no-pty: Отключение выделения PTY (разрешено по умолчанию).
no-user-rc: Отключение выполнения ~/.ssh/rc sshd (разрешено по умолчанию).
no-x11-forwarding: Отключение переадресации X11 (разрешено по умолчанию)
permit-agent-forwarding: Разрешение переадресации ssh-agent.
permit-port-forwarding: Разрешение переадресации портов.
permit-pty: Разрешение выделения PTY.
permit-user-rc: Разрешение выполнения ~/.ssh/rc sshd.
permit-x11-forwarding: Разрешение переадресации X11.
source-address=address_list: Ограничение адресов источника, для которых сертификат считается действительным. address_list — это список адресов/масок сети через запятую в формате CIDR.
В настоящее время для ключей хостов нет действительных параметров.
owner
строка
Имя пользователя, которому должен принадлежать файл/каталог, как если бы это было передано команде chown.
path
путь / обязательно
Путь к файлу, содержащему сертификат.
pkcs11_provider
строка
добавлен в 1.1.0 community.crypto
Для использования ключа подписи, находящегося на токене PKCS#11, установите это значение в имя (или полный путь) разделяемой библиотеки для использования с токеном. Обычно libpkcs11.so.
Если это значение установлено, signing_key должен указывать на файл, содержащий открытый ключ ЦС.
principals
список / элементы=строка
Сертификаты могут быть ограничены по действию для набора имен основных субъектов (пользователь/хост). По умолчанию сгенерированные сертификаты действительны для всех пользователей или хостов.
public_key
путь
Путь к открытому ключу, который будет подписан ключом подписи для генерации сертификата.
Необходимо, если state равно present.
selevel
строка
Часть уровня SELinux контекста файла.
Это атрибут MLS/MCS, иногда известный как range.
Если установлено значение _default, будет использоваться часть политики level, если она доступна.
serial_number
целое число
Укажите серийный номер сертификата. Серийный номер регистрируется сервером, когда сертификат используется для аутентификации. Серийный номер сертификата может использоваться в списке отозванных ключей. Серийный номер можно опустить для проверок, но необходимо указать его снова для нового сертификата. Примечание: значение по умолчанию, установленное ssh-keygen, равно 0.
serole
строка
Часть роли контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики role, если она доступна.
setype
строка
Часть типа контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики type, если она доступна.
seuser
строка
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, где это применимо.
Если установлено значение _default, будет использоваться часть политики user, если она доступна.
signing_key
путь
Путь к закрытому открытому ключу openssh, который используется для подписи открытого ключа для генерации сертификата.
Если закрытый ключ находится на токене PKCS#11 (pkcs11_provider), установите это значение в путь к открытому ключу вместо него.
Необходимо, если state равно present.
state
строка
    Варианты:
  • текущий ←
  • отсутствующий
Определяет, должен ли существовать сертификат хоста или пользователя, и предпринимаются ли действия, если состояние отличается от указанного.
type
строка
    Варианты:
  • хост
  • пользователь
Определяет, должен ли модуль сгенерировать сертификат хоста или пользователя.
Необходимо, если state равно present.
unsafe_writes
логическое
добавлен в 2.2 ansible.builtin
    Варианты:
  • нет ←
  • да
Влияние на использование атомарной операции для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настраиваются или просто работают некорректно, что препятствует этому. Примером является файлы, смонтированные в Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible переключаться на небезопасные методы обновления файлов при сбое атомарных операций (хотя он не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
use_agent
логическое
добавлен в 1.3.0 community.crypto
    Варианты:
  • нет ←
  • да
ssh-keygen должен использовать ключ ЦС, находящийся в ssh-agent.
valid_at
строка
Проверка, действителен ли сертификат в определенный момент времени. Если нет, сертификат будет перегенерирован. Время всегда интерпретируется как UTC. В основном используется с относительными временными метками для valid_from и/или valid_to. Обратите внимание, что если используется относительное время, этот модуль не является идемпотентным.
valid_from
строка
Момент времени, начиная с которого сертификат действителен. Время можно указать либо как относительное время, либо как абсолютную временную метку. Время всегда интерпретируется как UTC. Допустимые форматы: [+-]timespec | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS | YYYY-MM-DD HH:MM:SS | always где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h. Обратите внимание, что если используется относительное время, этот модуль не является идемпотентным.
Необходимо, если state равно present.
valid_to
строка
Момент времени, до которого сертификат действителен. Время можно указать либо как относительное время, либо как абсолютную временную метку. Время всегда интерпретируется как UTC. Допустимые форматы: [+-]timespec | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS | YYYY-MM-DD HH:MM:SS | forever где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h. Обратите внимание, что если используется относительное время, этот модуль не является идемпотентным.
Необходимо, если state равно present.

Примеры

- name: Generate an OpenSSH user certificate that is valid forever and for all users
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever

# Generate an OpenSSH host certificate that is valid for 32 weeks from now and will be regenerated
# if it is valid for less than 2 weeks from the time the module is being run
- name: Generate an OpenSSH host certificate with valid_from, valid_to and valid_at parameters
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: +0s
    valid_to: +32w
    valid_at: +2w

- name: Generate an OpenSSH host certificate that is valid forever and only for example.com and examplehost
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever
    principals:
        - example.com
        - examplehost

- name: Generate an OpenSSH host Certificate that is valid from 21.1.2001 to 21.1.2019
  community.crypto.openssh_cert:
    type: host
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: "2001-01-21"
    valid_to: "2019-01-21"

- name: Generate an OpenSSH user Certificate with clear and force-command option
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/private_key
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever
    options:
        - "clear"
        - "force-command=/tmp/bla/foo"

- name: Generate an OpenSSH user certificate using a PKCS#11 token
  community.crypto.openssh_cert:
    type: user
    signing_key: /path/to/ca_public_key.pub
    pkcs11_provider: libpkcs11.so
    public_key: /path/to/public_key.pub
    path: /path/to/certificate
    valid_from: always
    valid_to: forever

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:

Ключ Возвращаемое Описание
filename
string
изменён или успех
путь к сертификату

Пример:
/tmp/certificate-cert.pub
info
list / elements=string
изменение или успех
Информация о сертификате. Вывод ssh-keygen -L -f.

type
string
изменён или успех
тип сертификата (хост или пользователь)

Пример:
хост


Авторы

  • David Kainz (@lolcube)

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/crypto/openssh_cert_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API