-
Notifications
You must be signed in to change notification settings - Fork 0
Description
isto mixer rbac笔记:
CRD是什么CustomResourceDefinition 自定义资源定义
level
role
service -> service
endUser -> service
ServiceRole----这里面的一大堆格则,使用来干嘛的?In ServiceRole, the combination of “namespace”+“services”+“paths”+“methods” defines “how a service (services) is allowed to be accessed”.这更像一种契约,描述一个provider的属性:“namespace”,“service”,“paths”,“methods”。
ServiceRoleBinding-----这是个表格,存储有ServiceRole和一些subjects的对应关系。用来干什么呢?描述了哪些consumer可以访问哪些provider.subject是什么?主语,caller,consumer。
RBAC engin位于mixer,是mixer的一个adapter
rbac需要哪些信息?
这些信息从哪里来?
对这个图有疑问:https://istio.io/docs/concepts/security/authn-policy/ istio的配置存储在config store中,但是这些配置难道通过pilot下发到所有envoy中?但是后面又说认证的功能由mixer执行,mixer负责从config store中拉取策略信息。
基本概念:
template
instance
ACL 是啥?
JWT
go接入istio后,跟谁打交道?pilot/mixer/envoy?
流程可能是这样的:双向TLS认证,证书从哪里获取呢?
RBAC:consumer在发送请求时带上JWT信息,provider(go/envoy)解析出jwt中的信息后,生成request context,发送给mixer进行校验。
istio里config store是什么东西?
ACL 访问控制列表,一种访问控制模型。PBAC也是一种访问控制模型。
Authentication policies 是什么,具体指什么?为什么它保存在config store里面?为什么它要下发给sidecar?
认证鉴权功能并不集成在sidecar,而是在mixer里,那么sidecar和mixer如何通信,通信内容是什么?我猜是这样的:
- sidecar:这是consumer的信息,检查下他有访问权限么?
- mixer:他没有权限。
- sidecar:拒绝访问。
service account是什么?pod中的进程要访问apiServer,需要带上一个身份用于认证,这个身份就是service account。当然不仅apiserver可以去认证这个身份,pod自己也可以认证别的pod的身份,envoy就是这么干的。识别的目的是什么:识别server端的证书身份是否被允许运行server端。
tls配置项来源
istio-agent or sidecar
from lds?
认证的内容具体是什么
进行认证时,文档一边说是server端进行认证,一边又说client要检查server端证书内的身份是否能够运行这个服务端。
确认下client的tls配置中是否有认证对端这一项
https://www.envoyproxy.io/docs/envoy/v1.7.0/intro/arch_overview/ssl client/server的配置
{
"alpn_protocols": "...",
"cert_chain_file": "...",
"private_key_file": "...",
"ca_cert_file": "...",
"verify_certificate_hash": "...",
"verify_subject_alt_name": [],
"cipher_suites": "...",
"ecdh_curves": "...",
"sni": "..."
}
server
https://www.envoyproxy.io/docs/envoy/v1.7.0/api-v1/listeners/listeners#config-listener-ssl-context
{
"cert_chain_file": "...",
"private_key_file": "...",
"alpn_protocols": "...",
"alt_alpn_protocols": "...",
"ca_cert_file": "...",
"verify_certificate_hash": "...",
"verify_subject_alt_name": [],
"crl_file": "...",
"cipher_suites": "...",
"ecdh_curves": "...",
"session_ticket_key_paths": []
}
谁来认证?
- client
server端提供的证书中的身份,是否有权限运行该服务端?证书中的身份是至什么?
在handshake阶段进行该认证么?
client找谁去认证?mixer? - server
client如果提供端证书,其身份是否允许访问我?
如果不要求client提供证书,那还要验证么?
如果不要求client认证证书,但是client实际提供了证书,server端认证么
server端找谁去认证?mixer - Secure Naming: during the handshake process, the client side Envoy checks that the service account provided by the server side certificate is allowed to run the target service
istio文档内容,判断一个服务的唯一身份就是service account,但是我还要检查service account是否能云心这个服务。好比某个系统里,指纹是一个人的唯一生物学身份,我咋确认一个指纹就是某个人?
难道有一个表,可以查到service account和service的权限关系?
与mixer的交互
client/server发送元数据给mixer
client/server发送的数据有哪些?mixer认证的方式ishifou相同?
用rule控制mixer进行认证
client要验证:服务端提供的证书中的身份,是否有权限运行该服务端,这要怎么认证?mixer有这个功能么?
我只看到访问控制,没看到”运行控制“
不用考虑namespace,当前就仅针对同一个namespace