Antrea에서 계층은 계층 방식으로 그룹화된 특정 네트워크 정책으로 구성됩니다. Antrea 네이티브 NetworkPolicy
또는 ClusterNetworkPolicy
CRD(사용자 지정 리소스 정의)에는 여기에 속하는 계층의 선택적 참조가 포함되어 있습니다. 네트워크 트래픽을 필터링하는 동안 상위 계층(낮은 숫자 우선 순위 값)과 연결된 Antrea NetworkPolicies가 먼저 적용됩니다. Antrea의 다양한 계층 유형에 대한 자세한 내용은 Antrea 네트워크 정책 CRD를 참조하십시오.
계층에 대한 역할 기반 액세스는 인증된 사용자만 Antrea 네이티브 정책에서 계층을 참조할 수 있도록 설계되었습니다. 이를 통해 클러스터 관리자는 Antrea NetworkPolicies를 높은 우선 순위 계층에 연결하고 일반 사용자가 Antrea NetworkPolicies를 계층에 연결하지 못하게 합니다. 이 기능은 클러스터 관리자가 일반 사용자가 재정의할 수 없는 클러스터에서 보안 정책을 적용하는 데 도움이 됩니다.
Antrea는 정적 우선 순위가 있는 6개의 계층을 제공합니다. 기본적으로 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
아래에 지정할 수 있는 지원되는 사용자는 사용자, 그룹, ServiceAccount입니다. 자세한 내용은 RBAC 인증 사용을 참조하십시오.
CRD를 적용합니다.
kubectl apply -f TierEntitlementBinding.yaml
위의 두 샘플 YAML 파일에서 emergency
계층은 emergency-edit
계층 사용 권한으로 제어됩니다. emergency-edit
사용 권한이 할당된 사용자에게는 특정 사용 권한이 부여되지만 다른 사용자(normalUser
라고 함)는 특정 작업을 수행할 수 없습니다. 예:
securityops
사용자는 규격에 emergency
계층에 대한 참조가 있는 Antrea ACNP(ClusterNetworkPolicy) 또는 ANP(Antrea NetworkPolicy)를 생성할 수 있습니다.securityops
사용자는 기존 ACNP 또는 ANP를 업데이트하거나 패치하고 해당 규격의 emergency
계층에 대한 참조를 추가할 수 있습니다(securityops
사용자에게 기존 계층에 대한 참조를 편집할 수 있는 사용 권한이 있는 경우).securityops
사용자는 기존 ACNP 또는 ANP를 업데이트하거나 패치를 적용하고 해당 규격에서 emergency
계층에 대한 참조를 제거할 수 있습니다.securityops
사용자는 기존 ACNP 또는 ANP를 삭제할 수 있습니다. 이 ACNP에는 해당 규격의 emergency
계층에 대한 참조가 있습니다.securityops
사용자는 기존 ACNP 또는 ANP의 세부 정보를 가져올 수 있습니다. 여기에는 해당 규격의 emergency
계층에 대한 참조가 있습니다.normalUser
규격에서 emergency
계층에 대한 참조가 있는 권한은 거부됩니다.normalUser
규격에서 emergency
계층에 대한 참조가 있는 권한은 거부됩니다.normalUser
규격에서 emergency
계층에 대한 참조가 있는 권한은 거부됩니다.참고Antrea의 클러스터 네트워크 정책을 설정하는 방법은 Antrea의 클러스터 네트워크 정책 설정을 참조하십시오.