Istio:HTTP授权:验证用户是资源所有者

时间:2019-06-19 14:37:29

标签: kubernetes jwt authorization microservices istio

考虑使用Istio为Kubernetes中基于微服务架构构建的应用程序处理授权。

我们希望完成的一件事是通过利用Istio授权来分离服务的授权。

我们的API网关(Kong)将处理JWT令牌的验证/解析,并将任何必需的属性(用户名,组,角色等)作为标头传递,例如x-用户名:homer@somewhere.com(从服务中抽象出来)

我们要完成的工作是根据角色进行验证等,我们还想确保x用户名也是资源的所有者,例如如果他们正在访问:

/user/{userID}/resource

这意味着,如果userId与x-username标头的值匹配,我们可以继续处理请求,否则我们将发送401等

是否可以将其配置为Istio授权的一部分?

提前感谢您的时间

1 个答案:

答案 0 :(得分:1)

您正在寻找的是基于属性的访问控制()。查看授权引擎,例如直接插入Kong并提供该级别的访问控制(所有权检查)的公理学。

您还可以选择使用基于Istio的webcast的适配器从Isitio调用公理学。

公理学政策是使用XACML或authorization template编写的,XACML或ALFA是ABASIS /细粒度授权的2种OASIS标准。

您可以按照以下方式轻松编写条件:

rule checkOwner{
    deny
    condition not(owner==user.uid)
}

顺便说一句,您可能想发送回403而不是401。后者是指身份验证失败。