community.general.keycloak_authz_permission 模块 – 通过 Keycloak API 管理 Keycloak 客户端授权权限
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.general。
要在 playbook 中使用它,请指定: community.general.keycloak_authz_permission。
community.general 7.2.0 中的新增功能
概要
- 此模块允许通过 Keycloak REST API 管理 Keycloak 客户端授权权限。只有在客户端启用了授权的情况下,授权权限才可用。 
- 授权权限的 JSON 路径和有效负载有一些特殊之处。特别是 POST 和 PUT 操作针对的是权限端点,而 GET 请求则指向策略端点。更有趣的是,GET 请求的 JSON 响应返回的数据格式与 POST 和 PUT 请求所期望的格式不同。最终结果是无法检测到对策略、范围或资源等内容的更改——至少在没有大量额外 API 调用的情况下是无法检测到的。因此,此模块始终更新授权权限,而不是尝试确定是否确实需要更改。 
- 此模块需要通过 OpenID Connect 访问 REST API;连接的用户和使用的 Realm 必须具有必要的访问权限。在默认的 Keycloak 安装中,admin-cli 和 admin 用户都可以工作,单独的 Realm 定义(其范围根据您的需求进行调整)和拥有预期角色的用户也可以工作。 
- 模块选项的名称是 Keycloak 使用的 camelCase 选项的 snake_case 版本。授权服务的路径和有效负载尚未被 Keycloak 项目正式记录。https://www.puppeteers.net/blog/keycloak-authorization-services-rest-api-paths-and-payload/ 
参数
| 参数 | 注释 | 
|---|---|
| 用于向 API 进行身份验证的 OpenID Connect  默认值:  | |
| 与  | |
| Keycloak 实例的 URL。 | |
| 用于 API 访问身份验证的密码。 | |
| 用于 API 访问身份验证的 Keycloak Realm 名称。 | |
| 用于 API 访问身份验证的用户名。 | |
| 应该具有授权范围的 Keycloak 客户端的 clientId。 这通常是 Keycloak 客户端的可读名称。 | |
| 控制到 Keycloak API 的 HTTP 连接超时时间(以秒为单位)。 默认值:  | |
| 与此权限一起使用的决策策略。 选项 
 | |
| 授权权限的描述。 | |
| 配置 HTTP User-Agent 头。 默认值:  | |
| 要创建的授权权限的名称。 | |
| 授权权限的类型。 在  在  选项 
 | |
| 要附加到此权限的策略名称。 默认值:  | |
| Keycloak 客户端所在的 Keycloak Realm 的名称。 | |
| 要附加到此权限的资源名称。 基于范围的权限只能包含一个资源。 基于资源的权限可以包含多个资源。 默认值:  | |
| 附加到此权限的范围名称。 基于资源的权限不能附加范围。 默认值:  | |
| 授权权限的状态。 在  在  选项 
 | |
| Keycloak API 的身份验证令牌。 | |
| 验证 TLS 证书(在生产环境中不要禁用此选项)。 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持:完全支持 | 可以在  | |
| 支持:不支持 | 在 diff 模式下,将返回有关更改内容(或可能需要在  | 
示例
- name: Manage scope-based Keycloak authorization permission
  community.general.keycloak_authz_permission:
    name: ScopePermission
    state: present
    description: Scope permission
    permission_type: scope
    scopes:
      - file:delete
    policies:
      - Default Policy
    client_id: myclient
    realm: myrealm
    auth_keycloak_url: https://:8080/auth
    auth_username: keycloak
    auth_password: keycloak
    auth_realm: master
- name: Manage resource-based Keycloak authorization permission
  community.general.keycloak_authz_permission:
    name: ResourcePermission
    state: present
    description: Resource permission
    permission_type: resource
    resources:
      - Default Resource
    policies:
      - Default Policy
    client_id: myclient
    realm: myrealm
    auth_keycloak_url: https://:8080/auth
    auth_username: keycloak
    auth_password: keycloak
    auth_realm: master
返回值
常见的返回值已在 此处 记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 模块执行后授权权限的表示。 返回:成功时 | |
| 关于采取了什么操作的消息。 返回:始终返回 | 
作者
- Samuli Seppänen (@mattock) 
