מעקב (MON)

יומני הביקורת של Monitoring‏ (MON) ב-Google Distributed Cloud (GDC)‎ עם air gap מאפשרים לעקוב אחרי הביצוע של שאילתות PromQL, וגם אחרי שינויים בהגדרות של מרכז הבקרה וההתראות. יומן הביקורת של יכולת הצפייה ויומני הביקורת של Kubernetes מתעדים שדות של מטא-נתונים ומטענים ייעודיים (payloads) של JSON לפעולות האלה במישור הנתונים ובמישור הבקרה.

מקור יומן הביקורת
פעולות מבוקרות

להריץ שאילתות PromQL באמצעות ממשק המשתמש של מכונת המעקב

מקור יומן הביקורת

שרת Proxy

סוג היומן

מישור הנתונים

שדות ברשומה ביומן שמכילים מידע על הביקורת
מטא-נתונים של ביקורת שם השדה ביומן הביקורת ערך
זהות המשתמש או השירות user

לדוגמה,

"user":{
  "identity":"fop-cluster-admin@example.com",
  "issuer":"https://ais-core.org-1.zone1.google.gdch.test"
}

Target

(שדות וערכים שקוראים ל-API)

resource

לדוגמה,

"resource": "/infra-obs/grafana/api/ds/query"

פעולה

(שדות שמכילים את הפעולה שבוצעה)

action

ערכים אפשריים:

  • "action": "QUERY"
  • "action": "CREATE"
  • "action": "READ"
  • "action": "UPDATE"
  • "action": "DELETE"
  • "action": "CREATE/UPDATE"
חותמת הזמן של האירוע time

לדוגמה,

"time": "2022-12-05T14:39:15.713354008Z"

מקור הפעולה
  • sourceIPs
  • _gdch_service_name

לדוגמה,

"sourceIPs":[
  "10.253.166.214",
  "127.0.0.6"
],
"_gdch_service_name":"grafana"
תוצאה response

לדוגמה,

"response": "Successful: 200 OK"

שדות אחרים description הערך description מכיל את השאילתה המלאה. מידע נוסף זמין ביומן לדוגמה.

יומן לדוגמה

{
  "resource":"/infra-obs/grafana/api/ds/query",
  "response":"Successful: 200 OK",
  "_gdch_service_tenant":"infra-obs",
  "sourceIPs":[
    "10.253.166.214",
    "127.0.0.6"
  ],
  "_gdch_namespace":"infra-obs-obs-system",
  "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:107.0) Gecko/20100101 Firefox/107.0",
  "time":"2022-12-05T14:39:15.713354008Z",
  "auditID":"6bba5ff1-97d9-4bf8-92af-4f63049448cf",
  "numBytesSent":1821,
  "action":"QUERY",
  "_gdch_service_name":"grafana",
  "numBytesReceived":2827,
  "description":"{
      \"queries\":[{
      \"refId\":\"A\",
      \"expr\":\"{container=\\\"grafana-proxy-server\\\"},
      \"queryType\":\"range\",
      \"datasource\":{\"uid\":\"P982945308D3682D1\",\"type\":\"loki\"},
      \"key\":\"Q-c63373da-dec2-49c3-aa6c-4e5ba07ec8de-0\",
      \"editorMode\":\"builder\",
      \"maxLines\":1000,
      \"legendFormat\":\"\",
      \"datasourceId\":2,
      \"intervalMs\":1000,
      \"maxDataPoints\":2493
    }],
    \"range\":{
      \"from\":\"2022-12-05T13:39:15.461Z\",
      \"to\":\"2022-12-05T14:39:15.461Z\",
      \"raw\":{\"from\":\"now-1h\",\"to\":\"now\"}
    },
    \"from\":\"1670247555461\",
    \"to\":\"1670251155461\"
  }",
  "user":{
    "identity":"fop-cluster-admin@example.com",
    "issuer":"https://ais-core.org-1.zone1.google.gdch.test"
  },
  "_gdch_cluster":"org-1-admin",
  "_gdch_fluentbit_pod":"anthos-audit-logs-forwarder-whltm"
}

הרצת שאילתות PromQL באמצעות HTTP API

מקור יומן הביקורת

שרת Proxy

סוג היומן

מישור הנתונים

שדות ברשומה ביומן שמכילים מידע על הביקורת
מטא-נתונים של ביקורת שם השדה ביומן הביקורת ערך
זהות המשתמש או השירות user

לדוגמה,

"user":{
  "issuer":"https://ais-core.org-1.zone1.google.gdch.test",
  "identity":"fop-cluster-admin@example.com"
}

