community.general.tss 查找 – 从 Thycotic Secret Server 获取密钥

注意

此查找插件是 community.general 集合(版本 10.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此查找插件,请参阅 要求 了解详细信息。

要在剧本中使用它,请指定:community.general.tss

community.general 1.0.0 中的新增功能

概要

  • 使用 Thycotic Secret Server Python SDK,通过使用 usernamepasswordbase_url 上的 REST API 上使用令牌身份验证从 Secret Server 获取密钥。

  • 当使用自签名证书时,可以将环境变量 REQUESTS_CA_BUNDLE 设置为包含受信任证书的文件(以 .pem 格式)。

  • 例如,export REQUESTS_CA_BUNDLE='/etc/ssl/certs/ca-bundle.trust.crt'

要求

在执行此查找的本地控制器节点上需要以下要求。

术语

参数

注释

术语

列表 / 元素=整数 / 必需

密钥的整数 ID。

关键字参数

这描述了查找的关键字参数。这些是以下示例中的值 key1=value1key2=value2 等:lookup('community.general.tss', key1=value1, key2=value2, ...)query('community.general.tss', key1=value1, key2=value2, ...)

参数

注释

api_path_uri

字符串

要附加到基本 URL 以形成有效 REST API 请求的路径。

默认值: "/api/v1"

配置

base_url

字符串 / 必需

服务器的基本 URL,例如 https://127.0.0.1/SecretServer

配置

  • INI 条目

    [tss_lookup]
    base_url = VALUE
    
  • 环境变量:TSS_BASE_URL

domain

字符串

在 community.general 3.6.0 中添加

用于请求 OAuth2 访问授权的域。

当未提供 token 时可选。

需要 python-tss-sdk 版本 1.0.0 或更高版本。

默认值: ""

配置

  • INI 条目

    [tss_lookup]
    domain = ""
    
  • 环境变量:TSS_DOMAIN

fetch_attachments

布尔值

在 community.general 7.0.0 中添加

一个布尔标志,指示是否将下载附加文件。

只有在提供了 file_download_path 时才会发生下载。

选项

  • false

  • true

fetch_secret_ids_from_folder

布尔值

在 community.general 7.1.0 中添加

一个布尔标志,指示是否通过文件夹 ID 获取文件夹中的密钥 ID。

true,则这些术语将被视为文件夹 ID。否则(默认),它们被视为密钥 ID。

选项

  • false

  • true

file_download_path

路径

在 community.general 7.0.0 中添加

指示文件附件的下载位置。

password

字符串

与提供的用户名关联的密码。

当未提供 token 时必需。

配置

  • INI 条目

    [tss_lookup]
    password = VALUE
    
  • 环境变量:TSS_PASSWORD

secret_path

字符串

在 community.general 7.2.0 中添加

当密钥 ID 设置为 0 时,指示密钥的完整路径,包括文件夹和密钥名称。

token

字符串

在 community.general 3.7.0 中添加

Thycotic 授权者的现有令牌。

如果提供,则不需要 usernamepassword

需要 python-tss-sdk 版本 1.0.0 或更高版本。

配置

  • INI 条目

    [tss_lookup]
    token = VALUE
    
  • 环境变量:TSS_TOKEN

token_path_uri

字符串

要附加到基本 URL 以形成有效的 OAuth2 访问授权请求的路径。

默认值: "/oauth2/token"

配置

username

字符串

用于请求 OAuth2 访问授权的用户名。

配置

  • INI 条目

    [tss_lookup]
    username = VALUE
    
  • 环境变量:TSS_USERNAME

说明

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须列在关键字参数之前:lookup('community.general.tss', term1, term2, key1=value1, key2=value2)query('community.general.tss', term1, term2, key1=value1, key2=value2)

示例

- hosts: localhost
  vars:
      secret: >-
        {{
            lookup(
                'community.general.tss',
                102,
                base_url='https://secretserver.domain.com/SecretServer/',
                username='user.name',
                password='password'
            )
        }}
  tasks:
      - ansible.builtin.debug:
          msg: >
            the password is {{
              (secret['items']
                | items2dict(key_name='slug',
                             value_name='itemValue'))['password']
            }}

- hosts: localhost
  vars:
      secret: >-
        {{
            lookup(
                'community.general.tss',
                102,
                base_url='https://secretserver.domain.com/SecretServer/',
                username='user.name',
                password='password',
                domain='domain'
            )
        }}
  tasks:
      - ansible.builtin.debug:
          msg: >
            the password is {{
              (secret['items']
                | items2dict(key_name='slug',
                             value_name='itemValue'))['password']
            }}

- hosts: localhost
  vars:
      secret_password: >-
        {{
            ((lookup(
                'community.general.tss',
                102,
                base_url='https://secretserver.domain.com/SecretServer/',
                token='thycotic_access_token',
            )  | from_json).get('items') | items2dict(key_name='slug', value_name='itemValue'))['password']
        }}
  tasks:
      - ansible.builtin.debug:
          msg: the password is {{ secret_password }}

# Private key stores into certificate file which is attached with secret.
# If fetch_attachments=True then private key file will be download on specified path
# and file content will display in debug message.
- hosts: localhost
  vars:
      secret: >-
        {{
            lookup(
                'community.general.tss',
                102,
                fetch_attachments=True,
                file_download_path='/home/certs',
                base_url='https://secretserver.domain.com/SecretServer/',
                token='thycotic_access_token'
            )
        }}
  tasks:
    - ansible.builtin.debug:
        msg: >
          the private key is {{
            (secret['items']
              | items2dict(key_name='slug',
                           value_name='itemValue'))['private-key']
          }}

# If fetch_secret_ids_from_folder=true then secret IDs are in a folder is fetched based on folder ID
- hosts: localhost
  vars:
      secret: >-
        {{
            lookup(
                'community.general.tss',
                102,
                fetch_secret_ids_from_folder=true,
                base_url='https://secretserver.domain.com/SecretServer/',
                token='thycotic_access_token'
            )
        }}
  tasks:
    - ansible.builtin.debug:
        msg: >
          the secret id's are {{
              secret
          }}

# If secret ID is 0 and secret_path has value then secret is fetched by secret path
- hosts: localhost
  vars:
      secret: >-
        {{
            lookup(
                'community.general.tss',
                0,
                secret_path='\folderName\secretName'
                base_url='https://secretserver.domain.com/SecretServer/',
                username='user.name',
                password='password'
            )
        }}
  tasks:
      - ansible.builtin.debug:
          msg: >
            the password is {{
              (secret['items']
                | items2dict(key_name='slug',
                             value_name='itemValue'))['password']
            }}

返回值

描述

返回值

列表 / 元素=字典

GET /secrets/{id} 的 JSON 响应。

请参阅 https://updates.thycotic.net/secretserver/restapiguide/TokenAuth/#operation–secrets–id–get

返回值: 成功

作者

  • Adam Migus (@amigus)

提示

每个条目类型的配置条目都具有从低到高的优先级顺序。 例如,列表中较低的变量将覆盖较高的变量。