{
"type": "Microsoft.KeyVault/vaults",
"name": "my-new-sub-vault",
"apiVersion": "2015-06-01",
"location": "[resourceGroup().location]",
"properties": {
"enabledForDeployment": "false",
"enabledForTemplateDeployment": "false",
"enabledForVolumeEncryption": "false",
"tenantId": "[subscription().tenantId]",
"accessPolicies": [
{
"tenantId": "[subscription().tenantId]",
"objectId": "[parameters('msiObjectId')]",
"permissions": {
"keys": ["get", "list"],
"secrets": ["get", "list"]
}
}
],
"sku": {
"name": "Standard",
"family": "A"
}
}
},
{
"type": "Microsoft.KeyVault/vaults/secrets",
"name": "[concat('my-new-sub-vault', '/', parameters('secretsObject').secrets[copyIndex()].secretName)]",
"apiVersion": "2015-06-01",
"properties": {
"value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"
},
"dependsOn": [
"[concat('Microsoft.KeyVault/vaults/my-new-sub-vault')]"
],
"copy": {
"name": "secretsCopy",
"count": "[length(parameters('secretsObject').secrets)]"
}
}
我的语法有错误吗?或者这是不可能的?
抛出的错误是
New-AzResourceGroupDeployment:16:25:54-资源Microsoft.KeyVault/Vaults/Secrets“my-new-sub-Vault/my-Secret”失败,出现消息“{”错误“:{”代码“:”BadRequest“,”消息“:”缺少机密“}}”
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"secretsObject": {
"value": {
"secrets": [
...,
{
"secretName": "my-secret",
"secretValue": {
"reference": {
"keyVault": {
"id": "/subscriptions/subId/resourceGroups/main/providers/Microsoft.KeyVault/vaults/master-vault"
},
"secretName": "my-secret"
}
}
}
]
}
}
}
}
另一种选择是将秘密存储到KeyVault中的单个秘密中,并将其格式化为JSON对象。然后您可以使用单个资源编写它,并使用单个引用读取它。您可以使用string()和json()函数将其从一个对象转换为一个可以在部署期间使用的对象。
创建“单一秘密”:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"keyVaultName": {
"type": "string",
"metadata": {
"description": "Name of the vault"
}
},
"secretName": {
"type": "string",
"metadata": {
"description": "Name of the secret to store in the vault"
}
},
"secretValue": {
"type": "secureObject",
"metadata": {
"description": "Value of the secret to store in the vault"
}
}
},
"variables": { },
"resources": [
{
"type": "Microsoft.KeyVault/vaults/secrets",
"name": "[concat(parameters('keyVaultName'), '/', parameters('secretName'))]",
"apiVersion": "2018-02-14",
"tags": {
"displayName": "secret"
},
"properties": {
"value": "[string(parameters('secretValue'))]"
}
}
]
}
使用这个来使用机密:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"secretValue": {
"type": "securestring"
}
},
"variables": {
"toJSON": "[json(parameters('secretValue'))]"
},
"resources": [ ],
"outputs": {
"secretValue": {
"type": "string",
"value": "[parameters('secretValue')]"
},
"singleObj": {
"type": "object",
"value": "[variables('toJSON')]"
},
"singleProperty": {
"type": "string",
"value": "[variables('toJSON').two]"
}
}
}
目前,在我看来,有很多方法可以引用秘密: 使用@或 直接,在存储库中为fx一个名为secret的秘密,然后直接引用它 具有Azure函数,或 配置已运行的应用程序,并将密钥存储库添加到堆栈 我很难看出什么时候用什么。
我有个奇怪的问题。我有1个ARM模板,我用它部署2个环境。 删除完整的QA资源组后,我能够重新部署完全相同的ARM模板。看来资源组应该创建后的密钥库秘密?知道为什么吗?如果我们在生产中遇到这种情况,我们不希望删除完整的资源组
我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw
我在过去为Azure函数使用了很多秘密,现在我试图使用一个密钥,RSA加密,4096位。这是一个私有的PuTTy.ppk键,我已经将其导出为。pem类型以满足Azure的要求。我有一个Python 3.7应用程序,我已经在其中部署了所需的功能,并尝试在应用程序设置中引用所需的键,下面的语句是: @microsoft.keyvault(secreturi=https://{thevault-addr