如何在Azure VM上通过角色授权免登录访问Azure存储(类似AWS EC2关联IAM角色访问S3的方式)
如何在Azure VM上通过角色授权免登录访问Azure存储(类似AWS EC2关联IAM角色访问S3的方式)
嘿,这个需求刚好对应Azure里的**托管标识(Managed Identity)**功能,和AWS EC2绑定IAM角色的逻辑几乎一致——给VM绑定一个托管标识,再给这个标识分配存储相关的权限,之后VM里的Azure CLI就能自动用这个标识的权限访问存储,完全不用手动登录或者输入密钥。下面给你用Azure CLI一步步操作:
一、创建用户分配的托管标识(推荐,灵活性更高)
用户分配的标识可以复用在多个VM上,适合批量场景:
# 创建托管标识,替换成你的资源组和标识名称 az identity create --name my-vm-storage-identity --resource-group my-resource-group
执行后会返回标识的ID、资源ID等信息,记下来后面要用。
二、给托管标识分配存储访问角色
根据你的需求选择合适的角色,比如需要读写Blob就用Storage Blob Data Contributor,需要管理整个存储账户就用Storage Account Contributor:
# 替换成你的存储账户资源ID、托管标识ID和角色名称 az role assignment create \ --assignee <托管标识的client-id或resource-id> \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.Storage/storageAccounts/<存储账户名称>"
三、把托管标识绑定到你的Azure VM
将刚才创建的标识关联到目标VM:
# 替换成你的VM名称、资源组和托管标识名称/ID az vm identity assign \ --resource-group my-resource-group \ --name my-target-vm \ --identities my-vm-storage-identity
如果用系统分配的托管标识(只能绑定到单个VM,更简单),直接去掉--identities参数即可:
az vm identity assign --resource-group my-resource-group --name my-target-vm
之后同样给这个系统分配的标识执行第二步的角色分配就行。
四、在VM里验证免登录访问
登录到你的Azure VM后,不需要执行az login,直接用Azure CLI操作存储即可,比如列出存储账户里的Blob容器:
# 替换成你的存储账户名称 az storage container list --account-name my-storage-account --auth-mode login
这里的--auth-mode login会自动使用VM绑定的托管标识来获取访问凭证,完全不用输入密钥或者手动登录。
另外要注意:如果是旧版本的Azure CLI,可能需要指定--identity参数,但新版CLI会自动检测VM上的托管标识,直接用就行。
备注:内容来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

