The ABC of Security in Kubernetes: Authentication, Authorization, Auditing

The ABC of Security in Kubernetes: Authentication, Authorization, Auditing

Na ho ela na ho haingana, amin'ny fampandehanana ny rafitra rehetra dia mipoitra ny olana momba ny fiarovana: fiantohana ny fanamarinana, fanasarahana ny zo, fanaraha-maso ary asa hafa. Efa noforonina ho an'ny Kubernetes vahaolana maro, izay ahafahanao manatratra ny fanarahan-dalΓ na na dia ao anatin'ny tontolo sarotra aza... Ny fitaovana mitovy amin'izany dia natokana ho an'ny lafiny fototra amin'ny fiarovana izay ampiharina ao anatin'ny rafitra naorina ao amin'ny K8. Voalohany indrindra, ilaina ho an'ireo izay manomboka mifankazatra amin'ny Kubernetes - ho fanombohana amin'ny fandalinana ireo olana mifandraika amin'ny fiarovana.

fanamarinana

Misy karazany roa ny mpampiasa ao amin'ny Kubernetes:

  • Kaonty serivisy β€” kaonty tantanin'ny Kubernetes API;
  • Users β€” Mpampiasa β€œara-dalΓ na” tantanin'ny serivisy ivelany tsy miankina.

Ny fahasamihafana lehibe eo amin'ireo karazana ireo dia ny hoe ho an'ny kaonty serivisy misy zavatra manokana ao amin'ny Kubernetes API (antsoina hoe - ServiceAccounts), izay mifamatotra amin'ny toeran'ny anarana sy ny angon-drakitra fanomezan-dΓ lana voatahiry ao amin'ny cluster amin'ny zavatra amin'ny karazana Secrets. Ireo mpampiasa (Kaonty Serivisy) ireo dia natao indrindra hitantana ny zo fidirana amin'ny Kubernetes API amin'ireo dingana mandeha ao amin'ny cluster Kubernetes.

Ny mpampiasa tsotra dia tsy manana fidirana ao amin'ny Kubernetes API: tsy maintsy tantanan'ny rafitra ivelany izy ireo. Izy ireo dia natao ho an'ny olona na dingana miaina ivelan'ny cluster.

Ny fangatahana API tsirairay dia mifandray amin'ny kaonty serivisy, mpampiasa, na heverina ho tsy fantatra anarana.

Ny angon-drakitra fanamarinana mpampiasa dia misy:

  • Username - solon'anarana (zava-dehibe!);
  • UID - tady famantarana ny mpampiasa azo vakin'ny milina izay β€œmirindra kokoa sy miavaka kokoa noho ny solonanarana”;
  • Groups - lisitry ny vondrona misy ny mpampiasa;
  • Extra - sehatra fanampiny azo ampiasaina amin'ny alΓ lan'ny mekanika fanomezan-dΓ lana.

Ny Kubernetes dia afaka mampiasa mekanika fanamarinana marobe: mari-pankasitrahana X509, token'ny mpitondra, proxy manamarina, Fanamarinana fototra HTTP. Amin'ny fampiasana ireo mekanika ireo dia azonao atao ny mampihatra tetika fanomezan-dΓ lana marobe: avy amin'ny rakitra static misy tenimiafina mankany amin'ny OpenID OAuth2.

Ankoatra izany, azo atao ny mampiasa tetika fanomezan-dΓ lana maromaro miaraka. Amin'ny alΓ lan'ny default, ny cluster dia mampiasa:

  • kaonty kaonty serivisy - ho an'ny kaonty serivisy;
  • X509 - ho an'ny mpampiasa.

Ny fanontaniana momba ny fitantanana ny ServiceAccounts dia tsy tafiditra ao anatin'ity lahatsoratra ity, fa ho an'ireo izay te hahafantatra bebe kokoa momba ity olana ity dia manoro hevitra aho hanomboka amin'ny pejy antontan-taratasy ofisialy. Hojerentsika akaiky ny olana momba ny fomba fiasan'ny fanamarinana X509.