Target

(שדות וערכים שקוראים ל-API)

resource

לדוגמה,

"resource":"/alertmanager/api/v2/alerts/groups?silenced=false&inhibited=false&active=true"

פעולה

(שדות שמכילים את הפעולה שבוצעה)

action

ערכים אפשריים:

  • "action": "QUERY"
  • "action": "CREATE"
  • "action": "READ"
  • "action": "UPDATE"
  • "action": "DELETE"
  • "action": "CREATE/UPDATE"
חותמת הזמן של האירוע time

לדוגמה,

"time": "2022-12-05T18:20:50.616925009Z"

מקור הפעולה
  • sourceIPs
  • _gdch_service_name

לדוגמה,

"sourceIPs":[
  "10.200.0.1",
  "127.0.0.6"
],
"_gdch_service_name":"cortex"
תוצאה response

לדוגמה,

"response": "Successful: 200 OK"

שדות אחרים לא רלוונטי לא רלוונטי

יומן לדוגמה

{
  "user":{
    "issuer":"https://ais-core.org-1.zone1.google.gdch.test",
    "identity":"fop-cluster-admin@example.com"
  },
  "_gdch_service_tenant":"infra-obs",
  "_gdch_service_name":"cortex",
  "resource":"/alertmanager/api/v2/alerts/groups?silenced=false&inhibited=false&active=true",
  "time":"2022-12-05T18:20:50.616925009Z",
  "action":"READ",
  "numBytesReceived":2376,
  "sourceIPs":[
    "10.200.0.1",
    "127.0.0.6"
  ],
  "_gdch_namespace":"obs-system",
  "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:107.0) Gecko/20100101 Firefox/107.0",
  "numBytesSent":173,
  "auditID":"8451a7b3-77f9-4878-9308-641b55a83865",
  "response":"Successful: 200 OK",
  "_gdch_cluster":"org-1-admin",
  "_gdch_fluentbit_pod":"anthos-audit-logs-forwarder-2wqxp"
}

ביצוע פעולות CRUD במרכז הבקרה

מקור יומן הביקורת

יומני ביקורת של Kubernetes

סוג היומן

מישור הבקרה

שדות ברשומה ביומן שמכילים מידע על הביקורת
מטא-נתונים של ביקורת שם השדה ביומן הביקורת ערך
זהות המשתמש או השירות user

לדוגמה,

"user":{
  "extra":{
    "authentication.kubernetes.io/pod-name":["fleet-admin-controller-875778d98-dnkj2"],
    "authentication.kubernetes.io/pod-uid":["caa4df7a-ae04-458e-a616-1c6893ce6e46"]
  },
  "username":"system:serviceaccount:gpc-system:fleet-admin-controller",
  "groups":[
    "system:serviceaccounts",
    "system:serviceaccounts:gpc-system",
    "system:authenticated"
  ],
  "uid":"0b93d757-e3be-440a-b18a-4a2b524de156"
}

Target

(שדות וערכים שקוראים ל-API)

  • requestURI
  • objectRef

לדוגמה,

"requestURI":"/apis/observability.gdc.goog/v1/namespaces/alice-obs-system/dashboards",
"objectRef":{
  "apiVersion":"v1",
  "apiGroup":"observability.gdc.goog",
  "resource":"dashboards",
  "namespace":"alice-obs-system"
}

פעולה

(שדות שמכילים את הפעולה שבוצעה)

verb

ערכים אפשריים:

  • "verb": "create"
  • "verb": "delete"
  • "verb": "get"
  • "verb": "list"
  • "verb": "patch"
  • "verb": "update"
  • "verb": "watch"
חותמת הזמן של האירוע requestReceivedTimestamp

לדוגמה,

"requestReceivedTimestamp": "2022-12-05T15:36:24.980257Z"

מקור הפעולה
  • sourceIPs
  • _gdch_service_name

לדוגמה,

"sourceIPs":["10.253.166.100"],
"_gdch_service_name":"apiserver"
תוצאה responseStatus

לדוגמה,

"responseStatus":{
  "code":201,
  "metadata":{}
}
שדות אחרים לא רלוונטי לא רלוונטי

יומן לדוגמה

