跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

如何让 StackQL 通过 Azure 的身份验证

StackQL 使用 Microsoft Entra ID(原 Azure AD)服务主体向 Azure 进行身份验证,服务主体通过 3 个环境变量提供:AZURE_TENANT_ID、AZURE_CLIENT_ID 和 AZURE_CLIENT_SECRET。

步骤​

  1. 创建一个服务主体,并为其授予目标订阅上的角色(对于只读查询,Reader 角色即可满足需要):
az ad sp create-for-rbac --name stackql-sp --role Reader \
--scopes /subscriptions/<subscription-id>
  1. 导出该命令返回的凭据:
export AZURE_TENANT_ID=your-tenant-id
export AZURE_CLIENT_ID=your-client-id
export AZURE_CLIENT_SECRET=your-client-secret
  1. 拉取 Azure Provider(仅首次使用时需要):
REGISTRY PULL azure;
  1. 通过查询进行验证:
SELECT name, location
FROM azure.compute.virtual_machines
WHERE subscriptionId = '00000000-1111-2222-3333-444444444444';

subscriptionId 谓词是 Azure API 的必需路由参数,不属于身份验证的一部分。范围限定为资源组的方法还需要 resourceGroupName;运行 SHOW METHODS IN azure.compute.virtual_machines 可查看每个访问方法的必需参数(list_all 只需要 subscriptionId;list 还需要 resourceGroupName;get 需要 vmName)。

变量的适用范围​

这些变量在 stackql shell、stackql exec、stackql srv(PostgreSQL 线协议服务器)和 stackql mcp 中的用法完全相同。对于 Claude Desktop 等 MCP 客户端,将它们放在 claude_desktop_config.json 中服务器条目的 env 块内。在 CI 中,应从管道的机密存储获取这些变量。