当前位置: 首页 > 知识库问答 >
问题:

Azure ARM模板-在不同资源组的KeyVault中创建KeyVault秘密

山疏珂
2023-03-14

我正在Azure中部署一个虚拟机。用户名和密码将自动创建,并在部署时作为参数传递。部署vm的资源组也作为参数传递,所以可以是任何参数。

我的Keyvault在一个特定的资源组中,vm的用户名和密码应该存储在这里。

"error": {
    "code": "ParentResourceNotFound",
    "message": "Can not perform requested operation on nested resource. Parent resource 'mykeyvault' not found."
  }
} undefined
{
      "type": "Microsoft.KeyVault/vaults/secrets",
      "name": "[concat(variables('keyVaultName'), '/', variables('AdminUsername'))]",
      "apiVersion": "2018-02-14",
      "properties": {
        "contentType": "Secret",
        "value": "[variables('AdminUsername')]"
      },
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
      ]
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "name": "[concat(variables('keyVaultName'), '/', parameters('VMName'),'-AdminPassword')]",
      "apiVersion": "2018-02-14",
      "properties": {
        "contentType": "Secret",
        "value": "[parameters('AdminPassword')]"
      },
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
      ]
    },

共有1个答案

扶文光
2023-03-14

这是因为ARM模板将资源部署到特定的资源组。如果KV位于不同的资源组中,则需要使用嵌套部署并以该资源组为目标,如下所示:

{
    "apiVersion": "2017-05-10",
    "name": "nestedTemplate",
    "type": "Microsoft.Resources/deployments",
    "resourceGroup": "[parameters('kvResourceGroup')]",
    "properties": {
        "mode": "Incremental",
        "template": {
            "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {},
            "variables": {},
            "resources": [
                {
                    "type": "Microsoft.KeyVault/vaults/secrets",
                    "name": "[concat(variables('keyVaultName'), '/', variables('AdminUsername'))]",
                    "apiVersion": "2018-02-14",
                    "properties": {
                        "contentType": "Secret",
                        "value": "[variables('AdminUsername')]"
                    },
                    "dependsOn": [
                        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
                    ]
                },
                {
                    "type": "Microsoft.KeyVault/vaults/secrets",
                    "name": "[concat(variables('keyVaultName'), '/', parameters('VMName'),'-AdminPassword')]",
                    "apiVersion": "2018-02-14",
                    "properties": {
                        "contentType": "Secret",
                        "value": "[parameters('AdminPassword')]"
                    },
                    "dependsOn": [
                        "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
                    ]
                }
            ]
        }
    }
},
 类似资料:
  • 这个引用目前扼杀了我的整个部署,说: “找不到指定得KeyVault'/subscriptions/[订阅id]/ResourceGroups/[父资源组]/Providers/Microsoft.KeyVault/Vaults/[my KeyVault]'.” 如果删除链接模板中的Keyvault引用,错误就会消失。

  • 我已经创建了服务主体,并授予了他对密钥库的所有权限。此外,我还在ARM模板中为密钥库启用了访问秘密。 使用powershell,我可以作为部署SP登录并检索秘密(证书)。 但是,在部署带有密钥存储库引用的ARM模板时,这不起作用。我得到以下错误:

  • 我想从天蓝色密钥库获取秘密。当我独立于主方法运行类时,它返回秘密,但当我在代码行future.get()处集成了这个相同的代码在servlet应用程序中;在这里它得到块,它不会像死锁一样继续前进,它一直在等待,有时会得到java.util.concurrent.执行异常:java.lang.ClassCastExctive:java.lang.字符串不能被强制转换为java.util.列表和com

  • Im使用以下节点库azure-keyvault从azure keyvault获取、检索存储的秘密。Ive只找到api来检索机密值。我正在寻找一种在一次调用中检索多个秘密值的方法。我还没找到。有没有一种方法做到这一点,我错过了或它只是不支持。

  • 我是否无法连接到secretName属性中? 下面是我的模板文件:-