3.7. Collecte des journaux d’audit
Les journaux d’audit, qui sont un ensemble chronologique d’enregistrements pertinents pour la sécurité, documentent la séquence des activités qui ont affecté le système par des utilisateurs individuels, des administrateurs ou d’autres composants du système.
À titre d’exemple, les journaux d’audit peuvent vous aider à comprendre d’où provient une demande d’autoscaling. Il s’agit d’informations clés lorsque les backends sont surchargés par des requêtes d’autoscaling faites par les applications utilisateur et que vous devez déterminer quelle est l’application gênante.
3.7.1. Configuration de l’enregistrement de l’audit Copier lienLien copié sur presse-papiers!
En éditant la ressource personnalisée KedaController, vous pouvez configurer l’audit pour l’opérateur automatique de mesure personnalisée. Les journaux sont envoyés à un fichier journal d’audit sur un volume sécurisé en utilisant une revendication de volume persistante dans le CR KedaController.
Conditions préalables
- Le Custom Metrics Autoscaler Operator doit être installé.
Procédure
Éditer la ressource personnalisée KedaController pour ajouter l’auditConfig stanza:
kind: KedaController apiVersion: keda.sh/v1alpha1 metadata: name: keda namespace: keda spec: # ... metricsServer: # ... auditConfig: logFormat: "json"1 logOutputVolumeClaim: "pvc-audit-log"2 policy: rules:3 - level: Metadata omitStages: "RequestReceived"4 omitManagedFields: false5 lifetime:6 maxAge: "2" maxBackup: "1" maxSize: "50"- 1
- Indique le format de sortie du journal d’audit, qu’il s’agisse d’héritage ou de json.
- 2
- Indique une revendication existante de volume persistant pour stocker les données du journal. L’ensemble des demandes arrivant sur le serveur API sont enregistrées à cette revendication de volume persistante. Lorsque vous laissez ce champ vide, les données du journal sont envoyées à stdout.
- 3
- Indique quels événements doivent être enregistrés et quelles données ils doivent inclure:
- Aucun : Ne enregistrez pas les événements.
- Enregistrez uniquement les métadonnées pour la demande, telles que l’utilisateur, l’horodatage, et ainsi de suite. Il ne faut pas enregistrer le texte de demande et le texte de réponse. C’est la valeur par défaut.
- Demande : Logisez uniquement les métadonnées et le texte de demande, mais pas le texte de réponse. Cette option ne s’applique pas aux demandes de non-ressource.
- RequestResponse: Logiser les métadonnées d’événements, le texte de demande et le texte de réponse. Cette option ne s’applique pas aux demandes de non-ressource.
- 4
- Indique les étapes pour lesquelles aucun événement n’est créé.
- 5
- Indique s’il faut omettre les champs gérés des organismes de requête et de réponse d’être écrits dans le journal d’audit de l’API, que ce soit vrai pour omettre les champs ou faux pour inclure les champs.
- 6
- Indique la taille et la durée de vie des journaux d’audit.
- Le nombre maximum de jours pour conserver les fichiers journaux d’audit, basé sur l’horodatage encodé dans leur nom de fichier.
- sauvegarde max: Le nombre maximum de fichiers journaux d’audit à conserver. Définissez sur 0 pour conserver tous les fichiers journaux d’audit.
- La taille maximale en mégaoctets d’un fichier journal d’audit avant qu’il ne soit tourné.
La vérification
Consultez le fichier journal d’audit directement:
D’obtenir le nom de la gousse keda-metrics-apiserver-*:
oc get pod -n kedaExemple de sortie
NAME READY STATUS RESTARTS AGE custom-metrics-autoscaler-operator-5cb44cd75d-9v4lv 1/1 Running 0 8m20s keda-metrics-apiserver-65c7cc44fd-rrl4r 1/1 Running 0 2m55s keda-operator-776cbb6768-zpj5b 1/1 Running 0 2m55sAffichez les données du journal à l’aide d’une commande similaire à ce qui suit:
$ oc logs keda-metrics-apiserver-<hash>|grep -i metadata1 - 1
- Facultatif: Vous pouvez utiliser la commande grep pour spécifier le niveau de journal pour afficher: Metadata, Request, RequestResponse.
À titre d’exemple:
$ oc logs keda-metrics-apiserver-65c7cc44fd-rrl4r|grep -i metadataExemple de sortie
... {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"4c81d41b-3dab-4675-90ce-20b87ce24013","stage":"ResponseComplete","requestURI":"/healthz","verb":"get","user":{"username":"system:anonymous","groups":["system:unauthenticated"]},"sourceIPs":["10.131.0.1"],"userAgent":"kube-probe/1.28","responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2023-02-16T13:00:03.554567Z","stageTimestamp":"2023-02-16T13:00:03.555032Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}} ...
Alternativement, vous pouvez consulter un journal spécifique:
À l’aide d’une commande similaire à ce qui suit pour vous connecter à la gousse keda-metrics-apiserver-*:
$ oc rsh pod/keda-metrics-apiserver-<hash> -n kedaÀ titre d’exemple:
$ oc rsh pod/keda-metrics-apiserver-65c7cc44fd-rrl4r -n kedaChangement dans le répertoire /var/audit-policy/:
sh-4.4$ cd /var/audit-policy/Liste des journaux disponibles:
sh-4.4$ lsExemple de sortie
log-2023.02.17-14:50 policy.yamlConsultez le journal, au besoin:
sh-4.4$ cat <log_name>/<pvc_name>|grep -i <log_level>1 - 1
- Facultatif: Vous pouvez utiliser la commande grep pour spécifier le niveau de journal pour afficher: Metadata, Request, RequestResponse.
À titre d’exemple:
sh-4.4$ cat log-2023.02.17-14:50/pvc-audit-log|grep -i RequestExemple de sortie
... {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Request","auditID":"63e7f68c-04ec-4f4d-8749-bf1656572a41","stage":"ResponseComplete","requestURI":"/openapi/v2","verb":"get","user":{"username":"system:aggregator","groups":["system:authenticated"]},"sourceIPs":["10.128.0.1"],"responseStatus":{"metadata":{},"code":304},"requestReceivedTimestamp":"2023-02-17T13:12:55.035478Z","stageTimestamp":"2023-02-17T13:12:55.038346Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:discovery\" of ClusterRole \"system:discovery\" to Group \"system:authenticated\""}} ...