适用于 Chef 和 Puppet 的 PAM360 插件

Chef 是一款基于 Ruby 的配置管理工具,它提供了一种将基础设施作为代码(IAC)进行定义的方法,通过编写代码而非手动操作,使基础设施管理变得简单。Chef 采用客户端-服务器架构运行。 专为 Chef 开发的 PAM360 查询插件有助于提升组织 DevOps 管道中的安全性,并简化密码管理。导入 Chef 后,该插件可在 Chef 食谱运行期间直接从 PAM360 保险库中获取凭据和账户信息,从而无需使用硬编码凭据。安全获取凭据后,即可将其用于连接远程主机等操作。 存储在 PAM360 中的凭据会在保险库中定期轮换,并在相应的远程设备上同步更新;这确保了在调用 Chef 插件时,从保险库中检索到的始终是最新的密码或密钥。

Puppet 是一款基于 Ruby 的配置管理工具,与 Chef 类似。Puppet 同样采用客户端-服务器架构,其中主服务器和从服务器借助 SSL 通过安全的加密通道进行通信。Puppet 主要用于部署、配置和管理服务器。与 Chef 类似,当调用 PAM360 查询插件时,它可从 PAM360 的保险库中检索密码。

点击相应链接了解更多关于 ChefPuppet

阅读完本文后,您将了解以下内容:

  1. 为 Chef 配置 PAM360 插件
  2. 为 Puppet 配置 PAM360 插件
  3. 示例代码

1. 为 Chef 配置 PAM360 插件

以下是使用 PAM360 在 Chef 中配置和管理敏感凭据的步骤。

  1. 在 PAM360 中启用 Chef 集成
  2. 在 Chef 烹饪书中调用 PAM360 插件

1.1 在 PAM360 中启用 Chef 集成

  1. 登录 PAM360,导航至“管理”>>“DevSecOps”>>“CI/CD 平台”。
  2. 点击“Chef”选项。
  3. 在“CI/CD 平台集成”窗口中,点击“生成”以自动生成一个 AUTH 令牌。后续在 Chef 食谱中调用插件时将需要此令牌。配置完成后,PAM360 将使用此 AUTH 令牌对所有来自 Chef 的传入连接进行验证。
    chef-and-puppet
  4. 输入一个有效的 PAM360 用户名。PAM360 将把认证令牌映射到该用户账户,并用于从 PAM360 的保险库中检索所需的密码。一旦 PAM360 将认证令牌映射到该用户,该用户拥有或共享的资源也可通过此认证令牌进行访问。
  5. 点击“启用”。

    注意

    请确保您提供的 PAM360 用户账户具备此工作流所需的最低权限,即查看/检索 Chef 必须连接的资源密码的权限。该用户拥有或共享的资源密码是 Chef 在 PAM360 中唯一可访问的凭据。

1.2 在 Chef 中调用 PAM360 插件

请执行以下步骤,将 PAM360 的 Ruby gem 导入您的 Chef 食谱:

  1. 使用凭据初始化 PAM360 类对象。
    语法:gemData = PAM360Gem.new("主机名","认证令牌",路径,端口号)
    其中,
    1. 主机名:步骤 1.1中提供的用户所属的 PAM360 主机名。
    2. Auth Token:步骤 1.1生成的相应认证令牌。
    3. 路径:PAM360 服务器的 SSL 证书路径。
    4. 端口号: PAM360 服务器使用的端口号 。仅当所用端口不是 PAM360 的默认端口 8282 时,才需指定此项。
  2. 以下是将 PAM360 插件集成到 Chef Cookbook 中的方法:
    gemData.getAccountPassword("资源名称","账户名称")
    此方法将账户密码作为字符串返回。
    gemData.getAccountDetails("资源名称","账户名称")
    此方法将资源和账户详细信息以 JSON 格式的数组形式返回。

2. 为 Puppet 配置 PAM360 插件

以下是在 Puppet 中使用 PAM360 设置和管理敏感凭据的步骤。

  1. 在 PAM360 中启用 Puppet 集成
  2. 在 Puppet 中调用 PAM360 插件

