首页 > 解决方案 > 如何根据服务主体 ID 限制对 azure 函数的访问

问题描述

我有一个启用了 Azure Active Directory 身份验证的 azure 函数实现了一个 rest api。我想限制对一组特定服务主体的公开方法子集的访问。

到目前为止,我想出的解决方案是检索请求使用的 access_token 并手动根据列表检查应用程序 ID。这将在方法的主体中完成。

我正在寻找一种解决方案,可以在调用该函数之前在 azure 授权层中处理此问题。可能吗 ?

标签: pythonazureazure-active-directoryazure-functions

解决方案


正如另一个回复中提到的,目前没有这样的事情。如果你想限制一组服务主体对函数应用的访问,我的解决方法是为app role与你的函数应用相关的 AD App 声明一个,如下面的示例。

"appId": "8763f1c4-f988-489c-a51e-158e9ef97d6a",
"appRoles": [
    {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "ConsumerApps",
      "id": "47fbb575-859a-4941-89c9-0f7a6c30beac",
      "isEnabled": true,
      "description": "Consumer apps have access to the consumer data.",
      "value": "Consumer"
    }
  ],
"availableToOtherTenants": false,

之后,在门户的 Azure Active Directory 中导航到您的函数的 AD 应用程序 -> 单击Managed application in local directory-> Properties->set the User assignment requiredYes.

那么任何用于获取函数应用token的服务主体都需要你声明的应用权限,否则将无法获取token。我在这里写了详细信息,你可以参考一下。


推荐阅读