{
  "user":{
    "extra":{
      "authentication.kubernetes.io/pod-name":["fleet-admin-controller-875778d98-dnkj2"],
      "authentication.kubernetes.io/pod-uid":["caa4df7a-ae04-458e-a616-1c6893ce6e46"]
    },
    "username":"system:serviceaccount:gpc-system:fleet-admin-controller",
    "groups":[
      "system:serviceaccounts",
      "system:serviceaccounts:gpc-system",
      "system:authenticated"
    ],
    "uid":"0b93d757-e3be-440a-b18a-4a2b524de156"
  },
  "kind":"Event",
  "_gdch_fluentbit_pod":"anthos-audit-logs-forwarder-2wqxp",
  "apiVersion":"audit.k8s.io/v1",
  "_gdch_cluster":"org-1-admin",
  "level":"Metadata",
  "stageTimestamp":"2022-12-05T15:36:24.980257Z",
  "auditID":"a060d80a-4a47-4490-a859-5d3ccff36d3d",
  "requestReceivedTimestamp":"2022-12-05T15:36:24.980257Z",
  "userAgent":"fleet-admin-cm/v0.0.0 (linux/amd64) kubernetes/$Format",
  "stage":"RequestReceived",
  "requestURI":"/apis/observability.gdc.goog/v1/namespaces/alice-obs-system/dashboards",
  "objectRef":{
    "apiVersion":"v1",
    "apiGroup":"observability.gdc.goog",
    "resource":"dashboards",
    "namespace":"alice-obs-system"
  },
  "verb":"create",
  "sourceIPs":["10.253.166.100"],
  "_gdch_service_name":"apiserver"
}

ביצוע פעולות CRUD של התראות

מקור יומן הביקורת

יומני ביקורת של Kubernetes

סוג היומן

מישור הבקרה

שדות ברשומה ביומן שמכילים מידע על הביקורת
מטא-נתונים של ביקורת שם השדה ביומן הביקורת ערך
זהות המשתמש או השירות user

לדוגמה,

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

Target

(שדות וערכים שקוראים ל-API)

  • requestURI
  • objectRef

לדוגמה,

"requestURI":"/apis/monitoring.gdc.goog/v1/namespaces/alice/monitoringrules?fieldManager=kubectl-client-side-apply&fieldValidation=Strict",
"objectRef":{
  "apiVersion":"v1",
  "apiGroup":"monitoring.gdc.goog",
  "name":"obs-test-alert-sequel",
  "namespace":"alice",
  "resource":"monitoringrules"
}

פעולה

(שדות שמכילים את הפעולה שבוצעה)

verb

ערכים אפשריים:

  • "verb": "create"
  • "verb": "delete"
  • "verb": "get"
  • "verb": "list"
  • "verb": "patch"
  • "verb": "update"
  • "verb": "watch"
חותמת הזמן של האירוע requestReceivedTimestamp

לדוגמה,

"requestReceivedTimestamp": "2022-12-05T16:28:50.619659Z"

מקור הפעולה
  • sourceIPs
  • _gdch_service_name

לדוגמה,

"sourceIPs":["10.200.0.6"],
"_gdch_service_name":"apiserver"
תוצאה responseStatus

לדוגמה,

"responseStatus":{
  "code":201,
  "metadata":{}
}
שדות אחרים לא רלוונטי לא רלוונטי

יומן לדוגמה

{
  "level":"Metadata",
  "sourceIPs":[
    "10.200.0.6"
  ],
  "auditID":"753c3370-d3a5-4717-b84e-00fd56883fc4",
  "requestURI":"/apis/monitoring.gdc.goog/v1/namespaces/alice/monitoringrules?fieldManager=kubectl-client-side-apply&fieldValidation=Strict",
  "apiVersion":"audit.k8s.io/v1",
  "_gdch_fluentbit_pod":"anthos-audit-logs-forwarder-fgkth",
  "user":{
    "username":"kubernetes-admin",
    "groups":[
      "system:masters",
      "system:authenticated"
    ]
  },
  "userAgent":"kubectl/v1.25.4 (linux/amd64) kubernetes/872a965",
  "verb":"create",
  "stage":"ResponseComplete",
  "stageTimestamp":"2022-12-05T16:28:50.636050Z",
  "_gdch_cluster":"org-1-admin",
  "objectRef":{
    "apiVersion":"v1",
    "apiGroup":"monitoring.gdc.goog",
    "name":"obs-test-alert-sequel",
    "namespace":"alice",
    "resource":"monitoringrules"
  },
  "responseStatus":{
    "code":201,
    "metadata":{}
  },
  "kind":"Event",
  "annotations":{
    "authorization.k8s.io/reason":"",
    "authorization.k8s.io/decision":"allow"
  },
  "requestReceivedTimestamp":"2022-12-05T16:28:50.619659Z",
  "_gdch_service_name":"apiserver"
}