VK Cloud logo

Gatekeeper орнату

Gatekeeper — жасалатын, өзгертілетін және жойылатын Kubernetes ресурстарының саясаттарға сәйкестігін тексеру үшін Kubernetes API мен Open Policy Agent (OPA) саясаттар қозғалтқышының арасына ендірілетін контроллер. Gatekeeper туралы толығырақ ақпарат Kubernetes анықтамалығында және Gatekeeper ресми құжаттамасында берілген.

Орнату

  1. Егер утилита әлі орнатылмаған болса, Helm орнатыңыз.

  2. Командаларды орындаңыз:

    helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts; `helm install gatekeeper/gatekeeper --name-template=gatekeeper --namespace opa-gatekeeper --create-namespace

Жұмысқа қабілеттілігін тексеру

Келесі команданы орындап, Gatekeeper подтары жасалғанына және жұмыс істеп тұрғанына көз жеткізіңіз:

kubectl -n opa-gatekeeper get pods

Команда шығысында gatekeeper-audit-... және gatekeeper-controller-manager-... подтары Running күйінде болуы керек.

Шығыс мысалы:

NAME                                             READY   STATUS    RESTARTS   AGEgatekeeper-audit-...                             1/1     Running   0          ...gatekeeper-controller-manager-...                1/1     Running   0          ...

(Опционалды) Шектеулер мен үлгілерді баптау

Cloud Containers сервисіндегі Kubernetes кластерлерінде әдепкі қауіпсіздік саясаттары әрекет етеді, олар кластерді бірнеше кең таралған осалдықтан базалық деңгейде қорғайды. 1.20 немесе одан төмен нұсқадағы кластерлерді қорғау үшін осы саясаттарға сәйкес келетін Gatekeeper шектеулері мен шектеу үлгілерін өзіңіз жасаңыз.

Бұл саясат hostIPC: true және hostPID: true параметрлері арқылы Kubernetes кластері түйінінің процесстеріне және процесаралық байланыс (IPC) құралдарына қол жеткізуге тыйым салады. Толығырақ саясат сипаттамасынан оқыңыз.

Бұл саясатты кластерде баптау үшін:

  1. Gatekeeper ресурстары үшін манифесттер жасаңыз:

  2. Жасалған манифесттерді қолданыңыз:

    kubectl apply -f host-namespaces-template.yaml -f host-namespaces-constraint.yaml
  3. (Опционалды) Шектеудің жұмысын тексеріңіз:

    1. Саясатқа сәйкес келмейтін под манифестін жасаңыз:

    2. Осы манифестті қолданып көріңіз:

      kubectl apply -f pod_namespace.yaml

    Жасалатын под үшін саясаттың бұзылғаны туралы ұқсас хабарлама шығарылады:

    Error from server ([...] Sharing the host namespace is not allowed: nginx-host-namespace-disallowed): error when creating "pod_namespace.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [...] Sharing the host namespace is not allowed: nginx-host-namespace-disallowed

    Саясатты бұзған под жасалмайды.

Жою

  1. Gatekeeper-ді жою үшін команданы орындаңыз:

    helm delete gatekeeper --namespace opa-gatekeeper
  2. Gatekeeper үшін жасалған CRD-объектілерін жою үшін команданы орындаңыз:

    kubectl delete crd -l gatekeeper.sh/system=yes