我对使用Azure实例元数据服务的Azure系统托管身份的内部工作的理解是,每个VM都有使用Azure AD创建的自己的唯一服务主体以及与之关联的唯一的一对公私钥对。
私钥在VM上维护,用于对访问令牌进行签名,该访问令牌可以使用Azure实例元数据服务上的/ identity API终结点获取。
此VM实例的唯一身份是仅与该私钥相关联还是还有更多?如果错误的参与者能够将私钥复制到另一个VM,那么错误的参与者可以模拟给定的VM吗?还是生成此访问令牌的不仅仅是私钥?
答案 0 :(得分:1)
我在这里做一个总结:@Thomas提供了详细而专业的解释。如您所见,基于How MSI works和how to get access token via managed identity on Azure VM,获取访问令牌的整个过程是一个function strLetterCount(word) {
let results = {};
for (let i = 0; i < word.length; i++) {
let c = word.charAt(i)
results[c] = (results[c] || 0) + 1;
}
let r = '';
for (let c in results)
r += c + results[c];
return r;
}
console.log(strLetterCount("coconut")); // "c2o2n1u1t1"
函数,没有提供私钥或秘密,因此不必担心有人窃取它们并在其他VM上使用它们。正如@Thomas所说:
只有您的VM可以向IMDS请求令牌
如果您的问题已解决,请标记此帖子以关闭此案例,谢谢!