上下文:我正在为将与Azure KeyVault交互的项目创建PS模块。使用该模块的任何人都需要导入Azure上下文才能拥有访问KeyVault的权限(或者自己拥有权限,但我们假设这不是一个选项。我不知道有多少人会使用它)。理想情况下,我应该能够与队友共享AzureRm上下文文件,但我想确保我提供的文件不能用于访问KeyVault以外的任何文件。
如何使用Save-AzureRmContext命令创建AzureRm上下文文件(profile.ctx,profile.json)或只能访问选择订阅或资源的类似内容?
答案 0 :(得分:0)
这不是你应该怎么做的。您应该创建一个角色并将其分配给subscription \ resource group和users。通过这种方式,他们只能访问您授予他们访问权限的资源。
此外,您不应该共享上下文,因为它不受支持,并且您无法区分谁使用日志做了什么(因为所有操作都将由一个用户执行)。
答案 1 :(得分:0)
目前还没有办法实现这一目标。使用Azure发布配置文件,您可以完成类似的操作,授予订阅,资源组或应用程序[1]中任何人的部署访问权限,但该功能并不是我正在寻找的东西,而且无论如何都不适用于AzureRmContext。由于AzureRmContext反映个人所有权的目的,此功能可能永远不可用。
对于那些想知道的人,我没有使用KeyVault为我的PS模块进行身份验证,而是创建了一个Azure AAD应用程序并授予应用程序访问KeyVault的权限。然后通过PS我添加了证书身份验证到应用程序。这允许我创建一个带有app id和cert私钥的Auth令牌,我将它放在我通过他们的api向KeyVault发出的请求的标题中。我现在可以将这个PS模块交给我的团队,只要他们有证书,他们就可以使用该模块访问KeyVault。最重要的是,此证书不依赖于我的个人凭据,只允许其他人访问应用程序被授予访问权限的资源。我使用这个链接[2]来做到这一点,虽然有点过时的研究将使它适合你。
[1] https://docs.microsoft.com/en-us/azure/app-service/app-service-deployment-credentials [2] https://hindenes.com/trondsworking/2015/07/19/certificate-based-authentication-to-azure-resource-manager-using-powershell/