来自部署的 Key Vault 值和链接的模板参数
Key vault values from deployment, and linked templates parameters
我有一个模板可用于创建密钥保管库和其中的机密。我还有一个服务结构模板,它需要 Key Vault 中的 3 样东西:Vault URI、证书 URL 和证书指纹。
如果我使用 powershell 创建 key vault 和 secret,很容易从输出中手动复制这 3 个东西,并将它们粘贴到 service fabric 模板的参数中。但是,由于该证书与服务结构集群具有相同的生命周期,我希望做的是 link 从密钥保管库模板到服务结构模板,所以当我部署key vault 和 secret(顺便说一下,这是一个已经被 base 64 编码为字符串的密钥。我可以将它作为另一个 key vault 中的秘密...),我可以将 3 个值作为参数传递。
所以我有两个问题。
如何检索 arm 模板中的 3 个值。 Powershell 将它们输出为密钥库的 'ResourceId'、机密的 'Id' 和机密的 'Version'。我的尝试:
"sourceVaultValue": {
"value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')"
},
"certificateThumbprint": {
"value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')"
},
"certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]"
但是 certificateUrlValue 不正确。你可以看到我尝试过使用和不使用 listKeys,但似乎都不起作用......(指纹在 certUrl 本身内)
- 如果我要获得正确的值,我想尝试将它们作为参数传递给下一个模板。有问题的模板比我想传递的 3 个参数多得多。那么是否可以将 parametersLink 元素 link 连接到参数文件,以及仅用于这 3 个的 parameters 元素?或者是否有这样做的预期方法?
干杯
好的,当你回到键盘时试试这个...
1) 对于 uri,您可以使用如下输出:
"secretUri": {
"type": "string",
"value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]"
}
对于 #2,您不能混合和匹配 link 和一些值,它是一个或另一个。
关于如何执行此操作的一些想法(这在一定程度上取决于您希望如何构建其余部署的结构)...
- 考虑这一点的一种方法是不要嵌套 SF,而是将它们部署在同一个模板中,因为它们具有相同的生命周期
- 不是嵌套 SF 模板,而是嵌套 KV 模板并在 SF 模板中引用该部署的输出...
除此之外,我想不出任何优雅的东西 - 因为您想将 "dynamic" 参数传递给嵌套部署,所以真正做到这一点的唯一方法是在 [= 后面动态写入参数文件30=] 或将所有参数传递到部署资源中。
HTH - LMK 如果没有...
Can't Reference a secret with dynamic id !!!!
The obvious problems with this way of doing things are:
Someone needs to type the cleartext password which means:
it needs to be known to anyone who provisions the environment and how do I feed it into an automated environment deployment? If I store the password in a parameter… ???????
"variables": {
"tenantPassword": {
"reference": {
"keyVault": {
"ID": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'),'/providers/Microsoft.KeyVault/vaults/', parameters('VaultName'))]"
},
"secretName": "tenantPassword"
}
}
},
我有一个模板可用于创建密钥保管库和其中的机密。我还有一个服务结构模板,它需要 Key Vault 中的 3 样东西:Vault URI、证书 URL 和证书指纹。
如果我使用 powershell 创建 key vault 和 secret,很容易从输出中手动复制这 3 个东西,并将它们粘贴到 service fabric 模板的参数中。但是,由于该证书与服务结构集群具有相同的生命周期,我希望做的是 link 从密钥保管库模板到服务结构模板,所以当我部署key vault 和 secret(顺便说一下,这是一个已经被 base 64 编码为字符串的密钥。我可以将它作为另一个 key vault 中的秘密...),我可以将 3 个值作为参数传递。
所以我有两个问题。
如何检索 arm 模板中的 3 个值。 Powershell 将它们输出为密钥库的 'ResourceId'、机密的 'Id' 和机密的 'Version'。我的尝试:
"sourceVaultValue": { "value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')" }, "certificateThumbprint": { "value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')" }, "certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]"
但是 certificateUrlValue 不正确。你可以看到我尝试过使用和不使用 listKeys,但似乎都不起作用......(指纹在 certUrl 本身内)
- 如果我要获得正确的值,我想尝试将它们作为参数传递给下一个模板。有问题的模板比我想传递的 3 个参数多得多。那么是否可以将 parametersLink 元素 link 连接到参数文件,以及仅用于这 3 个的 parameters 元素?或者是否有这样做的预期方法?
干杯
好的,当你回到键盘时试试这个...
1) 对于 uri,您可以使用如下输出:
"secretUri": {
"type": "string",
"value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]"
}
对于 #2,您不能混合和匹配 link 和一些值,它是一个或另一个。
关于如何执行此操作的一些想法(这在一定程度上取决于您希望如何构建其余部署的结构)...
- 考虑这一点的一种方法是不要嵌套 SF,而是将它们部署在同一个模板中,因为它们具有相同的生命周期
- 不是嵌套 SF 模板,而是嵌套 KV 模板并在 SF 模板中引用该部署的输出...
除此之外,我想不出任何优雅的东西 - 因为您想将 "dynamic" 参数传递给嵌套部署,所以真正做到这一点的唯一方法是在 [= 后面动态写入参数文件30=] 或将所有参数传递到部署资源中。
HTH - LMK 如果没有...
Can't Reference a secret with dynamic id !!!!
The obvious problems with this way of doing things are:
Someone needs to type the cleartext password which means:
it needs to be known to anyone who provisions the environment and how do I feed it into an automated environment deployment? If I store the password in a parameter… ???????
"variables": {
"tenantPassword": {
"reference": {
"keyVault": {
"ID": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'),'/providers/Microsoft.KeyVault/vaults/', parameters('VaultName'))]"
},
"secretName": "tenantPassword"
}
}
},