如何从 ARM 模板访问 KeyVault 中的 SSL
How to access SSL in KeyVault from ARM Template
重复问题?
我不相信。如前所述,这正在使用本地部署中的我的用户工作,并且所有(据我了解)权限已授予服务主体和本地也失败的测试用户。
我有一个 ARM 模板,用于配置和部署 Web 应用程序,其中一部分是将证书绑定应用到 Web 应用程序。模板的那部分看起来像这样:
{
"type": "Microsoft.Web/sites",
"kind": "api",
"name": "[parameters('name')]",
"apiVersion": "2015-08-01",
"location": "[resourceGroup().location]",
"properties": {
"name": "[parameters('name')]",
"serverFarmId": "[resourceId(parameters('servicePlanGroup'), 'Microsoft.Web/serverFarms', parameters('servicePlanName'))]"
},
"resources": [
{
"name": "[parameters('certificateName')]",
"apiVersion": "2014-04-01",
"type": "Microsoft.Web/certificates",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('name'))]"
],
"properties": {
"keyVaultId": "[parameters('keyVaultId')]",
"keyVaultSecretName": "[parameters('keyVaultSecretName')]"
}
}
]
}
当我从我的 PC 在本地 运行 它工作正常,当我从 VSTS 运行 它时,部署失败,看起来像这样:
错误所在:
"operationName": {
"localizedValue": "Microsoft.Web/certificates/write",
"value": "Microsoft.Web/certificates/write"
},
"properties": {
"statusCode": "Unauthorized",
"statusMessage": "{\"error\":{\"code\":\"BadRequest\",\"message\":\"\"}}"
}
SSL 证书和 KeyVault 都为 VSTS 运行 在此版本下的服务主体添加了权限。
Release Principal 用户在 KeyVault 中拥有 Read,List
的密钥和秘密,并且是订阅中的 Contributor
。我在本地使用的帐户是 co-admin
。
关于需要添加哪些权限有什么想法吗?
更新
我添加了另一个用户 testuser
,它与服务主体具有相同的权限,但它现在在本地失败。我想添加权限并查看有效方法需要反复试验。
这不是一个重复的问题 - 如前所述,它指出了跨帐户的奇怪权限问题,即使设置了权限也是如此。事实证明,出于某种原因,co-admin 尽管存在以下问题仍能正常工作——可能是 ARM/permission 基础架构中的一个潜在错误?
这适用于 co-admin 用户,但不适用于其他任何人。
而这适用于特权较低的 user/principal。
注意架构版本更改。 2014-04-01
的原始架构实际上不包含任何有关 Microsoft.Web/Certificates
的内容,而更新后的架构 2015-08-01
确实包含此信息。
使用具有与 VSTS 服务主体相同权限的 testuser
的本地测试可以很好地处理此更改。
其他任何试图实现 SSL 绑定的旁注:
资源的位置在我的例子中都是一样的。我怀疑如果保险库位于不同的位置,那么它的资源组可能还需要指定才能使其正常工作——不过我还没有测试过这个理论。
重复问题?
我不相信。如前所述,这正在使用本地部署中的我的用户工作,并且所有(据我了解)权限已授予服务主体和本地也失败的测试用户。
我有一个 ARM 模板,用于配置和部署 Web 应用程序,其中一部分是将证书绑定应用到 Web 应用程序。模板的那部分看起来像这样:
{
"type": "Microsoft.Web/sites",
"kind": "api",
"name": "[parameters('name')]",
"apiVersion": "2015-08-01",
"location": "[resourceGroup().location]",
"properties": {
"name": "[parameters('name')]",
"serverFarmId": "[resourceId(parameters('servicePlanGroup'), 'Microsoft.Web/serverFarms', parameters('servicePlanName'))]"
},
"resources": [
{
"name": "[parameters('certificateName')]",
"apiVersion": "2014-04-01",
"type": "Microsoft.Web/certificates",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('name'))]"
],
"properties": {
"keyVaultId": "[parameters('keyVaultId')]",
"keyVaultSecretName": "[parameters('keyVaultSecretName')]"
}
}
]
}
当我从我的 PC 在本地 运行 它工作正常,当我从 VSTS 运行 它时,部署失败,看起来像这样:
错误所在:
"operationName": {
"localizedValue": "Microsoft.Web/certificates/write",
"value": "Microsoft.Web/certificates/write"
},
"properties": {
"statusCode": "Unauthorized",
"statusMessage": "{\"error\":{\"code\":\"BadRequest\",\"message\":\"\"}}"
}
SSL 证书和 KeyVault 都为 VSTS 运行 在此版本下的服务主体添加了权限。
Release Principal 用户在 KeyVault 中拥有 Read,List
的密钥和秘密,并且是订阅中的 Contributor
。我在本地使用的帐户是 co-admin
。
关于需要添加哪些权限有什么想法吗?
更新
我添加了另一个用户 testuser
,它与服务主体具有相同的权限,但它现在在本地失败。我想添加权限并查看有效方法需要反复试验。
这不是一个重复的问题 - 如前所述,它指出了跨帐户的奇怪权限问题,即使设置了权限也是如此。事实证明,出于某种原因,co-admin 尽管存在以下问题仍能正常工作——可能是 ARM/permission 基础架构中的一个潜在错误?
这适用于 co-admin 用户,但不适用于其他任何人。
而这适用于特权较低的 user/principal。
注意架构版本更改。 2014-04-01
的原始架构实际上不包含任何有关 Microsoft.Web/Certificates
的内容,而更新后的架构 2015-08-01
确实包含此信息。
使用具有与 VSTS 服务主体相同权限的 testuser
的本地测试可以很好地处理此更改。
其他任何试图实现 SSL 绑定的旁注:
资源的位置在我的例子中都是一样的。我怀疑如果保险库位于不同的位置,那么它的资源组可能还需要指定才能使其正常工作——不过我还没有测试过这个理论。