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

如何基于Azure用户凭据获取ARM API的access_token并保护ML端点

基于Azure AD用户身份保护ML端点的实现方案

一、核心可行性说明

完全可以实现基于Azure AD用户凭据和权限的ML端点保护,Azure ML服务原生支持Azure AD身份验证,可替代服务主体实现用户级别的访问控制。

二、具体实现步骤

1. 配置ML端点的身份验证模式

将你的ML评分端点的身份验证设置为Azure AD令牌认证(而非密钥认证),确保只有携带有效Azure AD令牌的请求才能被处理。

2. 通过Azure RBAC实现权限细分

利用Azure角色访问控制,为用户分配不同粒度的权限,满足“大量用户在工作区但仅部分可访问端点”的需求:

  • 关键权限:控制用户能否调用评分端点的核心权限是Microsoft.MachineLearningServices/workspaces/endpoints/scoring/invoke
  • 内置角色选择:
    • 若要允许用户调用端点,可分配Azure ML评分端点参与者(Microsoft.MachineLearningServices/workspaces/endpoints/scoring/participant)角色,该角色仅包含调用评分端点的权限
    • 工作区的普通用户可分配Azure ML读者角色,仅能查看工作区资源,无法调用评分端点
  • 自定义角色:如果内置角色无法满足需求,可创建自定义RBAC角色,精确指定允许的操作(仅包含invoke权限),避免过度授权

3. 用户获取访问令牌调用端点

用户可通过以下方式获取自己的Azure AD令牌,用于调用ML端点:

  • Azure CLI:
    az account get-access-token --resource https://ml.azure.com
    
    命令返回的accessToken字段即为可用的令牌
  • PowerShell:
    Get-AzAccessToken -ResourceUrl https://ml.azure.com
    
  • 代码方式(以Python为例):使用MSAL库实现用户交互式登录获取令牌
    import msal
    
    client_id = "<你的Azure AD应用客户端ID>"
    authority = "https://login.microsoftonline.com/<你的租户ID>"
    scope = ["https://ml.azure.com/.default"]
    
    app = msal.PublicClientApplication(client_id, authority=authority)
    result = app.acquire_token_interactive(scopes=scope)
    
    if "access_token" in result:
        access_token = result["access_token"]
        # 使用access_token调用ML端点
    

4. 端点验证逻辑

当用户携带令牌请求ML端点时,Azure会自动完成以下验证:

  • 验证令牌的有效性(是否过期、签名是否合法)
  • 检查令牌对应的用户是否具备该评分端点的invoke权限
  • 仅通过验证的请求会被处理,未授权用户的请求会被直接拒绝

三、匹配你的具体需求

  1. 凭据与权限验证:通过Azure AD令牌验证用户身份,同时通过RBAC检查用户是否拥有调用权限,双重验证确保合规
  2. 工作区用户细分:给工作区用户分配不同RBAC角色,仅为需要访问端点的用户分配具备invoke权限的角色,其余用户分配只读或更低权限角色
  3. 授权用户准入:未被分配对应权限的用户,即使获取了Azure AD令牌,调用端点时也会因权限不足被拒绝,实现精准访问控制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:45:31