使用Azure Active Directory访问Service Fabric应用程序的密钥保管库

时间:2018-10-08 13:34:23

标签: .net-core azure-active-directory azure-service-fabric azure-keyvault

我有一个在Service Fabric(SF)群集中运行的应用程序,并且我不想从其中访问Key Vault。

该集群托管了许多应用程序,我想为我的应用程序授予对Key Vault的访问权限,而又不授予对其他应用程序的访问权限。默认情况下,应用程序与SF群集在同一用户下运行,但是每个应用程序都有其自己的唯一名称,我的应用程序具有名称fabric:/ application1。

我的问题是,是否可以为fabric:/ application1创建Active Directory应用程序帐户并授予对密钥库的访问权限?

我知道可以在SF清单中使用RunAs选项,但这需要我在清单/源代码中存储一个加密密码,并且我想尝试避免这种情况。

1 个答案:

答案 0 :(得分:1)

AFAIK,

拥有这种灵活性的唯一方法是使用ClientID & SecretService Principal certificates,并且每个应用程序都管理自己的凭据。

服务主体证书已集成到AD,但不需要应用程序,用户或主机成为域的一部分,唯一的要求是在AD上设置用户以授予Keyvault的权限。

还有其他使用AD集成的解决方案,例如Managed identities for Azure resources(以前:托管服务身份),但是我不确定您是否能够像您描述的那样限制每个应用程序的访问,因为MI将其添加为服务在该节点中,因此从技术上讲,其他应用程序也将具有访问权限,值得尝试验证是否可以限制此应用程序。

如果您想尝试这种方法,则可以与Microsoft.Azure.Services.AppAuthentication一起使用,以对集群中运行的服务进行隐式身份验证,在该集群中,节点是使用受管理的身份扩展名设置的,例如here

与此相关的链接: enter image description here

使用Microsoft.Azure.Services.AppAuthentication时,库将处理步骤2,而无需在密钥库身份验证逻辑中添加太多更改。

  

在具有以下功能的Azure应用服务或Azure VM上运行代码时   启用托管身份后,库会自动使用托管身份   身份。无需更改代码。

以下docs描述了可用于KeyVault身份验证的其他选项。

PS:我已经使用客户端密钥和证书完成了其他KeyVault集成,并且它们足够安全,有了证书,您可以将其存储在托管存储区或应用程序中,仅在解决方案要求时才建议使用MI