Skip to content

本文为 SPIRE 官方文档 plugin_agent_nodeattestor_azure_imds 的中文译本,以英文原文为准。 🔗 穿越源码分析:Agent 详解 · NodeAttestor

Agent 插件:NodeAttestor "azure_imds"

必须与服务端 azure_imds 插件配合使用

azure_imds 插件利用 Azure 实例元数据服务(Instance Metadata Service,IMDS)认证运行在 Microsoft Azure 中的节点。Agent 节点会与 Server 进行一次挑战-响应(challenge-response)流程:Agent 先发送一份初始载荷(payload),从 Server 接收一个包含随机数(nonce)的挑战,使用该 nonce 从 Azure 获取一份 IMDS 认证文档(attested document),再从 Azure IMDS 获取计算元数据(compute metadata,以便在适用时获得 VM 规模集 [VM Scale Set] 的名称),然后将该认证文档连同元数据(租户域名 tenant domain 以及可选的 VM Scale Set 名称)打包,作为挑战响应发回给 Server。Server 会校验这份已签名的认证文档,并从中提取订阅 ID(Subscription ID)和虚拟机 ID(VM ID)以构成 Agent 的 SPIFFE ID。该 SPIFFE ID 形如:

xml
spiffe://<trust_domain>/spire/agent/azure_imds/<tenant_id>/<subscription_id>/<vm_id>

Agent 必须运行在 Azure 中的虚拟机(VM)或 VM 规模集(VM Scale Set)内,才能使用这种节点认证方式。

配置项是否必填说明默认值
tenant_domain必填用于构成 Agent SPIFFE ID 的租户域名(tenant domain)。Server 会拒绝其无法识别域名的租户N/A

一个示例配置:

hcl
    NodeAttestor "azure_imds" {
        plugin_data {
            tenant_domain = "example.com"
        }
    }