In Antrea, un livello è costituito da determinati criteri di rete raggruppati in modo gerarchico. Un NetworkPolicy
nativo di Antrea o una definizione di risorsa personalizzata (CRD) ClusterNetworkPolicy
include un riferimento facoltativo al livello a cui appartiene. Durante il filtro del traffico di rete, vengono applicati innanzitutto i criteri di rete di Antrea associati ai livelli di ordine superiore (che hanno un valore di priorità numerico basso). Per ulteriori informazioni sui vari tipi di livelli in Antrea, vedere CRD dei criteri di rete di Antrea.
L'accesso basato sui ruoli in un livello è progettato per garantire che solo gli utenti autorizzati possano fare riferimento a un livello nei criteri nativi di Antrea. Consente a un amministratore del cluster di collegare i criteri di rete di Antrea a un livello con priorità alta e impedisce a un utente normale di collegare i criteri di rete di Antrea al livello. Questa funzionalità consente all'amministratore del cluster di applicare in un cluster criteri di sicurezza che non possono essere sostituiti da un utente normale.
Antrea include sei livelli con priorità statiche. Per impostazione predefinita, solo gli amministratori di Kubernetes possono creare livelli personalizzati in Antrea. Per fornire agli utenti le autorizzazioni per creare nuovi livelli e modificare le priorità dei livelli, configurare le impostazioni ClusterRole
e ClusterRoleBinding
nel contesto del cluster del carico di lavoro.
Passare al contesto del cluster del carico di lavoro:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
Creare un file YAML ClusterRoleBinding
, come illustrato nell'esempio seguente (all'utente securityops
sono state concesse le autorizzazioni per leggere, creare, eliminare e aggiornare le risorse del livello):
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
Applicare le definizioni:
kubectl apply -f ClusterRoleBinding.yaml
Per impostazione predefinita, tutti gli utenti possono collegare un criterio di rete di Antrea a un livello qualsiasi. Per fornire a un set di utenti le autorizzazioni per fare riferimento a un livello in un criterio di rete di Antrea e bloccare tutti gli altri utenti, creare una CRD TierEntitlement
e assegnare il permesso agli utenti desiderati tramite una CRD TierEntitlementBinding
.
Passare al contesto del cluster del carico di lavoro:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
Creare un file YAML della CRD TierEntitlement
, come illustrato nell'esempio seguente:
apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
kind: TierEntitlement
metadata:
name: emergency-edit
spec:
tiers: ["emergency"]
permission: "edit"
Nota
Edit
è l'unica autorizzazione valida in questo caso. Consente agli utenti autorizzati di creare, eliminare e aggiornare i criteri nativi di Antrea che appartengono ai livelli elencati, nonché applicare patch a tali criteri.
Applicare il file CRD:
kubectl apply -f TierEntitlement.yaml
Creare un file YAML della CRD TierEntitlementBinding
per associare il permesso agli utenti, come illustrato nell'esempio seguente:
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
In questo esempio, il permesso emergency-edit
del livello è stato assegnato agli utenti specificati nel campo subjects
. Gli utenti supportati che possono essere specificati in subjects
sono User, Group e ServiceAccount. Per ulteriori informazioni, vedere Utilizzo delle autorizzazioni RBAC.
Applicare il file CRD:
kubectl apply -f TierEntitlementBinding.yaml
Nei due file YAML di esempio precedenti, il livello emergency
è controllato dal permesso emergency-edit
del livello. Agli utenti a cui è stato assegnato il permesso emergency-edit
vengono concesse determinate autorizzazioni, mentre gli altri utenti (denominati normalUser
) non possono eseguire determinate azioni. Ad esempio:
securityops
può creare un criterio di rete del cluster di Antrea, ovvero un ACNP (Antrea ClusterNetworkPolicy) o un criterio di rete di Antrea, ovvero un ANP (Antrea NetworkPolicy), che abbia nella specifica un riferimento al livello emergency
.securityops
può aggiornare o applicare una patch a un ACNP oppure a un ANP esistente e aggiungere un riferimento al livello emergency
nella sua specifica (se l'utente securityops
dispone delle autorizzazioni per modificare un riferimento al livello esistente).securityops
può aggiornare o applicare una patch a un ACNP oppure a un ANP esistente e rimuovere il riferimento al livello emergency
dalla sua specifica.securityops
può eliminare un ACNP o un ANP esistente che ha un riferimento al livello emergency
nella sua specifica.securityops
può recuperare i dettagli di un ACNP o un ANP esistente che ha un riferimento al livello emergency
nella sua specifica.normalUser
che tenta di creare un ACNP o un ANP con un riferimento al livello emergency
nella specifica, viene negata l'autorizzazione.normalUser
che tenta di eliminare un ACNP o un ANP con un riferimento al livello emergency
nella specifica, viene negata l'autorizzazione.normalUser
che tenta di aggiornare o applicare una patch a un ACNP o un ANP con un riferimento al livello emergency
nella specifica, viene negata l'autorizzazione.NotaPer informazioni su come impostare i criteri di rete del cluster per Antrea, vedere Impostazione dei criteri di rete del cluster per Antrea.