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:
{}