如何在测试环境中使用托管身份?

时间:2020-06-11 08:36:53

标签: azure azure-web-app-service azure-resource-manager azure-managed-identity user-identification

我已经为我的Azure Web应用程序创建了一个用户身份,当该应用程序本身尝试访问其他资源时,它可以很好地工作。但是,我已经编写了代码,专门使用 Microsoft.Azure.Services.AppAuthentication 库来获取访问令牌,并且我意识到当我尝试对某些组件进行功能测试时这将不起作用我的应用程序。 例如:我尝试使用前面提到的 AppAuthentication 库通过获取访问令牌来访问Azure数据湖,并且当我的功能测试项目在自托管VSTS代理上运行时,功能测试失败。没有正确的身份。仅向数据湖授予访问之前指定的用户身份的权限。

我已阅读有关documentation的分配受管身份的信息 到VM,但是我不确定是否要这样做,因为还有其他测试 与在相同VM和I上运行的其他应用程序相关的项目 认为这可能会以某种方式篡改其身份验证逻辑。

这里有几个问题:

  1. 上面的块引用中的假设正确吗?
  2. 是否可以将多个用户身份分配给单个VM?

  3. 我的测试项目是否可能 在发布定义中运行以获取用户身份 只是为了执行测试?

如果没有,我看到的另一个选择是显式创建服务主体并将其秘密存储在密钥库中。现在,我可以在运行时获取此密钥库密钥,并将其注入到应用程序的环境变量中。这是因为我的发布定义将有权访问密钥库。因此,通过这种方式,我可以获得服务主体的clientid和client机密,以对所需的Azure资源进行身份验证。

这种方法存在的问题: 我必须为两个单独的身份(在开头创建的用户身份和为测试目的专门创建的服务主体)管理对所有Azure资源的访问,尽管它们具有相同的目的。有解决这个问题的更好方法吗?

0 个答案:

没有答案