消费计划Azure Function访问公网封锁存储账户的方案及用户授权咨询
问题解决方案
一、消费计划Azure Function访问禁用公网的存储账户
当存储账户禁用所有公网访问后,基于账户密钥的连接字符串访问会被直接阻断,且消费计划的Function无法通过私有端点接入虚拟网络,需按以下步骤调整配置:
存储账户网络权限配置
- 进入存储账户的「网络」设置页,在「允许访问来源」中选择「禁用公网访问」,然后勾选允许受信任的Microsoft服务访问此存储账户(Azure Functions属于受信任服务列表,此配置允许Function通过托管标识绕过公网限制访问存储)
- 为Function的系统分配标识分配Storage Blob Data Contributor角色(不要用通用的「参与者」角色,数据操作需要对应的数据权限角色,而非管理角色)
PowerShell脚本修改(改用托管标识认证)
放弃使用连接字符串,直接通过托管标识完成身份认证,示例代码如下:# 通过系统分配托管标识完成Azure AD认证 Connect-AzAccount -Identity # 初始化存储上下文(无需连接字符串) $storageContext = New-AzStorageContext -StorageAccountName "your-storage-account-name" -UseConnectedAccount # 上传敏感JSON文件至Blob容器 Set-AzStorageBlobContent -Context $storageContext -Container "your-container-name" -File "local-path-to-sensitive.json" -Blob "target-sensitive-file.json"
二、仅基于Azure用户账户控制存储账户访问
完全可以实现,无需依赖IP地址限制,配置方式如下:
存储账户网络限制
- 存储账户「网络」设置选择「禁用公网访问」,或选择「允许选定的网络」但不添加任何IP地址范围;若需要Function同时访问,需保留「允许受信任的Microsoft服务访问」的勾选
Azure AD RBAC权限分配
- 为指定的Azure AD用户/用户组分配存储账户的数据权限角色,常用角色包括:
- Storage Blob Data Reader:仅允许读取Blob数据
- Storage Blob Data Contributor:允许读写Blob数据
- 禁用存储账户的账户密钥和SAS令牌功能(可选,进一步强制所有访问必须通过Azure AD认证)
- 为指定的Azure AD用户/用户组分配存储账户的数据权限角色,常用角色包括:
用户访问方式
用户必须通过Azure AD身份验证访问存储,比如:- PowerShell:执行
Connect-AzAccount登录后,直接操作存储资源 - Azure存储资源管理器:选择「Azure AD账户」登录,即可访问对应权限的存储内容
- PowerShell:执行
内容的提问来源于stack exchange,提问作者Coco
相关产品推荐
相关产品推荐

