【发布时间】:2017-09-24 22:04:34
【问题描述】:
在我当前的 ASP.NET Core 项目中,我使用带有 X509Certificate 的 Azure Active Directory 身份验证来访问 Key Vault。需要在计算机上安装证书以允许应用程序访问它并最终从 Key Vault 读取值。现在,我正在努力将此应用程序迁移到 Azure Service Fabric。我已将证书上传到 Key Vault,通过添加修改 ARM 模板:
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "{KeyVaultIdHere}"
},
"vaultCertificates": [
{
"certificateUrl": "{CertificateUrlHere}",
"certificateStore": "My"
}
]
}
]
},
但是当我将我的应用程序部署到 Azure Service Fabric 时,它似乎无法访问证书。我是否正确理解当我使用此类 ARM 模板创建集群时,证书已安装在 LocalMachine\My Store 中?如果是,是否有可能,运行应用程序的操作系统用户无权访问证书的私钥?当我在本地计算机上运行集群时,我必须授予 ASF 本地集群用户读取私钥的特殊权限。也许同样需要为 Azure 上的 ASF 做同样的事情?怎么办?提前致谢。
【问题讨论】:
-
我已从 ASF 集群远程访问虚拟机,结果发现此证书缺少私钥权限。但我不能手动设置它,因为“管理员”对此证书只有“读取”权限。出于这个原因,我将尝试修改 ARM 模板,以便它“解锁”运行 ASF 集群的 NETWORK_SERVICE 的私钥。
-
NETWORK_SERVICE的 ACL 应该在配置证书时自动完成。访问 KeyVault 的代码是什么样的?也许您的方法默认查看cert:\currentuser\my,这对于SF当然不正确! -
我的方法肯定是查看
localmachine/mystore。当我运行 ASF 本地集群时,它运行良好。有趣的是,您提到的 NETWORK_SERVICE 应该有权访问使用 ARM 模板安装的此类证书的私钥。显然,它没有。只有System可以完全访问它。还提到了Administrators组,但只有Read权限。
标签: azure-service-fabric azure-keyvault