如何将用户添加到apim网关并限制用户的特定操作?

时间:2018-12-26 17:46:47

标签: azure azure-active-directory azure-api-management

我已经创建了一个apim网关,现在我需要添加一些用户,并且他们仅具有对API进行某些特定操作的权利,例如,某些用户仅有权执行GET请求,而某些用户仅有权执行执行POST请求等。如何实现?

2 个答案:

答案 0 :(得分:0)

基于角色的访问控制可以帮助您,请参阅以下URL

中的摘录

RBAC如何确定用户是否有权访问资源 以下是RBAC用于确定您是否有权访问管理平面上的资源的高级步骤。这有助于您了解是否要对访问问题进行故障排除。

用户(或服务主体)为Azure资源管理器获取令牌。

令牌包含用户的组成员身份(包括传递组成员身份)。

用户使用附加的令牌对Azure资源管理器进行REST API调用。

Azure资源管理器检索适用于对其执行操作的资源的所有角色分配,并拒绝所有分配。

Azure资源管理器缩小了适用于该用户或其组的角色分配,并确定了该用户对该资源具有哪些角色。

Azure资源管理器确定用户对该资源具有的角色中是否包括API调用中的操作。

如果用户在请求的范围内没有操作的角色,则不会授予访问权限。否则,Azure资源管理器将检查是否应用了拒绝分配。

如果应用拒绝分配,则访问被阻止。否则将授予访问权限。

答案 1 :(得分:0)

APIM运行时部分不依赖ARM RBAC。相反,APIM维护自己的用户数据库。通过将操作分为多个API,并通过订阅控制对这些API的访问,可以实现您所描述的方案。

APIM内置的所有内容,因此设置简单,但维护起来很麻烦。如果是这种情况,那么您的下一个选择是使用策略和策略表达式。查看choose策略,它可以让您有条件地停止请求处理(return-response策略)。当然,这要求您完全能够根据请求中提供的内容(即路径,标头,用户ID等)来做出授权决定。

在这种情况下,最好使用validate-jwt策略,因为它允许您依赖提供的身份中的有限声明集,而不是用户ID /名称的硬编码列表。但这确实要求您在每个请求中都具有JWT令牌。