首页 > 解决方案 > Azure - 在设置之前为 VM 分配托管标识访问权限

问题描述

我正在用 Java 编写一个程序,它在 Azure 中创建一个 VM 实例,将脚本上传到容器,然后在 VM 中下载并执行脚本。但是,我目前在授予机器访问容器的权限方面遇到困难。当机器已经启动时,我可以手动转到 Azure 并分配一个具有访问权限的角色,但是我想在机器启动之前在我的程序(创建 VM 时)中执行此操作,以便程序可以不间断地运行。有没有办法做到这一点?从文档

目前,Azure 门户不支持在创建 VM 期间分配用户分配的托管标识。相反,请参阅以下 VM 创建快速入门文章之一以首先创建 VM,然后继续下一部分以了解有关将用户分配的托管标识分配给 VM 的详细信息

我是否正确理解这是不可能的?有解决方法吗?

标签: azureazure-virtual-machine

解决方案


有可能,文档只是意味着您不能在门户中这样做,而不是在代码中。

就您而言,实际上我不确定您要使用系统分配的身份还是用户分配的身份。

这是一个示例,它通过启用系统分配的身份创建 Linux VM withSystemAssignedManagedServiceIdentity,如果您想使用用户分配的身份,您可以更改要使用的代码WithUserAssignedManagedServiceIdentity,您可以指定现有的或尚未创建的用户分配的身份,这取决于您的要求。

VirtualMachine virtualMachine = azureResourceManager.virtualMachines()
                    .define(linuxVMName)
                        .withRegion(region)
                        .withNewResourceGroup(rgName)
                        .withNewPrimaryNetwork("10.0.0.0/28")
                        .withPrimaryPrivateIPAddressDynamic()
                        .withNewPrimaryPublicIPAddress(pipName)
                        .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
                        .withRootUsername(userName)
                        .withRootPassword(password)
                        .withSize(VirtualMachineSizeTypes.STANDARD_DS2_V2)
                        .withOSDiskCaching(CachingTypes.READ_WRITE)
                        .withSystemAssignedManagedServiceIdentity()
                        .create();

推荐阅读