管理 Antrea 中的层

在 Antrea 中,层由按层次结构方式分组的某些网络策略组成。Antrea 本机 NetworkPolicyClusterNetworkPolicy 自定义资源定义 (CRD) 包含对所属层的可选引用。在筛选网络流量期间,将首先实施与较高顺序层(数字优先级值较低)关联的 Antrea 网络策略。有关 Antrea 中各种类型的层的详细信息,请参见 Antrea 网络策略 CRD

在层上配置基于角色的访问设置

对层进行基于角色的访问旨在确保只有授权用户可以在 Antrea 本机策略中引用层。它允许集群管理员将 Antrea 网络策略连接到高优先级层,并阻止普通用户将 Antrea 网络策略连接到层。此功能可帮助集群管理员在普通用户无法覆盖的集群中强制执行安全策略。

为用户提供编辑层的权限

Antrea 为六个层提供静态优先级。默认情况下,只有 Kubernetes 管理员可以在 Antrea 中创建自定义层。要为用户提供创建新层和编辑层优先级的权限,请在工作负载集群上下文中配置 ClusterRoleClusterRoleBinding 设置。

  1. 切换到工作负载集群上下文:

    kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
    
  2. 创建 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
    
  3. 应用定义:

    kubectl apply -f ClusterRoleBinding.yaml
    

向用户提供权限以在 Antrea 网络策略中引用层

默认情况下,任何用户可以将 Antrea 网络策略附加到任何层。要为一组用户在 Antrea 网络策略中引用层的权限并阻止所有其他用户,请创建 TierEntitlement CRD,并通过 TierEntitlementBinding CRD 将授权分配给允许的用户。

  1. 切换到工作负载集群上下文:

    kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
    
  2. 创建 TierEntitlement CRD YAML 文件,如以下示例中所示:

    apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
    kind: TierEntitlement
    metadata:
      name: emergency-edit
    spec:
      tiers:          ["emergency"]
      permission:     "edit"
    
    注意

    Edit 是唯一在此处有效的权限。它允许授权用户创建、删除、更新和修补属于所列层的 Antrea 本机策略。

  3. 应用 CRD:

    kubectl apply -f TierEntitlement.yaml
    
  4. 创建 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 授权

  5. 应用 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 层。
  • 尝试创建 ACNP 或 ANP(在其规范中引用了 emergency 层)的 normalUser 权限被拒绝。
  • 尝试删除 ACNP 或 ANP(其规范中引用了emergency 层)的 normalUser 权限被拒绝。
  • 尝试更新或修补 ACNP 或 ANP(其规范中引用了 emergency 层)的 normalUser 权限被拒绝。
注意

要了解如何为 Antrea 设置集群网络策略,请参见为 Antrea 设置集群网络策略

check-circle-line exclamation-circle-line close-line
Scroll to top icon