【问题标题】:Access Key Vault for a Service Fabric application using Azure Active Directory使用 Azure Active Directory 访问 Service Fabric 应用程序的 Key Vault
【发布时间】:2019-03-13 04:45:45
【问题描述】:

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

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

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

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

【问题讨论】:

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


【解决方案1】:

阿法伊克,

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

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

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

如果您想尝试这种方法,您可以使用 Microsoft.Azure.Services.AppAuthentication 对集群中运行的服务进行隐式身份验证,其中节点设置有托管身份扩展,如 here 所述。

链接这个:

当您使用 Microsoft.Azure.Services.AppAuthentication 时,第 2 步将由库处理,您无需对密钥保管库身份验证逻辑添加太多更改。

当您在 Azure 应用服务或 Azure VM 上运行代码时 启用托管标识,库自动使用托管标识 身份。无需更改代码。

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

PS:我已经使用客户端机密和证书完成了其他 KeyVault 集成,它们足够安全,使用证书,您可以将其存储在托管存储或应用程序中,只有在您的解决方案需要时,我才会推荐 MI .

【讨论】:

  • 感谢您,我会进一步研究并尝试一下。由于项目时间限制,目前我使用了 Run As。
  • Diego 从不在 Azure 中托管的应用程序访问 KeyVault 的最佳方式是什么?这可能吗?
  • 是的,有可能,您需要在 Active Directory 中设置应用程序以使用 AD 提供的令牌访问 KeyVault。见herehere
猜你喜欢
  • 2021-07-22
  • 2017-09-24
  • 2020-05-08
  • 2020-01-04
  • 2022-12-22
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多