Taratasy ho an'ny mpampiasa (X.509)

Ny fomba fiasa mahazatra amin'ny fanamarinana dia ahitana:

  • famoronana fototra:
    mkdir -p ~/mynewuser/.certs/
    openssl genrsa -out ~/.certs/mynewuser.key 2048
  • famoronana taratasy fangatahana:
    openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company"
  • fanodinana fangatahana certificat amin'ny alΓ lan'ny fanalahidin'ny Kubernetes cluster CA, ny fahazoana mari-pankasitrahana ho an'ny mpampiasa (mba hahazoana mari-pankasitrahana dia tsy maintsy mampiasa kaonty manana fidirana amin'ny fanalahidy CA cluster Kubernetes ianao, izay hita ao amin'ny default. /etc/kubernetes/pki/ca.key):
    openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500
  • mamorona rakitra fanamafisana:
    • famaritana cluster (farito ny adiresy sy ny toerana misy ny rakitra fanamarinana CA ho an'ny fametrahana cluster manokana):
      kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443
    • sa ahoana tsysafidy soso-kevitra - tsy mila mamaritra ny taratasy fanamarinana fototra ianao (dia tsy hanamarina ny fahamarinan'ny api-server an'ny cluster ny kubectl):
      kubectl config set-cluster kubernetes  --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443
    • manampy mpampiasa amin'ny fisie fanamafisana:
      kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt  --client-key=.certs/mynewuser.key
    • manampy contexte:
      kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser
    • fanendrena contexte default:
      kubectl config use-context mynewuser-context

Aorian'ny fanodinkodinana etsy ambony, ao anaty rakitra .kube/config config toy izao no hatsangana:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://192.168.100.200:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: target-namespace
    user: mynewuser
  name: mynewuser-context
current-context: mynewuser-context
kind: Config
preferences: {}
users:
- name: mynewuser
  user:
    client-certificate: /home/mynewuser/.certs/mynewuser.crt
    client-key: /home/mynewuser/.certs/mynewuser.key

Mba hanamora ny famindrana ny config eo amin'ny kaonty sy ny mpizara dia ilaina ny manova ny soatoavin'ireto fanalahidy manaraka ireto:

  • certificate-authority
  • client-certificate
  • client-key

Mba hanaovana izany, azonao atao ny manidy ny rakitra voatondro ao amin'izy ireo amin'ny alΓ lan'ny base64 ary manoratra azy ireo ao amin'ny config, manampy ny suffix amin'ny anaran'ny fanalahidy. -data, i.e. rehefa nahazo certificate-authority-data ary ny toy izany.

Certificat misy kubeadm

Miaraka amin'ny famoahana Kubernetes 1.15 Lasa mora kokoa ny miasa miaraka amin'ny fanamarinana noho ny dikan-teny alpha amin'ny fanohanana azy kubeadm utility. Ohatra, toy izao no mety ho endriky ny famoronana rakitra fikirakirana miaraka amin'ny fanalahidin'ny mpampiasa:

kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200

NB: Takina adiresy doka dia hita ao amin'ny config api-server, izay hita ao amin'ny default /etc/kubernetes/manifests/kube-apiserver.yaml.

Ny config vokatr'izany dia hivoaka amin'ny stdout. Mila tehirizina ao ~/.kube/config kaonty mpampiasa na amin'ny rakitra voatondro ao amin'ny fari-piainan'ny tontolo iainana KUBECONFIG.

Dig Deeper

Ho an'ireo izay te-hahatakatra ireo olana voalaza mazava kokoa:

alΓ lana

Ny kaonty nahazo alalana default dia tsy manana zo hiasa amin'ny cluster. Mba hanomezana alalana dia mametraka rafitra fanomezan-dΓ lana i Kubernetes.

Talohan'ny version 1.6, nampiasa karazana fanomezan-dΓ lana antsoina hoe Kubernetes ABACA (Fifehezana fidirana mifototra amin'ny toetra). Ny antsipiriany momba izany dia azo jerena ao amin'ny antontan-taratasy ofisialy. Ity fomba fiasa ity dia heverina ho lova, saingy mbola azonao ampiasaina miaraka amin'ireo karazana fanamarinana hafa.

