Модуль community.general.keycloak_realm_key — управление ключами realm Keycloak с помощью API Keycloak
Примечание
Этот модуль входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.general.
Чтобы использовать её в плейбуке, укажите: community.general.keycloak_realm_key.
Добавлено в community.general 7.5.0
Краткое описание
- Этот модуль позволяет управлять ключами realm Keycloak с помощью REST API Keycloak. Для него необходим доступ к REST API через OpenID Connect; подключающийся пользователь и используемый realm должны иметь необходимые права доступа. В конфигурации Keycloak по умолчанию подойдут admin-cli и пользователь-администратор, как и отдельное определение realm с областью действия, настроенной в соответствии с вашими потребностями, и пользователем с необходимыми ролями.
- Названия параметров модуля представляют собой версии в snake_case названий в camelCase, используемых в API Keycloak и его документации по адресу https://www.keycloak.org/docs-api/8.0/rest-api/index.html. Предусмотрены псевдонимы, поэтому можно использовать и варианты в camelCase.
- Этот модуль не может обнаружить изменения самого криптографического ключа после его импорта. Однако, если одновременно с криптографическим ключом изменяется какое-либо другое свойство, ключ также изменится как побочный эффект, поскольку полезная нагрузка JSON должна содержать закрытый ключ. Это можно считать как ошибкой, так и особенностью, поскольку альтернативой было бы всегда обновлять ключ realm вне зависимости от того, изменился он или нет.
Параметры
Параметр | Комментарии |
|---|---|
auth_client_id string | OpenID Connect По умолчанию: |
auth_client_secret string | Секрет клиента, используемый вместе с |
auth_keycloak_url псевдонимы: url string / обязательный | URL экземпляра Keycloak. |
auth_password псевдонимы: password string | Пароль для аутентификации при доступе к API. |
auth_realm string | Название realm Keycloak, используемого для аутентификации при доступе к API. |
auth_username псевдонимы: username string | Имя пользователя для аутентификации при доступе к API. |
config dictionary | Словарь с указанием ключа и его свойств. |
|
active boolean |
Активен или неактивен ли ключ. Не следует путать с состоянием ресурса Ansible, управляемого параметром Варианты:
|
|
algorithm string |
Алгоритм ключа. Значения Значения Значения Для Для Для Для Для Для Для Варианты:
|
|
certificate string |
Сертификат, подписанный закрытым ключом, в виде строки ASCII. Содержимое ключа должно соответствовать Чтобы Keycloak автоматически создал сертификат с помощью закрытого ключа, задайте пустую строку. Обязателен, если |
|
elliptic_curve string добавлено в community.general 12.4.0 |
Эллиптическая кривая для ключей ECDSA, ECDH или EdDSA. Для Для Варианты:
|
|
enabled boolean |
Включён или отключён ли ключ. Не следует путать с состоянием ресурса Ansible, управляемого параметром Варианты:
|
|
key_alias string добавлено в community.general 12.4.0 |
Псевдоним ключа в хранилище ключей. Обязателен, если |
|
key_password string добавлено в community.general 12.4.0 |
Пароль ключа в хранилище ключей. Если не указан, используется Применяется только к |
|
key_size integer добавлено в community.general 12.4.0 |
Размер создаваемого ключа в битах. Применяется только к Допустимые значения: |
|
keystore string добавлено в community.general 12.4.0 |
Путь к файлу Java Keystore в файловой системе сервера Keycloak. Обязателен, если |
|
keystore_password string добавлено в community.general 12.4.0 |
Пароль Java Keystore. Обязателен, если |
|
priority integer / обязательный |
Приоритет ключа. |
|
private_key string |
Закрытый ключ в виде строки ASCII. Содержимое ключа должно соответствовать Обратите внимание: модуль не может определить, отличается ли указанный закрытый ключ от закрытого ключа в текущем состоянии. Используйте Обязателен, если |
|
secret_size integer добавлено в community.general 12.4.0 |
Размер создаваемого секретного ключа в байтах. Применяется только к Допустимые значения: По умолчанию для HMAC используется |
connection_timeout integer добавлено в community.general 4.5.0 | Задаёт время ожидания HTTP-подключений к API Keycloak (в секундах). По умолчанию: |
force boolean | Принудительно обеспечивает требуемое состояние закрытого ключа и сертификата. Это не происходит автоматически, поскольку модуль не может определить текущее состояние закрытого ключа и, следовательно, не может инициировать обновление на основе фактического расхождения. При этом обновление закрытого ключа может произойти как побочный эффект других изменений, даже если force имеет значение false. Варианты:
|
http_agent string добавлено в community.general 5.4.0 | Настраивает HTTP-заголовок User-Agent. По умолчанию: |
name string / обязательный | Имя создаваемого ключа realm. |
parent_id string / обязательный | Значение parent_id ключа realm. На практике — имя realm. |
provider_id string | Название «идентификатора провайдера» для ключа. Значение Значение Значения Значения Варианты:
|
refresh_token string добавлено в community.general 10.3.0 | Токен обновления аутентификации для API Keycloak. |
state string | Состояние ключа realm Keycloak. При значении При значении Варианты:
|
token string добавлено в community.general 3.0.0 | Токен аутентификации для API Keycloak. |
update_password string добавлено в community.general 12.4.0 | Определяет, когда пароли передаются в Keycloak для провайдера
Это необходимо, поскольку Keycloak маскирует пароли в ответах API (возвращает Не влияет на провайдеры, отличные от Варианты:
|
validate_certs boolean | Проверять TLS-сертификаты (не отключайте эту проверку в рабочей среде). Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группа действий: community.general.keycloak добавлено в community.general 10.2.0 | Используйте |
check_mode | Поддержка: полная | Может выполняться в режиме |
diff_mode | Поддержка: частичная | В режиме diff возвращает сведения об изменениях (или о том, что, возможно, необходимо изменить в |
Примечания
Примечание
- Текущее значение закрытого ключа невозможно получить из Keycloak. Поэтому сравнить желаемое состояние с текущим нельзя.
- Если
config.certificateне задан явно, Keycloak создаёт его динамически. Поэтому сравнить текущее состояние сертификата с желаемым (которое может быть пустым) нельзя. - Из-за параметров закрытого ключа и сертификата модуль не является полностью идемпотентным. Можно использовать
force=true, чтобы принудительно обеспечить обновление, если известно, что закрытый ключ мог измениться. - Для автоматически создаваемых провайдеров (
rsa-generated,rsa-enc-generated,hmac-generated,aes-generated,ecdsa-generated,ecdh-generated,eddsa-generated) Keycloak автоматически управляет материалом ключей. Параметрыconfig.private_keyиconfig.certificateне используются. - Для провайдера
java-keystoreзначенияconfig.keystore_passwordиconfig.key_passwordвозвращаются Keycloak в замаскированном виде. Поэтому сравнить их текущее состояние с желаемым нельзя. Используйтеupdate_password=on_createдля идемпотентных плейбуков илиupdate_password=always(по умолчанию), если необходимо обеспечить обновление паролей.
Примеры
- name: Manage Keycloak realm key (certificate autogenerated by Keycloak)
community.general.keycloak_realm_key:
name: custom
state: present
parent_id: master
provider_id: rsa
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
private_key: "{{ private_key }}"
certificate: ""
enabled: true
active: true
priority: 120
algorithm: RS256
- name: Manage Keycloak realm key and certificate
community.general.keycloak_realm_key:
name: custom
state: present
parent_id: master
provider_id: rsa
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
private_key: "{{ private_key }}"
certificate: "{{ certificate }}"
enabled: true
active: true
priority: 120
algorithm: RS256
- name: Create HMAC signing key (auto-generated)
community.general.keycloak_realm_key:
name: hmac-custom
state: present
parent_id: master
provider_id: hmac-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
algorithm: HS256
secret_size: 64
- name: Create AES encryption key (auto-generated)
community.general.keycloak_realm_key:
name: aes-custom
state: present
parent_id: master
provider_id: aes-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
secret_size: 16
- name: Create ECDSA signing key (auto-generated)
community.general.keycloak_realm_key:
name: ecdsa-custom
state: present
parent_id: master
provider_id: ecdsa-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
algorithm: ES256
elliptic_curve: P-256
- name: Create RSA signing key (auto-generated)
community.general.keycloak_realm_key:
name: rsa-auto
state: present
parent_id: master
provider_id: rsa-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
algorithm: RS256
key_size: 2048
- name: Remove default HMAC key
community.general.keycloak_realm_key:
name: hmac-generated
state: absent
parent_id: myrealm
provider_id: hmac-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
priority: 100
- name: Create RSA encryption key (auto-generated)
community.general.keycloak_realm_key:
name: rsa-enc-auto
state: present
parent_id: master
provider_id: rsa-enc-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
algorithm: RSA-OAEP
key_size: 2048
- name: Create ECDH key exchange key (auto-generated)
community.general.keycloak_realm_key:
name: ecdh-custom
state: present
parent_id: master
provider_id: ecdh-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
algorithm: ECDH_ES
elliptic_curve: P-256
- name: Create EdDSA signing key (auto-generated)
community.general.keycloak_realm_key:
name: eddsa-custom
state: present
parent_id: master
provider_id: eddsa-generated
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
config:
enabled: true
active: true
priority: 100
elliptic_curve: Ed25519
- name: Import key from Java Keystore (always update passwords)
community.general.keycloak_realm_key:
name: jks-imported
state: present
parent_id: master
provider_id: java-keystore
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
# update_password: always is the default - passwords are always sent to Keycloak
config:
enabled: true
active: true
priority: 100
algorithm: RS256
keystore: /opt/keycloak/conf/keystore.jks
keystore_password: "{{ keystore_password }}"
key_alias: mykey
key_password: "{{ key_password }}"
- name: Import key from Java Keystore (idempotent - only set password on create)
community.general.keycloak_realm_key:
name: jks-idempotent
state: present
parent_id: master
provider_id: java-keystore
auth_keycloak_url: http://localhost:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
update_password: on_create # Only send passwords when creating, preserve existing on update
config:
enabled: true
active: true
priority: 100
algorithm: RS256
keystore: /opt/keycloak/conf/keystore.jks
keystore_password: "{{ keystore_password }}"
key_alias: mykey
key_password: "{{ key_password }}"
Возвращаемые значения
Общие возвращаемые значения описаны здесь, далее перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
end_state dictionary | Представление keycloak_realm_key после выполнения модуля. Возвращается: при успешном выполнении |
|
config dictionary |
Конфигурация ключа области. Возвращается: когда Пример: |
|
id string | |
|
key_info dictionary добавлено в community.general 12.4.0 |
Метаданные криптографического ключа, полученные из конечной точки ключей области. Возвращается только для поставщика Содержит идентификатор ключа (kid) и отпечаток сертификата, которые позволяют определить, изменился ли фактический криптографический ключ. Возвращается: когда |
|
certificate_fingerprint string |
Отпечаток SHA256 сертификата в шестнадцатеричном формате с разделителями-двокрапиями. Возвращается: при успешном выполнении Пример: |
|
kid string |
Идентификатор ключа (kid) — уникальный идентификатор криптографического ключа. Возвращается: при успешном выполнении Пример: |
|
status string |
Статус ключа (ACTIVE, PASSIVE, DISABLED). Возвращается: при успешном выполнении Пример: |
|
valid_to integer |
Время истечения срока действия сертификата в миллисекундах с начала эпохи. Возвращается: при успешном выполнении Пример: |
|
name string | |
|
parentId string | |
|
providerId string | |
|
providerType string |
Тип поставщика. Возвращается: когда |
msg string | Сообщение о выполненном действии. Возвращается: всегда |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/keycloak_realm_key_module.html