You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure函数Python连接防火墙后Blob存储:寻求替代访问密钥的安全认证方式

更安全的Azure Blob存储认证方式替代Access Key

针对你的场景,推荐以下几种风险更低的认证方式,完全规避Access Key硬编码或泄露的问题:

1. 托管标识(Managed Identity)—— 最推荐的无密钥方案

这是Azure原生的无密钥认证方案,无需手动管理任何密钥,Azure会自动维护身份凭证,且只有你的Azure函数能使用该身份访问资源,安全性最高。

操作步骤:

  • 在Azure函数应用的「身份」选项卡中,启用系统分配托管标识;
  • 进入Blob存储账户的「访问控制(IAM)」页面,给该托管标识添加Storage Blob Data Contributor(或业务所需的最小权限角色);

Python代码示例:

无需硬编码任何凭证,DefaultAzureCredential会自动在Azure函数环境中获取托管标识的认证信息:

from azure.storage.blob import BlobClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
blob = BlobClient(
    account_url="https://xxxx.blob.core.windows.net",
    container_name="xxx",
    blob_name="download_file.csv",
    credential=credential
)

2. Azure AD服务主体(Service Principal)—— 适配本地调试/跨场景

如果需要在本地调试代码,或者跨Azure租户访问资源,服务主体是合适的选择。你可以创建一个AD应用作为服务主体,通过环境变量管理凭证,避免硬编码。

操作步骤:

  • 在Azure AD中注册应用,获取租户ID、客户端ID和客户端密钥;
  • 在Blob存储的IAM页面,给该服务主体分配对应权限角色;
  • 在Azure函数的「配置」中添加上述三个参数为环境变量;

Python代码示例:

from azure.storage.blob import BlobClient
from azure.identity import ClientSecretCredential
import os

tenant_id = os.getenv("AZURE_TENANT_ID")
client_id = os.getenv("AZURE_CLIENT_ID")
client_secret = os.getenv("AZURE_CLIENT_SECRET")

credential = ClientSecretCredential(tenant_id, client_id, client_secret)
blob = BlobClient(
    account_url="https://xxxx.blob.core.windows.net",
    container_name="xxx",
    blob_name="download_file.csv",
    credential=credential
)

3. SAS令牌(Shared Access Signature)—— 细粒度权限控制

SAS令牌可以针对特定Blob/容器、指定权限(只读/读写等)、有效期和允许的IP范围生成,即使泄露,影响范围也远小于Access Key。

操作步骤:

  • 通过Azure门户、Azure CLI或代码生成SAS令牌,设置合理的有效期和最小必要权限;

Python代码示例:

from azure.storage.blob import BlobClient

sas_token = "生成的SAS令牌内容"
blob = BlobClient(
    account_url="https://xxxx.blob.core.windows.net",
    container_name="xxx",
    blob_name="download_file.csv",
    credential=sas_token
)

内容的提问来源于stack exchange,提问作者Anshul Dubey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:12:56