【问题标题】:How to grant VM access to Key Vault in the same ARM template如何在同一 ARM 模板中授予 VM 对 Key Vault 的访问权限
【发布时间】:2020-01-20 15:11:19
【问题描述】:

我正在尝试创建一个能够配置 VM Key Vault 的 ARM 模板。 VM 标识设置为类型“SystemAssigned”。参见下面的代码 sn-p:

        ...
        "name": "[variables('VM1')]",
        "type": "Microsoft.Compute/virtualMachines",
        "identity": { 
            "type": "SystemAssigned"
        },
        "apiVersion": "2019-07-01",
        ...

我希望能够授予 VM 访问 Vault 中机密的权限。为此需要为accessPolicies 检索tenantIDObjectID。对于我正在使用的租户 ID:

"tenantId": "[subscription().tenantId]",

是否有类似的方法来引用在同一模板中创建的 VM 的 ObjectID?

谢谢!

【问题讨论】:

    标签: azure azure-virtual-machine azure-keyvault arm-template


    【解决方案1】:

    您需要使用引用来获取 VM 的托管服务标识的对象 ID(主体 ID),以分配对 KeyVault 的访问权限。 See the documentation here

    我看到 KeyVault 需要 TenantID 和对象 ID。

    您应该已经在模板中拥有的租户 "tenantId": "[subscription().tenantId]"

    ObjectID 是 PrincipalId,如链接的文档和下面的示例所示。

    {
        "apiVersion": "2017-09-01",
        "type": "Microsoft.Authorization/roleAssignments",
        "name": "[parameters('rbacGuid')]",
        "properties": {
            "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
            "principalId": "[reference(variables('vmResourceId'), '2017-12-01', 'Full').identity.principalId]",
            "scope": "[resourceGroup().id]"
        },
         "dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
        ]
    }
    

    【讨论】:

    • 有时命名可能会有点混乱,它最近被清理了一点,但在某一时刻,主体 ID、对象 ID 和应用程序 ID 或多或少可以互换使用。
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多