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



研究使用 Istio 来处理基于 Kubernetes 中微服务架构构建的应用程序的授权。

我们希望完成的一件事是通过使用 Istio 授权来解耦服务的授权。

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

我们想要完成的是,除了基于角色等进行验证外,我们还希望确保 x 用户名也是资源的所有者,例如,如果他们正在访问:

/user/{userID}/resource

这意味着如果userId与x用户名标头的值匹配,我们可以继续为请求提供服务,否则我们将发送401等

有没有办法将其配置为 Istio 授权的一部分?

提前感谢您的时间

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

  • GitHub 上的 Kong 授权处理程序

  • 关于集成的技术网播

您也可以选择使用基于 Istio 授权模板的适配器从 Isitio 调用 Axiomatics。

公理中的策略是使用 XACML 或 ALFA 编写的,它们是 ABAC/细粒度授权的 2 个 OASIS 标准。

您可以轻松地编写如下条件:

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

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

相关内容

最新更新