Ny fomba ankehitriny (ary mora kokoa) amin'ny fizarana zo fidirana amin'ny cluster dia antsoina RBAC (Fanaraha-maso fidirana ifotoran'ny andraikitra). Nambara fa stable hatramin'ny dikan-teny Kubernetes 1.8. Ny RBAC dia mametraka modely momba ny zo izay voarara ny zavatra rehetra tsy avela mazava.
Mba hahafahan'ny RBAC, mila manomboka Kubernetes api-server ianao miaraka amin'ny parameter --authorization-mode=RBAC. Ny mari-pamantarana dia napetraka ao amin'ny manifest miaraka amin'ny fanamafisam-peo api-server, izay eo amin'ny lalana no misy azy /etc/kubernetes/manifests/kube-apiserver.yaml, ao amin'ny fizarana command. Na izany aza, ny RBAC dia efa alefa amin'ny alΓ lan'ny default, ka azo inoana fa tsy tokony hanahy momba izany ianao: azonao atao ny manamarina izany amin'ny sandany. authorization-mode (ao amin'ny efa voalaza kube-apiserver.yaml). Raha ny marina, anisan'ny dikan'izany dia mety misy karazana fanomezan-dΓ lana hafa (node, webhook, always allow), fa hamela ny fandinihany azy ireo ivelan'ny faritry ny fitaovana.

Raha ny marina, efa namoaka izahay lahatsoratra miaraka amin'ny famaritana mazava tsara ny fitsipika sy ny endri-javatra amin'ny fiaraha-miasa amin'ny RBAC, noho izany dia hametra ny tenako amin'ny lisitra fohy momba ny fototra sy ny ohatra aho.