2.1 在 PAM360 中启用 Puppet 集成

  1. 登录 PAM360,然后导航至“管理” >> “DevSecOps” >> “CI/CD 平台”。
  2. 点击“Puppet”选项。
  3. 在“CI/CD 平台集成”窗口中,点击“生成”以自动生成一个 AUTH 令牌。稍后在 Puppet 中调用插件时将需要此令牌。配置完成后,PAM360 将使用此 AUTH 令牌对来自 Puppet 的所有传入连接进行验证。
    chef-and-puppet.webp
  4. 输入一个有效的 PAM360 用户名。PAM360 将把认证令牌映射到该用户账户,并利用该令牌从 PAM360 的密钥库中检索所需的密码。一旦 PAM360 将认证令牌映射到该用户,该用户拥有或共享的资源也可通过此认证令牌进行访问。
  5. 点击“启用”。

    注意

    请确保您提供的 PAM360 用户账户具备此工作流所需的最低权限,即查看/检索 Puppet 必须连接的资源密码的权限。该用户拥有或共享的资源密码是 Puppet 在 PAM360 中唯一可访问的凭据。

2.2 在 Puppet 中调用 PAM360 插件

通过执行以下步骤,将 PAM360 的 Ruby gem 导入 Puppet:

  1. 使用凭据初始化 PAM360 类对象。
    语法:gemData = PAM360Gem.new("主机名","认证令牌",路径,端口号)
    其中,
    1. 主机名:该账户的 PAM360 主机名,其用户名已在 步骤 2.1中提供的用户所属的 PAM360 主机名。
    2. Auth Token: 步骤 2.1生成的相应认证令牌。
    3. 路径:PAM360 服务器的 SSL 证书路径。
    4. 端口号: 您的 PAM360 服务器使用的端口号 。仅当所用端口不是 PAM360 的默认端口 8282 时,才需指定此项。
  2. 以下方法适用于 Puppet 以调用 PAM360 插件:
    getAccountPassword(resourceName,AccountName)
    此方法将账户密码作为字符串返回。
    getAccountDetails(resourceName,AccountName)
    此方法将资源和账户详细信息以 JSON 格式的数组形式返回。

3. 示例代码

3.1 使用 PAM360 插件获取资源和账户详细信息

以下是使用 PAM360 插件获取账户详细信息的示例输入、输出代码及相应的响应示例。这些示例代码在 Chef 和 Puppet 中均适用。

示例输入

	gem 'PAM360_Gem'
    require 'PAM360_Gem' gemData = PAM360Gem.new("localhost","060CCDB8-71A0-4B8B-AC57-XXXXX","/home/local/user/servercertificate")
    # 资源名称 = Windows 账户名称 = useraccount1
	puts("资源详情\n")
    result = gemData.getAccountDetails("Windows","useraccount1"))
    puts(result[0])
    puts("账户详情\n")
    puts(result[1])

示例输出

	资源详情
    {"RESOURCE_ID":1,"RESOURCE_NAME":"Windows","RESOURCE_DESCRIPTION":"","OPERATINGSYSTEM":"Windows","DNSNAME":"","DEPARTMENT":"","LOCATION":"","RESOURCE_URL":""}
	账户详情
    {"ACCOUNTNAME":"useraccount1","PASSWORD":"Test@123"}

3.2 使用 PAM360 插件获取密码

以下是使用 PAM360 插件获取密码的示例输入和输出代码以及相应的示例响应。Chef 和 Puppet 的示例代码均相同。

示例输入

	gem 'PAM360_Gem'
    require 'PAM360_Gem'
    gemData = PAM360Gem.new("localhost","060CCDB8-71A0-4B8B-AC57-XXXXX","/home/local/user/servercertificate")
    # 资源名称 = Windows 账户名称 = useraccount1
	puts("accountpassword\n")
    puts(gemData.getAccountPassword("Windows ","useraccount1"

示例输出

	accountpassword
    Test@123




Top