0

我想通过管道过程创建一个 Azure 开发测试实验室 VM。但是,当我开始部署时,它在“创建 Azure DevTest Lab VM”步骤中失败,这似乎是由于我的密钥保管库丢失造成的。但是在检查了我的密钥库之后,我的秘密就存储在其中,并且权限应该没有问题。

不确定消息“未为用户设置秘密存储”。意思是,这是否意味着我的帐户与密钥保管库之间的关联存在问题?我怎样才能验证这一点?谢谢。

运行管道结果

代理作业:创建开发测试实验室 VM 代理作业:创建 Devtest Lab VM

Win7entx64.json

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
    "newVMName": {
        "defaultValue": "win7entx64",
        "type": "String"
    },
    "labName": {
        "defaultValue": "my_lab",
        "type": "String"
    },
    "size": {
        "defaultValue": "Standard_A3",
        "type": "String"
    },
    "userName": {
        "defaultValue": "trendkj",
        "type": "String"
    },
    "password": {
        "type": "securestring",
        "defaultValue": "[[[VmPassword]]"
    }
},
"variables": {
    "labSubnetName": "[concat(variables('labVirtualNetworkName'), 'Subnet')]",
    "labVirtualNetworkId": "[resourceId('Microsoft.DevTestLab/labs/virtualnetworks', parameters('labName'), variables('labVirtualNetworkName'))]",
    "labVirtualNetworkName": "[concat('Dtl', parameters('labName'))]",
    "vmId": "[resourceId ('Microsoft.DevTestLab/labs/virtualmachines', parameters('labName'), parameters('newVMName'))]",
    "vmName": "[concat(parameters('labName'), '/', parameters('newVMName'))]"
},
"resources": [
    {
        "type": "Microsoft.DevTestLab/labs/virtualmachines",
        "apiVersion": "2018-10-15-preview",
        "name": "[variables('vmName')]",
        "location": "westus",
        "properties": {
            "labVirtualNetworkId": "[variables('labVirtualNetworkId')]",
            "notes": "Windows 7 Enterprise",
            "galleryImageReference": {
                "offer": "windows-7",
                "publisher": "microsoftwindowsdesktop",
                "sku": "win7-enterprise",
                "osType": "Windows",
                "version": "latest"
            },
            "size": "[parameters('size')]",
            "userName": "[parameters('userName')]",
            "password": "[parameters('password')]",
            "isAuthenticationWithSshKey": false,
            "labSubnetName": "[variables('labSubnetName')]",
            "disallowPublicIpAddress": true,
            "storageType": "Standard",
            "allowClaim": false
        }
    }
],
"outputs": {
    "labVMId": {
        "type": "String",
        "value": "[variables('vmId')]"
    }
}

}

我在 Key Vault 中的秘密

我在 Key Vault 中的秘密

我在 Key Vault 中的访问策略

我在 Key Vault 中的访问策略

4

3 回答 3

0

根据您在arm模板中对key valuet的引用"defaultValue": "[[[VmPassword]]",您应该使用DevTest Lab中保存的秘密。页面如下图。

在此处输入图像描述

如果要使用问题所示Key Vault页面中的secret,arm模板中的引用应该如下:

"sqlAdministratorLoginPassword": {      
      "reference": {
          "keyVault": {
            "id": "/subscriptions/25abd97b-44a3-4092-8337-xxxx/resourceGroups/mykeyvault/providers/Microsoft.KeyVault/vaults/cmkvtest"
          },
          "secretName": "sqlpassword"
        }       
    }

关于这一点,请参考本神器的“3.ADD KEY VAULT SECRETS TO YOU ARM TEMPLATES”部分。

于 2020-10-20T09:38:22.923 回答
0

自从发布此消息以来已经有一段时间了。我面临同样的问题。您在 Devtest 实验室中设置的密码仅对创建它的用户可见。

api 获得更多关于秘密的见解。获取秘密如下:GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/secrets /{name}?api-version=2018-09-15 如您所见,路径中还有用户名。

因此,如果您有 UserA 和 UserB,则 UserA 在 DTL 实验室中设置了一个秘密,当 UserB 进入我的秘密时,它不会看到 UserA 的秘密。他甚至可以创建一个具有不同值的同名秘密。

遗憾的是,您不能为 DevtestLab 中的所有用户提供共同的秘密(也许有,但我还没有找到)。

换句话说,您需要使用 Azure Devops 的 azure 连接中定义的用户登录 DTL 并手动创建密钥。或者在他的上下文中从管道中创建它。

参考:

https://docs.microsoft.com/en-us/rest/api/dtl/secrets/get

https://docs.microsoft.com/en-us/rest/api/dtl/secrets/create-or-update

于 2021-10-28T09:39:56.320 回答
-1

你错过了']'吗?

[[[VmPassword]] --> [[[VmPassword]]]

于 2021-06-08T07:24:22.783 回答