You need to enable JavaScript to run this app. 是否可在Azure SQL Database中访问Azure Key Vault存储的机密?
优惠活动
大模型
产品
解决方案
定价
更多

是否可在Azure SQL Database中访问Azure Key Vault存储的机密?

可行实现方案

方案1:优先推荐:使用托管身份代替SAS Token(无需管理密钥/凭据)

该方案完全规避了从Key Vault拉取SAS Token的需求,安全性和可维护性更高,无需处理SAS过期问题:

  • 为你的Azure SQL资源启用系统分配托管身份或用户分配托管身份
  • 为该托管身份分配目标ADLS Gen2存储账户的存储Blob数据读者权限(若需要写入操作可按需调整对应权限)
  • 直接在Azure SQL中执行如下T-SQL创建凭据和外部数据源,不需要传入SAS Token:
-- 创建数据库范围凭据(使用托管身份,无需指定SECRET)
CREATE DATABASE SCOPED CREDENTIAL [ADLS_ManagedId_Cred]
WITH IDENTITY = 'Managed Identity';

-- 针对每个ADLS Gen2容器创建对应外部数据源
CREATE EXTERNAL DATA SOURCE [ADLS_DataSource_Container1]
WITH (
    LOCATION = 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net',
    CREDENTIAL = [ADLS_ManagedId_Cred]
);

所有不同的ADLS Gen2容器/存储账户只要给同一个SQL托管身份完成授权,都可以复用同一个凭据,不需要为每个数据源单独维护SAS Token。

方案2:若必须使用SAS Token,可通过自动化工作流从Key Vault拉取后动态创建资源

该方案无技术障碍可直接落地,核心流程如下:

  • 步骤1:为你的自动化运行环境(Azure Function、Azure自动化账户等)分配Azure Key Vault的密钥保管库机密用户角色,确保其有权限读取存储在Key Vault中的各SAS Token机密
  • 步骤2:编写自动化脚本执行如下逻辑:
    1. 从Key Vault批量读取所有提前存储的ADLS Gen2 SAS Token机密
    2. 使用AAD身份验证连接到目标Azure SQL数据库
    3. 动态生成T-SQL语句,为每个ADLS Gen2资源创建/更新对应的数据库范围凭据和外部数据源,示例动态生成的T-SQL如下:
-- 针对单个ADLS Gen2资源创建带SAS的凭据
CREATE DATABASE SCOPED CREDENTIAL [ADLS_Cred_<存储账户名>_<容器名>]
WITH 
    IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<从Key Vault读取到的SAS Token值>';

-- 创建对应外部数据源
CREATE EXTERNAL DATA SOURCE [ADLS_DataSource_<存储账户名>_<容器名>]
WITH (
    LOCATION = 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net',
    CREDENTIAL = [ADLS_Cred_<存储账户名>_<容器名>]
);
  • 步骤3:可配置定时触发该自动化脚本,自动更新即将过期的SAS Token对应的凭据,避免业务中断。

内容的提问来源于stack exchange,提问作者Vinay SPal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:15:04