You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Key Vault Chef Cookbook Ruby代码各段含义咨询

Chef Azure Key Vault 密钥拉取Recipe逻辑说明

你疑惑的属性配置代码运行逻辑

你列出的3行代码核心作用是从Chef加密数据袋中拉取当前运行环境对应的Azure服务主体凭据,存入节点属性方便后续复用,拆分说明:

  • node.default['azurespn']['xxx']:Chef中node.default是节点属性的默认层级,存储的配置可以被同节点的其他Recipe、资源直接读取,优先级低于覆盖级属性
  • azurespn:是前面从Chef Data Bag(数据袋,Chef用来存储全局共享敏感数据的组件,一般会加密保存凭据类内容)读取到的凭据集合对象
  • node.environment:Chef节点的运行环境标签,一般会分为dev(开发)、test(测试)、prod(生产)等,用来隔离不同环境的配置
  • 整行逻辑:从凭据集合中,匹配当前节点的运行环境,取出对应环境的client_id(服务主体ID)、tenant_id(Azure租户ID)、client_secret(服务主体密钥)三个参数,存入节点属性,避免后续重复读取数据袋

完整Recipe逐行解释

# retrieve the secret stored in azure key vault using this chef recipe

注释说明当前Recipe的作用:从Azure Key Vault拉取存储的密钥

include_recipe 'microsoft_azure'

引入微软官方提供的microsoft_azure Chef cookbook,依赖该封装库提供的Azure接口交互能力,才能调用后续的vault_secret方法

azurespn = data_bag_item('azurespn', 'azurespnenv')

读取名为azurespn的Data Bag(数据袋)中,键为azurespnenv的条目,该条目里存储了所有环境对应的Azure服务主体凭据

(你疑惑的3行代码,逻辑见上一节说明)

spn = {
 'tenant_id' => "#{node['azurespn']['tenant_id']}",
 'client_id' => "#{node['azurespn']['client_id']}",
 'secret' => "#{node['azurespn']['client_secret']}"
}

将存储在节点属性中的三个凭据参数,整理为vault_secret方法要求的哈希表格式,作为调用Azure接口的身份校验参数

secret = vault_secret("#{node['windowsnode']['vault_name']}", "#{node['windowsnode']['secret']}", spn)

调用microsoft_azure库提供的vault_secret方法,传入三个参数:

  1. 要访问的Azure Key Vault名称(从节点属性node['windowsnode']['vault_name']读取)
  2. 要拉取的密钥名称(从节点属性node['windowsnode']['secret']读取)
  3. 前面整理好的服务主体身份凭据
    方法执行后会返回从Key Vault拉取到的明文密钥内容,赋值给secret变量

file 'c:/jenkins/secret' do
 action :create
 content "#{secret}"
 rights :full_control, 'Administrators', :one_level_deep => true
 end

调用Chef内置的file资源,在目标节点的c:/jenkins/路径下创建名为secret的文件:

  • 动作为create:文件不存在则创建,已存在则覆盖内容
  • 文件内容为拉取到的密钥明文
  • 权限配置为仅Administrators组拥有完全控制权限,权限不继承到子对象

Chef::Log.info("secret is '#{secret}' ")

将拉取到的密钥打印到Chef运行日志中,仅用于调试,生产环境建议删除该行避免敏感信息泄露


内容的提问来源于stack exchange,提问作者james chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:39:01