0

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

.withSystemAssignedManagedServiceIdentity()

到机器创建。然而,这还不够,显然我还必须将角色(在我的情况下为存储读取器)添加到 VM。当我在门户中手动执行此操作时,在设置机器后,我通过 SSH 看到我可以访问。但是有没有办法在我的 Java 程序的虚拟机创建过程中做到这一点?

4

1 回答 1

1

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

这是示例

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();
于 2020-11-11T02:35:47.650 回答