Denetleme günlüğüne kaydetmeyi yapılandırma
K3s , varsayılan olarak devre dışı bırakılan denetim günlüğü sağlayan bir Kubernetes dağıtımıdır. Bir yönetici olarak, K3s-based IBM® Security Edge Gateway kümesinde denetleme günlüğüne kaydetmeyi etkinleştirebilirsiniz.
Başlamadan önce
Bu görev hakkında
Denetleme günlüğüne kaydetme için gerekli yapılandırma şunları içerir:
- Olayların günlüğe kaydedildiği bir denetim ilkesi tanımlama dosyası.
- Günlükleri toplamak ve depolamak için arka uç yapılandırmasını denetleyin.
sudo mkdir -p /var/lib/rancher/k3s/server/manifests /var/log/kubernetes/auditİşlem
- Denetim ilkesi dosyanızı oluşturun ve ilke kurallarını tanımlayın.
Aşağıdaki örnek,
request/responsegövdesi olmadan yalnızca konuşlandırma yaratmalarını kaydeder:
Denetim ilkesinin nasıl oluşturulacağına ilişkin daha fazla bilgi için Kubernetes belgelerinebakın.cat >/var/lib/rancher/k3s/server/manifests/policy.yaml <<EOF # Log only deployment creations at the Metadata level. apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata verbs: ["create"] resources: - group: "apps" resources: ["deployments"] EOF - Kullanılabilir iki denetim arka ucundan istediğiniz denetim arka ucunu seçin:
- Arka ucu günlüğe kaydet: olayları dosya sistemine yazar.
- Webhook arka ucu: olayları bir dış HTTP API ' ya gönderen.
systemdbirim yapılandırmasında yapılandırılır. - Kullandığınız denetim arka ucuna bağlı olarak aşağıdaki yordamlardan birini tamamlayın.Yerel dosya sistemi günlüğü arka ucuyla denetim günlüğüne kaydetmeyi etkinleştirmek için, ilgili yapılandırmaları K3s
systemdbaşlangıç bağımsız değişkenlerine eklemeniz, yapılandırmayı yeniden yüklemeniz ve K3s hizmetini aşağıdaki gibi yeniden başlatmanız gerekir:k3s.serviceyapılandırma dosyasında,Servicebölümü altında,ExecStartiçindeki seçenekleri ekleyin:vi /etc/systemd/system/k3s.serviceAşağıdaki iki seçenek gereklidir ve her ikisi de
--kube-apiserver-arg=option-name=option-valuetarafından iletilmelidir:audit-policy-file, birinci adımda açıklandığı gibi denetim ilkesinin yoludur.audit-log-path, çıkış denetleme günlüğünün yoludur.
Günlük döndürmeyi denetlemek için aşağıdaki isteğe bağlı bağımsız değişkenleri kullanabilirsiniz:
audit-log-maxsize, günlük döndürmeden önce MB cinsinden boyut üst sınırıdır.audit-log-maxbackup, döndürülmüş günlük sayısı üst sınırıdır.audit-log-maxage, eski döndürülen dosyaların alıkonacağı gün sayısı üst sınırıdır.
Aşağıdaki grafikte bir örnek gösterilmektedir:
systemdbirim yapılandırmasını tamamladıktan sonra, aşağıdaki komutları kullanarak hizmeti yeniden yükleyin ve yeniden başlatın:systemctl daemon-reload systemctl restart k3sÇıkış denetleme olayları, hizmet başlatma bağımsız değişkeninde belirtilen konumdaki JSONline dosyalarında saklanır. Aşağıdaki örnek, bu yordamda açıklanan denetim ilkesiyle yeni bir Edge Gateway eşlemesinin ardından çıkışı gösterir:{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"b20ac0e0-bd02-4b93-90fd-dd24b73c9330","stage":"RequestReceived","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","apiGroup":"apps","apiVersion":"v1"},"requestReceivedTimestamp":"2022-11-30T07:52:23.440012Z","stageTimestamp":"2022-11-30T07:52:23.440012Z"} {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"b20ac0e0-bd02-4b93-90fd-dd24b73c9330","stage":"ResponseComplete","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","name":"deployment-synchronizer","apiGroup":"apps","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":201},"requestReceivedTimestamp":"2022-11-30T07:52:23.440012Z","stageTimestamp":"2022-11-30T07:52:23.446914Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}} {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"c10353df-095a-4454-96c5-ca028988911a","stage":"RequestReceived","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","apiGroup":"apps","apiVersion":"v1"},"requestReceivedTimestamp":"2022-11-30T07:52:23.521285Z","stageTimestamp":"2022-11-30T07:52:23.521285Z"} {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"c10353df-095a-4454-96c5-ca028988911a","stage":"ResponseComplete","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","name":"deployment-operator","apiGroup":"apps","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":201},"requestReceivedTimestamp":"2022-11-30T07:52:23.521285Z","stageTimestamp":"2022-11-30T07:52:23.531923Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}}Daha fazla bilgi için Kubernetes belgelerinebakın.
Uzak webhook günlüğü arka ucunu kullanıyorsanız, webhook yapılandırmasını oluşturmanız, ilgili yapılandırmaları K3s sistem başlangıç bağımsız değişkenlerine eklemeniz, yapılandırmayı yeniden yüklemeniz ve K3s hizmetini aşağıdaki gibi yeniden başlatmanız gerekir:- Bir
webhookyapılandırma dosyası oluşturun. Bu dosya, HTTP bağlantılarına ilişkin adresi ve kimlik bilgilerini içerir ve $HOME/.kube/configiçindekikubectlyapılandırmasına benzer. Aşağıdaki örnek, temel kimlik doğrulamasıyla bir geriçevrim arka ucunu tanımlar:cat >/var/lib/rancher/k3s/server/manifests/webhook.yaml <<EOF apiVersion: v1 kind: Config preferences: {} clusters: # address and port of remote server - name: example-audit-backend cluster: server: http://localhost:8888 users: # client credential - name: example-user user: username: example-username password: example-password contexts: # link the remote server address and credential - name: example-context context: cluster: example-audit-backend user: example-user current-context: example-context EOFDaha fazla bilgi için Kubernetes belgelerinebakın.
k3s.serviceyapılandırma dosyasında,Servicebölümünün altında,ExecStartiçindeki seçenekleri ekleyin:vi /etc/systemd/system/k3s.serviceAşağıdaki iki seçenek gereklidir ve her ikisi de
--kube-apiserver-arg=option-name=option-valuetarafından iletilmelidir:audit-policy-file, birinci adımda açıklandığı gibi denetim ilkesinin yoludur.audit-webhook-config-file, önceki adımda açıklandığı gibiwebhookyapılandırmasının yoludur.
systemdbirim yapılandırmasını düzenledikten sonra hizmeti yeniden yükleyin ve yeniden başlatın:systemctl daemon-reload systemctl restart k3sÇıkış denetim olayları, HTTP POST gövdesinde JSON listeleri olarak toplu olarak gönderilecek. Aşağıda, bu yordamda ve
webhookistek gövdesinde açıklanan denetim ilkesiyle yeni bir Edge Gateway eşlemesinden sonraki bir çıkış örneği verilmiştir:{ "kind":"EventList", "apiVersion":"audit.k8s.io/v1", "metadata":{}, "items": [ {"level":"Metadata","auditID":"86fcb3ac-9ae2-4f8f-a102-9efa0747f513","stage":"RequestReceived","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","apiGroup":"apps","apiVersion":"v1"},"requestReceivedTimestamp":"2022-12-02T09:02:10.502140Z","stageTimestamp":"2022-12-02T09:02:10.502140Z"}, {"level":"Metadata","auditID":"86fcb3ac-9ae2-4f8f-a102-9efa0747f513","stage":"ResponseComplete","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","name":"deployment-synchronizer","apiGroup":"apps","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":201},"requestReceivedTimestamp":"2022-12-02T09:02:10.502140Z","stageTimestamp":"2022-12-02T09:02:10.511688Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}}, {"level":"Metadata","auditID":"4366e4f2-f437-44f7-bc8d-97dec21b54ef","stage":"RequestReceived","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","apiGroup":"apps","apiVersion":"v1"},"requestReceivedTimestamp":"2022-12-02T09:02:10.583000Z","stageTimestamp":"2022-12-02T09:02:10.583000Z"}, {"level":"Metadata","auditID":"4366e4f2-f437-44f7-bc8d-97dec21b54ef","stage":"ResponseComplete","requestURI":"/apis/apps/v1/namespaces/cfd3995c-c011-4e1f-aa05-8c6787d1861b/deployments","verb":"create","user":{"username":"system:admin","groups":["system:masters","system:authenticated"]},"sourceIPs":["127.0.0.1"],"userAgent":"okhttp/3.12.12","objectRef":{"resource":"deployments","namespace":"cfd3995c-c011-4e1f-aa05-8c6787d1861b","name":"deployment-operator","apiGroup":"apps","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":201},"requestReceivedTimestamp":"2022-12-02T09:02:10.583000Z","stageTimestamp":"2022-12-02T09:02:10.612983Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}} ] }Daha fazla bilgi için Kubernetes belgelerinebakın.