开发者学堂课程【微服务实战-Service Mesh 与 Istio:Istio 安全性和课程总结】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/620/detail/9439
Istio 安全性和课程总结
目录:
一、Istio 安全组件
二、双向 TLS 认证
三、Istio RBAC
四、总结
一、Istio 安全组件
Citadel 用于密钥证书管理
Sidecar 用于客户端和服务端的安全通信
Pilot 用于授权和安全命名信息分发到代理商
Mixer 用于授权和审计
这是一个相当复杂和精密的结构。
二、双向 TLS 认证
TLS认证在微服务下想要实现是比较复杂的,有一定难度的,因为在认证时需要认证机器名和ip地址,在微服务环境下,这些是不可获得的,谁也不知道会部署到哪里。
在这种情况下就提供了双向 TLS 认证,大大减轻了编程的负担。所谓双向TLS认证是指当 serviceA 认证 serviceB 时,serviceB也要向 serviceA 认证,二者是相互的,是双向互动的。
1. Envoy proxy 进行双向 TLS 认证
2.certchain.pem 是 Envoy 的证书
3. key.pem 是 Envoy 私钥
4.root-cert.pem是于证书校验的根证书
启动认证:
US-169691-MP:istio andy.shi$ kubectl get MeshPolicy
NAME AGE
default 15d//
已经被安装好了
US-169691-MP:istio andy.shi$ kubectl get MeshPolicy default -o yaml
peers:
mtls:
mode: PERMISSIVE//
通过
US-169691-MP:istio andy.shi$ kubectl exec $(kubectl getpod -1 app=productpage-0 jsonpath=t.items..metadata.name)
一istio-proxy -- is/etc/certs/cert-chain.pem | openssl x509 -text -noou t grep Validity-A 2
Validity
Not Before:Jul1121:47:10 2019 GMT
NotAfter :Oct 921:47:10 2019 GMT
US-169691-MP:istio andy.shi$//
有效性信息
三、Istio RBAC
可以定义列表来进行访问控制,可以把它与双向 TLS 认证联合起来使用。
第一种:规则的列表
apiVersion:"rbac.istio.io/v1alpha1"kind: ServiceRole
metadata:
name:products-viewer
namespace: default
spec:
rules:
- services: ["products.svc.cluster.local
”]methods: ["GET", "HEAD"]
constraints:
- key: "destination.labels[version]" value: ['v1","v2"]
第二种:与哪个列表进行绑定
apiVersion:"rbac.istio.io/v1alpha1"kind:ServiceRoleBinding
metadata:
name:test-binding-products namespace:default
spec:
subjects:
-user:alice@yahoo.com
- properties:
source.namespace:"abc"
roleRef:
kind:ServiceRole
name:"products-viewer"
四、总结
本次学习用了大量的 yuml Api。
社区文档
自行安装