适用于 Chef 和 Puppet 的 PAM360 插件
Chef 是一款基于 Ruby 的配置管理工具,它提供了一种将基础设施作为代码(IAC)进行定义的方法,通过编写代码而非手动操作,使基础设施管理变得简单。Chef 采用客户端-服务器架构运行。 专为 Chef 开发的 PAM360 查询插件有助于提升组织 DevOps 管道中的安全性,并简化密码管理。导入 Chef 后,该插件可在 Chef 食谱运行期间直接从 PAM360 保险库中获取凭据和账户信息,从而无需使用硬编码凭据。安全获取凭据后,即可将其用于连接远程主机等操作。 存储在 PAM360 中的凭据会在保险库中定期轮换,并在相应的远程设备上同步更新;这确保了在调用 Chef 插件时,从保险库中检索到的始终是最新的密码或密钥。
Puppet 是一款基于 Ruby 的配置管理工具,与 Chef 类似。Puppet 同样采用客户端-服务器架构,其中主服务器和从服务器借助 SSL 通过安全的加密通道进行通信。Puppet 主要用于部署、配置和管理服务器。与 Chef 类似,当调用 PAM360 查询插件时,它可从 PAM360 的保险库中检索密码。
阅读完本文后,您将了解以下内容:
1. 为 Chef 配置 PAM360 插件
以下是使用 PAM360 在 Chef 中配置和管理敏感凭据的步骤。
1.1 在 PAM360 中启用 Chef 集成
- 登录 PAM360,导航至“管理”>>“DevSecOps”>>“CI/CD 平台”。
- 点击“Chef”选项。
- 在“CI/CD 平台集成”窗口中,点击“生成”以自动生成一个 AUTH 令牌。后续在 Chef 食谱中调用插件时将需要此令牌。配置完成后,PAM360 将使用此 AUTH 令牌对所有来自 Chef 的传入连接进行验证。
- 输入一个有效的 PAM360 用户名。PAM360 将把认证令牌映射到该用户账户,并用于从 PAM360 的保险库中检索所需的密码。一旦 PAM360 将认证令牌映射到该用户,该用户拥有或共享的资源也可通过此认证令牌进行访问。
- 点击“启用”。
注意
请确保您提供的 PAM360 用户账户具备此工作流所需的最低权限,即查看/检索 Chef 必须连接的资源密码的权限。该用户拥有或共享的资源密码是 Chef 在 PAM360 中唯一可访问的凭据。
1.2 在 Chef 中调用 PAM360 插件
请执行以下步骤,将 PAM360 的 Ruby gem 导入您的 Chef 食谱:
- 使用凭据初始化 PAM360 类对象。
其中,语法:gemData = PAM360Gem.new("主机名","认证令牌",路径,端口号) - 以下是将 PAM360 插件集成到 Chef Cookbook 中的方法:
此方法将账户密码作为字符串返回。gemData.getAccountPassword("资源名称","账户名称")此方法将资源和账户详细信息以 JSON 格式的数组形式返回。gemData.getAccountDetails("资源名称","账户名称")
2. 为 Puppet 配置 PAM360 插件
以下是在 Puppet 中使用 PAM360 设置和管理敏感凭据的步骤。
2.1 在 PAM360 中启用 Puppet 集成
- 登录 PAM360,然后导航至“管理” >> “DevSecOps” >> “CI/CD 平台”。
- 点击“Puppet”选项。
- 在“CI/CD 平台集成”窗口中,点击“生成”以自动生成一个 AUTH 令牌。稍后在 Puppet 中调用插件时将需要此令牌。配置完成后,PAM360 将使用此 AUTH 令牌对来自 Puppet 的所有传入连接进行验证。
- 输入一个有效的 PAM360 用户名。PAM360 将把认证令牌映射到该用户账户,并利用该令牌从 PAM360 的密钥库中检索所需的密码。一旦 PAM360 将认证令牌映射到该用户,该用户拥有或共享的资源也可通过此认证令牌进行访问。
- 点击“启用”。
注意
请确保您提供的 PAM360 用户账户具备此工作流所需的最低权限,即查看/检索 Puppet 必须连接的资源密码的权限。该用户拥有或共享的资源密码是 Puppet 在 PAM360 中唯一可访问的凭据。
2.2 在 Puppet 中调用 PAM360 插件
通过执行以下步骤,将 PAM360 的 Ruby gem 导入 Puppet:
- 使用凭据初始化 PAM360 类对象。
其中,语法:gemData = PAM360Gem.new("主机名","认证令牌",路径,端口号) - 以下方法适用于 Puppet 以调用 PAM360 插件:
此方法将账户密码作为字符串返回。getAccountPassword(resourceName,AccountName)
此方法将资源和账户详细信息以 JSON 格式的数组形式返回。getAccountDetails(resourceName,AccountName)
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