如何限制每个用户或组在 Azure API 管理 (APIIM) 中使用操作



如果您能帮助我解决以下问题,我将不胜感激: 我正在恢复使用组在 APIM 中使用 API 的访问权限,但我甚至想限制其操作,例如: 我在 APIM 中有一个 API,其中包含以下操作:

  • 操作A
  • 操作B
  • 操作C

以及以下用户组:

  • 组1
  • 组2
  • 组3

因此,我们的想法是根据某些业务规则授予对组的访问权限,例如:

  • 组 1(操作 A、操作 B(
  • 组 2(操作 A(
  • 组 2(操作 A,操作
  • B,操作 C(。

有没有办法实现此行为?非常感谢

只能通过策略表达式实现。使用选择策略并检查当前用户是哪个组的成员(上下文。User.Groups(,如果您没有看到所需的 - 使用返回响应停止请求处理。

在操作入站策略中,您可以添加如下内容:

<choose>
<when condition="@(context.User.Groups.Contains(g => g.name == "Group1"))">
<return-response>
<set-status code="403" reason="Unauthorized" />
<set-body>Users in group Group1 do not have access to this method. </set-body>
</return-response>
</when>
</choose>

这些是我引用的文档来得出这个结果:

  • 如何设置条件策略:https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#choose
  • 如何从策略访问组名称:https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions#ContextVariables
  • 如何返回响应:https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#ReturnResponse

这样,属于组 1 的任何用户在向此 API 操作发出请求时都会收到"组 1 中的用户无权访问此方法"的响应。如果将其添加到 API 的入站策略中,则会阻止组 1 中的用户调用 API 中的任何操作。

最新更新