在 Antrea 中,层由按层次结构方式分组的某些网络策略组成。Antrea 本机 NetworkPolicy
或 ClusterNetworkPolicy
自定义资源定义 (CRD) 包含对所属层的可选引用。在筛选网络流量期间,将首先实施与较高顺序层(数字优先级值较低)关联的 Antrea 网络策略。有关 Antrea 中各种类型的层的详细信息,请参见 Antrea 网络策略 CRD。
对层进行基于角色的访问旨在确保只有授权用户可以在 Antrea 本机策略中引用层。它允许集群管理员将 Antrea 网络策略连接到高优先级层,并阻止普通用户将 Antrea 网络策略连接到层。此功能可帮助集群管理员在普通用户无法覆盖的集群中强制执行安全策略。
Antrea 为六个层提供静态优先级。默认情况下,只有 Kubernetes 管理员可以在 Antrea 中创建自定义层。要为用户提供创建新层和编辑层优先级的权限,请在工作负载集群上下文中配置 ClusterRole
和 ClusterRoleBinding
设置。
切换到工作负载集群上下文:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
创建 ClusterRoleBinding
YAML 文件,如以下示例中所示(为 securityops
用户提供了读取、创建、删除和更新层资源的能力):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tier-edit
rules:
- apiGroups: ["crd.antrea.io"]
resources: ["tiers"]
verbs: ["get", "list", "create", "patch", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tier-bind
subjects:
- kind: User
name: securityops # Name is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: tier-edit
apiGroup: rbac.authorization.k8s.io
应用定义:
kubectl apply -f ClusterRoleBinding.yaml
默认情况下,任何用户可以将 Antrea 网络策略附加到任何层。要为一组用户在 Antrea 网络策略中引用层的权限并阻止所有其他用户,请创建 TierEntitlement
CRD,并通过 TierEntitlementBinding
CRD 将授权分配给允许的用户。
切换到工作负载集群上下文:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
创建 TierEntitlement
CRD YAML 文件,如以下示例中所示:
apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
kind: TierEntitlement
metadata:
name: emergency-edit
spec:
tiers: ["emergency"]
permission: "edit"
注意
Edit
是唯一在此处有效的权限。它允许授权用户创建、删除、更新和修补属于所列层的 Antrea 本机策略。
应用 CRD:
kubectl apply -f TierEntitlement.yaml
创建 TierEntitlementBinding
CRD YAML 文件以将授权与用户关联,如以下示例中所示:
apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
kind: TierEntitlementBinding
metadata:
name: emergency-sec-bind
spec:
subjects:
- kind: User
name: securityops
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: security-admins
apiGroup: rbac.authorization.k8s.io
- kind: ServiceAccount
name: network-admins
namespace: kube-system
tierEntitlement: emergency-edit
在此示例中,emergency-edit
层授权已分配给在 subjects
字段下指定的用户。可以在 subjects
下指定的用户为用户、组和服务帐户。有关详细信息,请参见使用 RBAC 授权。
应用 CRD:
kubectl apply -f TierEntitlementBinding.yaml
在上面的两个 YAML 文件示例中,emergency
层由 emergency-edit
层授权控制。分配了 emergency-edit
授权的用户被授予某些权限,而其他用户(称为 normalUser
)则无法执行某些操作。例如:
securityops
用户可以创建 Antrea ClusterNetworkPolicy (ACNP) 或 Antrea NetworkPolicy (ANP),其规范中引用了 emergency
层。securityops
用户可以更新或修补现有的 ACNP 或 ANP,并在其规范中添加对 emergency
层的引用(如果 securityops
用户有权编辑对现有层的引用)。securityops
用户可以更新或修补现有的 ACNP 或 ANP,并从其规范中移除对 emergency
层的引用。securityops
用户可以删除其规范中引用了 emergency
层的现有 ACNP 或 ANP。securityops
用户可以获取现有 ACNP 或 ANP 的详细信息,ACNP 或 ANP 在其规范中引用了 emergency
层。emergency
层)的 normalUser
权限被拒绝。emergency
层)的 normalUser
权限被拒绝。emergency
层)的 normalUser
权限被拒绝。注意要了解如何为 Antrea 设置集群网络策略,请参见为 Antrea 设置集群网络策略。