Ireto sampana API manaraka ireto dia ampiasaina hifehezana ny fidirana ao amin'ny Kubernetes amin'ny alΓ lan'ny RBAC:

  • Role ΠΈ ClusterRole - anjara asa mamaritra ny zo fidirana:
  • Role mamela anao hamaritra zo ao anatin'ny namespace;
  • ClusterRole - ao anatin'ny kluster, ao anatin'izany ny zavatra manokana cluster toy ny nodes, url tsy loharanon-karena (izany hoe tsy mifandray amin'ny loharanon-karena Kubernetes - ohatra, /version, /logs, /api*);
  • RoleBinding ΠΈ ClusterRoleBinding - ampiasaina amin'ny famatorana Role ΠΈ ClusterRole amin'ny mpampiasa, vondrona mpampiasa na ServiceAccount.

Ny sampan-draharahan'ny Role sy RoleBinding dia voafetra amin'ny toeran'ny anarana, izany hoe. dia tsy maintsy ao anatin'ny namespace mitovy. Na izany aza, ny RoleBinding dia afaka manondro ClusterRole, izay ahafahanao mamorona andiana fahazoan-dΓ lana ankapobeny sy mifehy ny fidirana amin'ny fampiasana azy ireo.

Ny andraikitra dia mamaritra ny zo amin'ny fampiasana andian-dalΓ na misy:

  • Vondrona API - jereo antontan-taratasy ofisialy amin'ny apiGroups sy output kubectl api-resources;
  • harena (loharanon-karena: pod, namespace, deployment sy ny sisa.);
  • matoanteny (teny: set, update ary ny toy izany).
  • anarana loharano (resourceNames) - raha toa ka mila manome fidirana amin'ny loharano manokana ianao, fa tsy amin'ny loharano rehetra amin'ity karazana ity.

Ny famakafakana amin'ny antsipiriany bebe kokoa momba ny fanomezan-dΓ lana ao amin'ny Kubernetes dia azo jerena ao amin'ny pejy antontan-taratasy ofisialy. Ho solon'izay (na ny marimarina kokoa, ho fanampin'ity) dia hanome ohatra izay mampiseho ny asany aho.

Ohatra amin'ny sampana RBAC

tsotra Role, izay ahafahanao mahazo lisitra sy satan'ny pods ary manara-maso azy ireo ao amin'ny namespace target-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: target-namespace
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

ohatra ClusterRole, izay ahafahanao mahazo lisitra sy satan'ny pods ary manara-maso azy ireo manerana ny cluster:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  # сСкции "namespace" Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ClusterRole задСйствуСт вСсь кластСр
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

ohatra RoleBinding, izay ahafahan'ny mpampiasa mynewuser "vakio" pods amin'ny namespace my-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: target-namespace
subjects:
- kind: User
  name: mynewuser # имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ зависимо ΠΎΡ‚ рСгистра!
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role # здСсь Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ β€œRole” ΠΈΠ»ΠΈ β€œClusterRole”
  name: pod-reader # имя Role, Ρ‡Ρ‚ΠΎ находится Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ namespace,
                   # ΠΈΠ»ΠΈ имя ClusterRole, использованиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ
                   # Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
  apiGroup: rbac.authorization.k8s.io

Fanamarinana hetsika

Amin'ny ankapobeny, ny maritrano Kubernetes dia azo aseho toy izao manaraka izao:

The ABC of Security in Kubernetes: Authentication, Authorization, Auditing

Ny singa fototra Kubernetes tompon'andraikitra amin'ny fanodinana ny fangatahana dia api-server. Mandalo azy ny asa rehetra ao amin'ny cluster. Azonao atao ny mamaky bebe kokoa momba ireo mekanika anatiny ireo ao amin'ny lahatsoratra "Inona no mitranga ao amin'ny Kubernetes rehefa mihazakazaka kubectl run ianao?".

Ny fanaraha-maso ny rafitra dia endri-javatra mahaliana ao amin'ny Kubernetes, izay kilemaina amin'ny alΓ lan'ny default. Izany dia ahafahanao mampiditra ny antso rehetra amin'ny Kubernetes API. Araka ny mety ho eritreretinao, ny hetsika rehetra mifandraika amin'ny fanaraha-maso sy ny fanovana ny toetry ny cluster dia atao amin'ny alΓ lan'ity API ity. Ny famaritana tsara ny fahaizany dia azo (tahaka ny mahazatra) hita ao antontan-taratasy ofisialy K8s. Manaraka izany dia hiezaka ny hanolotra ilay lohahevitra amin’ny fiteny tsotra kokoa aho.

Ary noho izany, mba ahafahana manao audit, mila mampita masontsivana telo takiana amin'ny kaontenera ao amin'ny api-server isika, izay voafaritra amin'ny antsipiriany etsy ambany:

  • --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
  • --audit-log-path=/var/log/kube-audit/audit.log
  • --audit-log-format=json

Ho fanampin'ireo mari-pamantarana telo ilaina ireo, dia misy toe-javatra fanampiny maro mifandraika amin'ny fanaraha-maso: manomboka amin'ny fihodinan'ny log mankany amin'ny famaritana webhook. Ohatra amin'ny masontsivana fihodinan'ny log:

  • --audit-log-maxbackup=10
  • --audit-log-maxsize=100
  • --audit-log-maxage=7

Saingy tsy hiresaka momba azy ireo amin'ny antsipiriany bebe kokoa izahay - afaka mahita ny antsipiriany rehetra ianao antontan-taratasy kube-apiserver.

Araka ny efa voalaza, ny paramètre rehetra dia napetraka ao amin'ny manifest miaraka amin'ny configuration api-server (amin'ny alàlan'ny default /etc/kubernetes/manifests/kube-apiserver.yaml), ao amin'ny fizarana command. Andao hiverina amin'ny masontsivana 3 ilaina ary hamakafaka azy ireo:

  1. audit-policy-file - lalana mankany amin'ny rakitra YAML mamaritra ny politikan'ny fanaraha-maso. Hiverina amin'ny votoatiny isika any aoriana, fa amin'izao fotoana izao dia homarihiko fa ny rakitra dia tsy maintsy vakiana amin'ny alΓ lan'ny fizotry ny api-server. Noho izany dia ilaina ny mametraka azy ao anatin'ny fitoeran-javatra, izay ahafahanao manampy ity kaody manaraka ity amin'ny fizarana mifanaraka amin'ny config:
      volumeMounts:
        - mountPath: /etc/kubernetes/policies
          name: policies
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/policies
          type: DirectoryOrCreate
        name: policies
  2. audit-log-path - lalana mankany amin'ny rakitra log. Ny lalana dia tsy maintsy azo idirana amin'ny fizotry ny mpizara api ihany koa, noho izany dia mamaritra ny fametrahana azy amin'ny fomba mitovy izahay:
      volumeMounts:
        - mountPath: /var/log/kube-audit
          name: logs
          readOnly: false
      volumes:
      - hostPath:
          path: /var/log/kube-audit
          type: DirectoryOrCreate
        name: logs
  3. audit-log-format - endrika log audit. Ny default dia json, fa misy ihany koa ny endrika lahatsoratra lova (legacy).

Politika fanaraha-maso

Ankehitriny momba ny rakitra voalaza mamaritra ny politikan'ny logging. Ny foto-kevitra voalohany amin'ny politikan'ny audit dia level, haavon'ny logging. Toy izao izy ireo:

  • None - aza misoratra anarana;
  • Metadata - metadata fangatahana log: mpampiasa, fotoana fangatahana, loharanon-kendry (pod, namespace, sns.), karazana hetsika (verb), sns.;
  • Request - log metadata sy vatana fangatahana;
  • RequestResponse - log metadata, vatana fangatahana ary vatana valiny.

Ny ambaratonga roa farany (Request ΠΈ RequestResponse) aza misoratra anarana fangatahana izay tsy nahazo loharanon-karena (fidirana amin'ny antsoina hoe url tsy loharanon-karena).

Mandeha ihany koa ny fangatahana rehetra dingana maromaro:

  • RequestReceived - ny dingana izay raisin'ny processeur ny fangatahana ary tsy mbola nampitaina lavitra teo amin'ny rojom-pamokarana;
  • ResponseStarted - ny lohatenin'ny valiny dia alefa, fa alohan'ny handefasana ny vatan'ny valiny. Natao ho an'ny fanontaniana maharitra (ohatra, watch);
  • ResponseComplete - Nalefa ny vatana namaly, tsy hisy fampahalalana hafa halefa;
  • Panic - Miforona ny hetsika rehefa misy toe-javatra tsy ara-dalΓ na hita.

Mba handingana ny dingana rehetra azonao ampiasaina omitStages.

Ao amin'ny rakitra politika, afaka mamaritra fizarana maromaro miaraka amin'ny haavon'ny firaketana samihafa isika. Ny fitsipika mifanandrify voalohany hita ao amin'ny famaritana politika dia hampiharina.

Ny daemon kubelet dia manara-maso ny fiovana amin'ny fisehoana miaraka amin'ny fanamafisam-pizarana api-server ary, raha misy hita, dia mamerina ny fitoeran-javatra miaraka amin'ny api-server. Saingy misy antsipiriany manan-danja: ny fanovana ao amin'ny rakitra politika dia tsy hiraharaha azy. Aorian'ny fanovana ny rakitra politika dia mila averinao amin'ny tanana ny api-server. Satria ny api-server dia natomboka ho static pod, ekipa kubectl delete tsy hahatonga azy hanomboka indray. Tsy maintsy manao izany amin'ny tanana ianao docker stop ao amin'ny kube-masters, izay niova ny politikan'ny fanaraha-maso:

docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}')

Rehefa mamela ny fanaraha-maso dia zava-dehibe ny mitadidy izany mitombo ny entana amin'ny kube-apiserver. Indrindra indrindra, mitombo ny fanjifana fahatsiarovana amin'ny fitahirizana ny contexte fangatahana. Aorian'ny fandefasana ny lohatenin'ny valinteny dia manomboka ny fandraketana. Miankina amin'ny fandrindrana ny politikan'ny fanaraha-maso ihany koa ny entana.

Ohatra amin'ny politika

Andeha hojerentsika ny firafitry ny rakitra politika amin'ny fampiasana ohatra.

Ity misy rakitra tsotra policyhampiditra ny zava-drehetra amin'ny ambaratonga Metadata:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata

Ao amin'ny politika dia azonao atao ny mamaritra ny lisitry ny mpampiasa (Users ΠΈ ServiceAccounts) ary vondrona mpampiasa. Ohatra, ity no fomba tsy hiraharahantsika ny mpampiasa rafitra, fa alaivo ny zavatra hafa rehetra amin'ny ambaratonga Request:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: None
    userGroups:
      - "system:serviceaccounts"
      - "system:nodes"
    users:
      - "system:anonymous"
      - "system:apiserver"
      - "system:kube-controller-manager"
      - "system:kube-scheduler"
  - level: Request

Azo atao koa ny mamaritra ny tanjona:

  • toerana misy anarana (namespaces);
  • matoanteny (teny: get, update, delete sy ny hafa);
  • harena (loharanon-karena, izany hoe: pod, configmaps sns) ary vondrona loharano (apiGroups).

Mitandrema! Ireo vondrona loharanon-karena sy loharano (vondrona API, izany hoe apiGroups), ary koa ny dikan-teny napetraka ao amin'ny cluster, dia azo alaina amin'ny alΓ lan'ny baiko:

kubectl api-resources
kubectl api-versions

Ity politika fanaraha-maso manaraka ity dia omena ho fanehoana ny fomba fanao tsara indrindra amin'ny Lahatsoratra mifandraika amin'ny Alibaba Cloud:

apiVersion: audit.k8s.io/v1beta1
kind: Policy
# НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π΄ΠΈΡŽ RequestReceived
omitStages:
  - "RequestReceived"
rules:
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ°Π»ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ опасными:
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # это api group с пустым ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относятся
                  # Π±Π°Π·ΠΎΠ²Ρ‹Π΅ рСсурсы Kubernetes, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ β€œcore”
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ обращСния ΠΊ read-only URLs:
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния, относящиСся ΠΊ Ρ‚ΠΈΠΏΡƒ рСсурсов β€œΡΠΎΠ±Ρ‹Ρ‚ΠΈΡβ€:
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # РСсурсы Ρ‚ΠΈΠΏΠ° Secret, ConfigMap ΠΈ TokenReview ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ  сСкрСтныС Π΄Π°Π½Π½Ρ‹Π΅,
  # поэтому Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ связанных с Π½ΠΈΠΌΠΈ запросов
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # ДСйствия Ρ‚ΠΈΠΏΠ° get, list ΠΈ watch ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ рСсурсоёмкими; Π½Π΅ Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ…
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для стандартных рСсурсов API
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… запросов
  - level: Metadata

Ohatra tsara iray hafa momba ny politikan'ny fanaraha-maso dia profil ampiasaina amin'ny GCE.

Mba hamaliana haingana ny hetsika fanaraha-maso dia azo atao mamaritra ny webhook. Ity olana ity dia voarakitra ao antontan-taratasy ofisialy, avelako ivelan'ny faritry ity lahatsoratra ity.

vokatra

Ny lahatsoratra dia manome topimaso momba ny rafitra fiarovana fototra ao amin'ny kluster Kubernetes, izay ahafahanao mamorona kaonty mpampiasa manokana, manasaraka ny zon'izy ireo, ary mirakitra ny fihetsik'izy ireo. Manantena aho fa hahasoa ireo izay miatrika olana toy izany amin'ny teoria na amin'ny fampiharana. Manoro hevitra ihany koa aho hamaky ny lisitry ny fitaovana hafa momba ny lohahevitra momba ny fiarovana ao amin'ny Kubernetes, izay omena ao amin'ny "P.S." - angamba amin'izy ireo dia hahita ny antsipiriany ilaina amin'ny olana mifandraika aminao.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment