Upper Networking (UNET)

Les journaux d'audit UNET (Upper Networking) de l'appareil Google Distributed Cloud (GDC) air-gapped vous permettent de suivre les opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur les règles de réseau de projet et les équilibreurs de charge, ainsi que les flux de trafic des nœuds et des charges de travail. Les journaux d'audit Kubernetes et les appareils réseau avancés enregistrent l'identité de l'appelant ou de la source, la ressource ou la destination cible, l'action, l'horodatage et la disposition sur le cluster d'infrastructure de l'organisation et le serveur d'API de gestion.

Emplacement de la charge de travail

Stockage de fichiers et de blocs

Source du journal d'audit

  • Opérations CRUD sur les ressources Kubernetes : journaux d'audit Kubernetes
  • Journaux de flux des nœuds et des charges de travail : appareils réseau avancés

Opérations auditées

Opérations CRUD sur la règle de réseau de projet

Type de journal : journaux d'audit du plan de gestion de l'API KRM.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service user

Par exemple,

"user": {
  "uid": "6e805ff0-3f8c-4073-b4e1-6a0582ff1263",
  "username": "system:serviceaccount:gpc-system:fleet-admin-controller",
  "extra": {
    "authentication.kubernetes.io/pod-uid": [
      "45ce2b16-3584-448e-8caf-49cb299dfb55"
    ],
    "authentication.kubernetes.io/pod-name": [
      "fleet-admin-controller-5b5d848876-764mt"
    ]
  },
  "groups": [
    "system:serviceaccounts",
    "system:serviceaccounts:gpc-system",
    "system:authenticated"
  ]
}

Cible

(Champs et valeurs qui appellent l'API)

requestURI

"requestURI": "/apis/networking.gdc.goog/v1alpha1/namespaces/platform-obs/projectnetworkpolicies"

Action

(Champs contenant l'opération effectuée)

verb

Par exemple,

"verb": "patch"

Code temporel de l'événement requestReceivedTimestamp

Par exemple,

"requestReceivedTimestamp": "2022-12-09T04:21:55.497089Z"

Source de l'action sourceIPs

Par exemple,

"sourceIPs": [
  "10.253.164.215"
]

Résultat stage

Par exemple,

"stage": "ResponseComplete"

Autres champs Non applicable Non applicable

Exemple de journal

{
  "auditID": "ff8266f6-685f-4239-9ab8-c55083d575e0",
  "responseStatus": {
    "code": 200,
    "metadata": {}
  },
  "level": "Metadata",
  "requestURI": "/apis/networking.gdc.goog/v1alpha1/namespaces/platform-obs/projectnetworkpolicies/base-policy-allow-intra-project-traffic/status",
  "user": {
    "uid": "6e805ff0-3f8c-4073-b4e1-6a0582ff1263",
    "username": "system:serviceaccount:gpc-system:fleet-admin-controller",
    "extra": {
      "authentication.kubernetes.io/pod-uid": [
        "45ce2b16-3584-448e-8caf-49cb299dfb55"
      ],
      "authentication.kubernetes.io/pod-name": [
        "fleet-admin-controller-5b5d848876-764mt"
      ]
    },
    "groups": [
      "system:serviceaccounts",
      "system:serviceaccounts:gpc-system",
      "system:authenticated"
    ]
  },
  "_gdch_cluster": "org-1-admin",
  "objectRef": {
    "resource": "projectnetworkpolicies",
    "apiGroup": "networking.gdc.goog",
    "name": "base-policy-allow-intra-project-traffic",
    "apiVersion": "v1alpha1",
    "namespace": "platform-obs",
    "subresource": "status"
  },
  "verb": "patch",
  "kind": "Event",
  "_gdch_fluentbit_pod": "anthos-audit-logs-forwarder-4267r",
  "stage": "ResponseComplete",
  "apiVersion": "audit.k8s.io/v1",
  "requestReceivedTimestamp": "2022-12-09T04:21:55.497089Z",
  "sourceIPs": [
    "10.253.164.215"
  ],
  "userAgent": "fleet-admin-cm/v0.0.0 (linux/amd64) kubernetes/$Format",
  "stageTimestamp": "2022-12-09T04:21:55.505045Z",
  "annotations": {
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"fleet-admin-controller\" of ClusterRole \"fleet-admin-controller\" to ServiceAccount \"fleet-admin-controller/gpc-system\"",
    "authorization.k8s.io/decision": "allow"
  },
  "_gdch_service_name": "apiserver"
}

Opérations CRUD sur l'équilibreur de charge

Type de journal : journaux d'audit du plan de gestion de l'API KRM.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service user

Par exemple,

"user": {
  "groups": [
    "system:masters",
    "system:authenticated"
  ],
  "username": "kubernetes-admin"
}

Cible

(Champs et valeurs qui appellent l'API)

objectRef.resource

"objectRef": {
  "resource": "services"
}

Action

(Champs contenant l'opération effectuée)

verb

Par exemple,

"verb": "get"

Code temporel de l'événement requestReceivedTimestamp

Par exemple,

"requestReceivedTimestamp": "2022-12-09T04:29:53.577417Z"

Source de l'action sourceIPs

Par exemple,

"sourceIPs": [
  "10.200.0.5"
]

Résultat stage

Par exemple,

"stage": "ResponseComplete"

Autres champs Non applicable Non applicable

Exemple de journal

{
  "apiVersion": "audit.k8s.io/v1",
  "level": "Metadata",
  "_gdch_cluster": "org-1-admin",
  "auditID": "113e562b-0576-4b97-bc5f-168a60428f6d",
  "user": {
    "groups": [
      "system:masters",
      "system:authenticated"
    ],
    "username": "kubernetes-admin"
  },
  "stageTimestamp": "2022-12-09T04:29:53.579903Z",
  "sourceIPs": [
    "10.200.0.5"
  ],
  "responseStatus": {
    "code": 200,
    "metadata": {}
  },
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": ""
  },
  "stage": "ResponseComplete",
  "requestURI": "/api/v1/namespaces/harbor-system/services/harbor-harbor-harbor-core",
  "_gdch_fluentbit_pod": "anthos-audit-logs-forwarder-8kc9n",
  "verb": "get",
  "objectRef": {
    "apiVersion": "v1",
    "apiGroup": "UNKNOWN",
    "resource": "services",
    "namespace": "harbor-system",
    "name": "harbor-harbor-harbor-core"
  },
  "userAgent": "root-admin-cm/v0.0.0 (linux/amd64) kubernetes/$Format",
  "kind": "Event",
  "requestReceivedTimestamp": "2022-12-09T04:29:53.577417Z",
  "_gdch_service_name": "apiserver"
}

Journaux de flux de nœuds pour le cluster d'infrastructure de l'organisation et le serveur de l'API Management

Type de journal : plan de données.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service src

Par exemple,

"src": {
  "pod_name": "konnectivity-agent-58fdb55d57-5h2gj",
  "workload_kind": "Deployment",
  "workload_name": "konnectivity-agent",
  "pod_namespace": "kube-system",
  "namespace": "kube-system"
}

Cible

(Champs et valeurs qui appellent l'API)

dest

Par exemple,

"dest": {
  "node_name": "xwxwxwx-default-pool-16baec8f-zkjw",
  "workload_kind": "Node"
}

Action

(Champs contenant l'opération effectuée)

Non applicable Non applicable
Code temporel de l'événement timestamp

Par exemple,

"timestamp": "2022-11-21T20:34:32.027881823Z"

Source de l'action src

Par exemple,

"src": {
  "pod_name": "konnectivity-agent-58fdb55d57-5h2gj",
  "workload_kind": "Deployment",
  "workload_name": "konnectivity-agent",
  "pod_namespace": "kube-system",
  "namespace": "kube-system"
}

Résultat disposition

Par exemple,

"disposition": "allow"

Autres champs Non applicable Non applicable

Exemple de journal

{
  "connection": {
    "src_ip": "10.4.0.7",
    "dest_ip": "10.128.0.16",
    "src_port": 52932,
    "dest_port": 10250,
    "protocol": "tcp",
    "direction": "ingress"
  },
  "disposition": "allow",
  "src": {
    "pod_name": "konnectivity-agent-58fdb55d57-5h2gj",
    "workload_kind": "Deployment",
    "workload_name": "konnectivity-agent",
    "pod_namespace": "kube-system",
    "namespace": "kube-system"
  },
  "dest": {
    "node_name": "xwxwxwx-default-pool-16baec8f-zkjw",
    "workload_kind": "Node"
  },
  "count": 1,
  "node_name": "xwxwxwx-default-pool-16baec8f-zkjw",
  "timestamp": "2022-11-21T20:34:32.027881823Z"
}

Journaux de flux de charge de travail pour le cluster d'infrastructure de l'organisation et le serveur d'API Management

Type de journal : plan de données.

Champs de l'entrée de journal contenant des informations d'audit
Métadonnées d'audit Nom du champ d'audit Valeur
Identité de l'utilisateur ou du service src

Par exemple,

"src": {
  "instance": "10.4.0.1"
}

Cible

(Champs et valeurs qui appellent l'API)

dest

Par exemple,

"dest": {
  "pod_name": "kube-dns-6d5d89dccb-5fjzs",
  "workload_kind": "Deployment",
  "workload_name": "kube-dns",
  "pod_namespace": "kube_system",
  "namespace": "kube-system"
}

Action

(Champs contenant l'opération effectuée)

Non applicable Non applicable
Code temporel de l'événement timestamp

Par exemple,

"timestamp": "2022-11-21T20:34:32.027881823Z"

Source de l'action src

Par exemple,

"src": {
  "instance": "10.4.0.1"
}

Résultat disposition

Par exemple,

"disposition": "allow"

Autres champs Non applicable Non applicable

Exemple de journal

{
  "connection": {
    "src_ip": "10.4.0.1",
    "dest_ip": "10.4.0.9",
    "src_port": 46768,
    "dest_port": 10054,
    "protocol": "tcp",
    "direction": "ingress"
  },
  "disposition": "allow",
  "policies": [
    {
      "kind": "CiliumClusterwideNetworkPolicy",
      "name": "allow-all"
    }
  ],
  "src": {
    "instance": "10.4.0.1"
  },
  "dest": {
    "pod_name": "kube-dns-6d5d89dccb-5fjzs",
    "workload_kind": "Deployment",
    "workload_name": "kube-dns",
    "pod_namespace": "kube_system",
    "namespace": "kube-system"
  },
  "count": 1,
  "node_name": "xwxwxwx-default-pool-16baec8f-zkjw",
  "timestamp": "2022-11-21T20:34:32.027881823Z"
}