Chapitre 1. Affichage des journaux d’audit
L’audit dédié OpenShift fournit un ensemble chronologique pertinent d’enregistrements documentant la séquence d’activités qui ont affecté le système par des utilisateurs, des administrateurs ou d’autres composants du système.
1.1. À propos du journal d’audit API
L’audit fonctionne au niveau du serveur API, enregistrant toutes les demandes venant au serveur. Chaque journal d’audit contient les informations suivantes:
Le champ | Description |
---|---|
| Le niveau d’audit auquel l’événement a été généré. |
| ID d’audit unique, généré pour chaque demande. |
| L’étape du traitement de la demande lorsque cette instance d’événement a été générée. |
| L’URI de requête envoyé par le client à un serveur. |
| Le verbe Kubernetes associé à la requête. Dans le cas des demandes de non-ressource, il s’agit de la méthode HTTP minuscule. |
| Les informations d’utilisateur authentifiées. |
| En option. Les informations personnelles de l’utilisateur, si la demande est l’identité d’un autre utilisateur. |
| En option. Les adresses IP source, d’où provient la demande et tout mandataire intermédiaire. |
| En option. La chaîne d’agent utilisateur rapportée par le client. A noter que l’agent utilisateur est fourni par le client et ne doit pas faire confiance. |
| En option. L’objet référence à cette demande est ciblé. Cela ne s’applique pas aux demandes de type liste, ni aux demandes de non-ressource. |
| En option. L’état de réponse, peuplé même lorsque l’Objet de Réponse n’est pas un type d’état. Dans le cas des réponses réussies, cela inclura uniquement le code. Dans le cas des réponses d’erreur de type non statutaire, cela sera auto-rempli avec le message d’erreur. |
| En option. L’objet API de la requête, au format JSON. L’Objet Demande est enregistré tel qu’il est dans la requête (peut-être ré-encodée en JSON), avant la conversion de la version, le défaut, l’admission ou la fusion. Il s’agit d’un type d’objet versionné externe, et peut ne pas être un objet valide par lui-même. Ceci est omis pour les demandes de non-ressource et n’est enregistré qu’au niveau de la demande et plus haut. |
| En option. L’objet API est retourné dans la réponse, au format JSON. L’Objet de Réponse est enregistré après conversion au type externe, et sérialisé comme JSON. Ceci est omis pour les demandes de non-ressource et n’est enregistré qu’au niveau de réponse. |
| L’heure à laquelle la demande a atteint le serveur API. |
| Le moment où la demande est arrivée à l’étape de la vérification actuelle. |
| En option. Carte de valeur clé non structurée stockée avec un événement d’audit qui peut être défini par des plugins invoqués dans la chaîne de service de requête, y compris les plugins d’authentification, d’autorisation et d’admission. A noter que ces annotations sont pour l’événement d’audit et ne correspondent pas aux métadonnées.annotations de l’objet soumis. Les clés doivent identifier de manière unique le composant informatif pour éviter les collisions de noms, par exemple podsecuritypolicy.admission.k8s.io/policy. Les valeurs devraient être courtes. Les annotations sont incluses dans le niveau des métadonnées. |
Exemple de sortie pour le serveur API Kubernetes:
{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"ad209ce1-fec7-4130-8192-c4cc63f1d8cd","stage":"ResponseComplete","requestURI":"/api/v1/namespaces/openshift-kube-controller-manager/configmaps/cert-recovery-controller-lock?timeout=35s","verb":"update","user":{"username":"system:serviceaccount:openshift-kube-controller-manager:localhost-recovery-client","uid":"dd4997e3-d565-4e37-80f8-7fc122ccd785","groups":["system:serviceaccounts","system:serviceaccounts:openshift-kube-controller-manager","system:authenticated"]},"sourceIPs":["::1"],"userAgent":"cluster-kube-controller-manager-operator/v0.0.0 (linux/amd64) kubernetes/$Format","objectRef":{"resource":"configmaps","namespace":"openshift-kube-controller-manager","name":"cert-recovery-controller-lock","uid":"5c57190b-6993-425d-8101-8337e48c7548","apiVersion":"v1","resourceVersion":"574307"},"responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2020-04-02T08:27:20.200962Z","stageTimestamp":"2020-04-02T08:27:20.206710Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:openshift:operator:kube-controller-manager-recovery\" of ClusterRole \"cluster-admin\" to ServiceAccount \"localhost-recovery-client/openshift-kube-controller-manager\""}}
{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"ad209ce1-fec7-4130-8192-c4cc63f1d8cd","stage":"ResponseComplete","requestURI":"/api/v1/namespaces/openshift-kube-controller-manager/configmaps/cert-recovery-controller-lock?timeout=35s","verb":"update","user":{"username":"system:serviceaccount:openshift-kube-controller-manager:localhost-recovery-client","uid":"dd4997e3-d565-4e37-80f8-7fc122ccd785","groups":["system:serviceaccounts","system:serviceaccounts:openshift-kube-controller-manager","system:authenticated"]},"sourceIPs":["::1"],"userAgent":"cluster-kube-controller-manager-operator/v0.0.0 (linux/amd64) kubernetes/$Format","objectRef":{"resource":"configmaps","namespace":"openshift-kube-controller-manager","name":"cert-recovery-controller-lock","uid":"5c57190b-6993-425d-8101-8337e48c7548","apiVersion":"v1","resourceVersion":"574307"},"responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2020-04-02T08:27:20.200962Z","stageTimestamp":"2020-04-02T08:27:20.206710Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:openshift:operator:kube-controller-manager-recovery\" of ClusterRole \"cluster-admin\" to ServiceAccount \"localhost-recovery-client/openshift-kube-controller-manager\""}}