安全保障基于软件全生命周期-Istio的授权机制

Istio 的授权功能为网格中的工作负载提供网格、命名空间和工作负载级别的访问控制。授权架构如下所示:

 每个 Envoy 代理都运行一个授权引擎,该引擎在运行时授权请求。当请求到达代理时,授权引擎根据当前授权策略评估请求上下文,并返回授权结果 ALLOW 或 DENY。 运维人员使用 .yaml 文件指定 Istio 授权策略。需要注意:拒绝策略优先于允许策略
授权策略配置规则如下所示:
要配置授权策略,请创建一个 AuthorizationPolicy 自定义资源。一个授权策略包括选择器(selector),动作(action) 和一个规则(rules)列表:
selector 字段指定策略的目标
action 字段指定允许还是拒绝请求
rules 指定何时触发动作
rules 下的 from 字段指定请求的来源
rules 下的 to 字段指定请求的操作
rules 下的 when 字段指定应用规则所需的条件

下面通过实际例子来看看AuthorizationPolicy的规则。这里要沿用上一篇博客在foo和bar namespace下面创建的httpbin和sleep服务。

案例一:允许所有请求的AuthorizationPolicy,spec中不配置任何规则,即允许所有请求。

kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: allow-nothing
  namespace: foo
spec:
  {}
EOF

创建该AuthorizationPolicy后,从bar.sleep访问foo.httpbin和foo.sleep访问foo.httpbin都能成功

kubectl exec "$(kubectl get pod -l app=sleep -n bar -o jsonpath={.items..metadata.name})" -c sleep -n bar -- curl http://httpbin.foo:8000/headers

kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- curl http://httpbin.foo:8000/headers

案例二:创建另外一个AuthorizationPolicy, 只控制了rule/to即允许访问foo namespace下的httpbin的GET请求。故创建下面的Policy后,通过上面的命令访问仍然能访问成功。

kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: "httpbin-viewer"
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  action: ALLOW
  rules:
  - to:
    - operation:
        methods: ["GET"]
EOF

案例三:接着再创建一个定义了From的AuthorizationPolicy,允许bar namespace下的sa=sleep的来源访问foo下面的httpbin的GET请求。

kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: "httpbin-viewer"
  namespace: foo
spec:
  selector:
    matchLabels:
      app: httpbin
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/bar/sa/sleep"]
    to:
    - operation:
        methods: ["GET"]
EOF

再次用上面的命令访问,可以看到如果用foo namespace下的sa访问提示access deny。

 上面通过实际例子演示了如何通过配置AuthorizationPolicy来控制应用于应用间访问授权。更多AuthorizationPolicy的配置规则可查看官网信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值