Azure 在创建 VM 时分配角色

Azure assign role when creating VM

我正在 Java 中编写一个程序,它在 Azure 中创建一个 VM 实例,将脚本上传到容器,然后在 VM 中下载并执行脚本。但是,我目前在授予机器访问容器方面遇到困难。我加了

.withSystemAssignedManagedServiceIdentity()

到机器创建。然而,这还不够,显然我还必须向 VM 添加角色(在我的例子中是 Storage Reader)。当我在门户中手动执行此操作时,在设置机器后,我通过 SSH 看到我有访问权限。但是在我的 Java 程序的 VM 创建过程中有没有办法做到这一点?

有可能,你可以用withSystemAssignedIdentityBasedAccessTo(String resourceId, BuiltInRole role)的方法。

这里是 sample:

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()
                        .withSystemAssignedIdentityBasedAccessTo("<storage-account-resource-id>", BuiltInRole.READER)
                        .create();