1.13.2. 配置基于角色的访问控制(RBAC)
基于角色的访问控制 (RBAC) 对象决定是否允许用户或服务在项目内执行给定的操作。您可以为网格中的工作负载定义 mesh-、namespace- 和工作负载范围访问控制。
要配置 RBAC,在您要配置访问权限的命名空间中创建一个 AuthorizationPolicy
资源。如果要配置网格范围访问,请使用安装 Service Mesh control plane 的项目,如 istio-system
。
例如,对于 RBAC,您可以创建以下策略:
- 配置项目内部通信。
- 允许或拒绝对默认命名空间中所有工作负载的完全访问。
- 允许或拒绝入口网关访问。
- 需要令牌才能访问。
授权策略包括选择器、操作和规则列表:
-
selector
字段指定策略的目标。 -
action
字段指定是否允许或拒绝请求。 rules
字段指定何时触发操作。-
from
字段指定请求来源的限制。 -
to
字段指定请求目标和参数的限制。 -
when
字段指定应用该规则的其他条件。
-
流程
创建
AuthorizationPolicy
资源。以下示例显示了一个更新 ingress-policyAuthorizationPolicy
的资源,以拒绝 IP 地址访问入口网关。apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: ingress-policy namespace: istio-system spec: selector: matchLabels: app: istio-ingressgateway action: DENY rules: - from: - source: ipBlocks: ["1.2.3.4"]
在编写资源以便在命名空间中创建资源后运行以下命令。命名空间必须与
AuthorizationPolicy
资源中的metadata.namespace
字段匹配。$ oc create -n istio-system -f <filename>
后续步骤
考虑以下示例用于其他通用配置。
1.13.2.1. 配置项目内部通信
您可以使用 AuthorizationPolicy
配置 Service Mesh control plane,以允许或拒绝与网格中的网格或服务通信的流量。
1.13.2.1.1. 限制对命名空间外服务的访问
您可以使用以下 AuthorizationPolicy
资源示例拒绝来自 bookinfo
命名空间中没有的源的请求。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin-deny namespace: bookinfo spec: selector: matchLabels: app: httpbin version: v1 action: DENY rules: - from: - source: notNamespaces: ["bookinfo"]
1.13.2.1.2. 创建 allow-all 和 default deny-all 授权策略
以下示例显示了一个 allow-all 授权策略,允许对 bookinfo
命名空间中的所有工作负载进行完全访问。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-all namespace: bookinfo spec: action: ALLOW rules: - {}
以下示例显示了拒绝对 bookinfo
命名空间中的所有工作负载的访问的策略。
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: deny-all namespace: bookinfo spec: {}