En esta página se indican los pasos para instalar y configurar los componentes necesarios para crear una copia de seguridad. También se describe cómo restaurar y recuperar el acceso a los registros de auditoría históricos a partir de la copia de seguridad.
Configurar una copia de seguridad en un segmento remoto
En esta sección se indican los pasos para crear una copia de seguridad de los registros de auditoría en un contenedor compatible con S3.
Antes de empezar
Para crear una copia de seguridad de los registros de auditoría, debes tener acceso a los siguientes recursos:
- Un segmento de S3 remoto con un endpoint, una clave de acceso secreta y un ID de clave de acceso.
- Un certificado de autoridad de certificación (CA) para el sistema de almacenamiento.
- Un clúster que funcione.
Obtener las credenciales para acceder al segmento de origen
Sigue estos pasos para encontrar las credenciales del contenedor que contiene los registros de auditoría:
En el clúster de administrador raíz, enumera los contenedores del espacio de nombres de tu proyecto:
kubectl get bucket -n PROJECT_NAMESPACE
La salida debe tener el siguiente aspecto, donde los contenedores de registro de auditoría muestran un nombre y un endpoint:
NAME BUCKET NAME DESCRIPTION STORAGE CLASS FULLY-QUALIFIED-BUCKET-NAME ENDPOINT REGION BUCKETREADY REASON MESSAGE audit-logs-loki-all audit-logs-loki-all Bucket for storing audit-logs-loki-all logs Standard wwq2y-audit-logs-loki-all https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-alertmanager cortex-metrics-alertmanager storage bucket for cortex metrics alertmanager configuration data Standard wwq2y-cortex-metrics-alertmanager https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-blocks cortex-metrics-blocks storage bucket for cortex metrics data Standard wwq2y-cortex-metrics-blocks https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-ruler cortex-metrics-ruler storage bucket for cortex metrics rules data Standard wwq2y-cortex-metrics-ruler https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. ops-logs-loki-all ops-logs-loki-all Bucket for storing ops-logs-loki-all logs Standard wwq2y-ops-logs-loki-all https://appliance-objectstorage.zone1.google.gdch.test```
Con la información que has obtenido, define las siguientes variables de entorno para la transferencia:
SRC_BUCKET= BUCKET_NAME SRC_ENDPOINT = ENDPOINT SRC_PATH= FULLY_QUALIFIED_BUCKET_NAME
Haz los cambios siguientes:
BUCKET_NAME
: el nombre del segmento que contiene los registros de auditoría de los que quieres crear la copia de seguridad. Este valor se encuentra en el campoBUCKET NAME
de la salida.ENDPOINT
: el endpoint del segmento que contiene los registros de auditoría de los que quieres crear la copia de seguridad. Este valor se encuentra en el campoENDPOINT
de la salida.FULLY_QUALIFIED_BUCKET_NAME
: el nombre completo del segmento que contiene los registros de auditoría de los que quieres crear la copia de seguridad. Este valor se encuentra en el campoFULLY-QUALIFIED-BUCKET-NAME
de la salida.
Obtén el secreto del segmento que has seleccionado en el paso anterior:
kubectl get secret -n PROJECT_NAMESPACE -o json| jq --arg jq_src $SRC_BUCKET '.items[].metadata|select(.annotations."object.gdc.goog/subject"==$jq_src)|.name'
La salida debe tener el siguiente aspecto, donde se muestra el nombre secreto del contenedor:
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
Con el nombre del secreto que has obtenido, define la siguiente variable de entorno:
SRC_CREDENTIALS="PROJECT_NAMESPACE/SECRET_NAME"
Sustituye
SECRET_NAME
por el nombre del secreto que has obtenido en el paso anterior.Crea el secreto del certificado de AC del sistema de almacenamiento:
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-ca \ --from-literal=ca.crt=CERTIFICATE
Sustituye
CERTIFICATE
por el certificado de AC del sistema de almacenamiento.Define la siguiente variable de entorno:
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-ca
Obtener las credenciales para acceder al contenedor remoto
Sigue estos pasos para encontrar las credenciales del segmento en el que quieras crear la copia de seguridad:
Define las siguientes variables de entorno:
DST_ACCESS_KEY_ID= ACCESS_KEY DST_SECRET_ACCESS_KEY= ACCESS_SECRET DST_ENDPOINT= REMOTE_ENDPOINT DST_PATH= REMOTE_BUCKET_NAME
Haz los cambios siguientes:
ACCESS_KEY
: la clave de acceso del bucket remoto de destino.ACCESS_SECRET
: el secreto de acceso del bucket remoto de destino.REMOTE_ENDPOINT
: el endpoint del bucket remoto de destino.REMOTE_BUCKET_NAME
: el nombre del segmento remoto de destino.
Crea un secreto para el segmento remoto:
kubectl create secret generic -n PROJECT_NAMESPACE s3-bucket-credentials \ --from-literal=access-key-id=$DST_ACCESS_KEY_ID \ --from-literal=secret-access-key=$DST_SECRET_ACCESS_KEY
Define la siguiente variable de entorno con la ubicación del secreto:
DST_CREDENTIALS=PROJECT_NAMESPACE/s3-bucket-credentials
Si el bucket de destino requiere que se configure un certificado de AC, crea un secreto con el certificado de AC del bucket:
kubectl create secret generic -n PROJECT_NAMESPACE s3-bucket-ca \ --from-literal=ca.crt=REMOTE_CERTIFICATE
Sustituye
REMOTE_CERTIFICATE
por el certificado de AC del segmento remoto de destino.Define la siguiente variable de entorno con la ubicación del certificado:
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-bucket-ca
Configurar la transferencia de registros de auditoría
Sigue estos pasos para configurar la transferencia de registros de auditoría del segmento de origen al de destino para la copia de seguridad:
Crea una cuenta de servicio para la tarea de transferencia de registros de auditoría. Debes proporcionar acceso a la cuenta de servicio para leer el segmento de origen y los secretos en el espacio de nombres del proyecto.
kubectl apply -f - <<EOF --- apiVersion: v1 kind: ServiceAccount metadata: name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: read-secrets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-secrets-rolebinding namespace: PROJECT_NAMESPACE subjects: - kind: ServiceAccount name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE roleRef: kind: Role name: read-secrets-role apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-log-read-bucket-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - $SRC_BUCKET # Source bucket name resources: - buckets verbs: - read-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-log-transfer-role-binding namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-log-read-bucket-role subjects: - kind: ServiceAccount name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE --- EOF
Crea una tarea de transferencia para exportar los registros al otro cubo:
kubectl apply -f - <<EOF --- apiVersion: batch/v1 kind: Job metadata: name: audit-log-transfer-job namespace: PROJECT_NAMESPACE spec: template: spec: serviceAccountName: audit-log-transfer-sa containers: - name: storage-transfer-pod image: gcr.io/private-cloud-staging/storage-transfer:latest imagePullPolicy: Always command: - /storage-transfer args: - '--src_endpoint=$SRC_ENDPOINT - '--dst_endpoint=$DST_ENDPOINT - '--src_path=\$SRC_PATH - '--dst_path=\$DST_PATH - '--src_credentials=$SRC_CREDENTIALS - '--dst_credentials=$DST_CREDENTIALS - '--dst_ca_certificate_reference=$DST_CA_CERTIFICATE # Optional. Based on destination type. - '--src_ca_certificate_reference=$SRC_CA_CERTIFICATE - '--src_type=s3' - '--dst_type=s3' - '--bandwidth_limit=100M' # Optional of the form '10K', '100M', '1G' bytes per second restartPolicy: OnFailure # Will restart on failure. --- EOF
Después de programar el trabajo, puede monitorizar la transferencia de datos proporcionando el nombre del trabajo como audit-log-transfer-job
y el espacio de nombres de su proyecto.
La tarea finaliza cuando se han transferido todos los datos al bucket de destino.
Restaurar registros de auditoría a partir de la copia de seguridad
En esta sección se indican los pasos para restaurar los registros de auditoría a partir de la copia de seguridad.
Antes de empezar
Para poder restaurar los registros de auditoría, debes tener acceso a los siguientes recursos:
- El segmento de copia de seguridad del registro de auditoría con un endpoint, una clave de acceso secreta y un ID de clave de acceso.
- Un certificado de autoridad de certificación (CA) para el sistema de almacenamiento.
- Un clúster que funcione.
Crear un segmento para restaurar registros de auditoría
Sigue estos pasos para crear un segmento en el que almacenar los registros de auditoría restaurados:
Crea el recurso de contenedor y la cuenta de servicio:
kubectl apply -f - <<EOF --- apiVersion: object.gdc.goog/v1 kind: Bucket metadata: annotations: object.gdc.goog/audit-logs: IO labels: logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: bucketPolicy: lockingPolicy: defaultObjectRetentionDays: 1 description: Bucket for storing audit-logs-loki logs restore storageClass: Standard --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-logs-loki-restore-buckets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - audit-logs-loki-restore resources: - buckets verbs: - read-object - write-object --- apiVersion: v1 automountServiceAccountToken: false kind: ServiceAccount metadata: labels: logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-logs-loki-restore-buckets-role subjects: - kind: ServiceAccount name: audit-logs-loki-restore-sa namespace: PROJECT_NAMESPACE EOF
Se crean el segmento y el secreto.
Para ver el segmento que has creado, sigue estos pasos:
kubectl get bucket audit-logs-loki-restore -n PROJECT_NAMESPACE
La salida debe tener el siguiente aspecto. La creación del contenedor puede tardar unos minutos.
NAME BUCKET NAME DESCRIPTION STORAGE CLASS FULLY-QUALIFIED-BUCKET-NAME ENDPOINT REGION BUCKETREADY REASON MESSAGE audit-logs-loki-restore audit-logs-loki-restore Bucket for storing audit-logs-loki logs restore Standard dzbl6-audit-logs-loki-restore https://objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created.
La salida debe mostrar el contenedor que has creado. La creación del contenedor puede tardar unos minutos.
Con la información que has obtenido, define las siguientes variables de entorno:
DST_BUCKET= RESTORE_BUCKET_NAME DST_ENDPOINT = RESTORE_ENDPOINT DST_PATH= RESTORE_FULLY_QUALIFIED_BUCKET_NAME
Haz los cambios siguientes:
RESTORE_BUCKET_NAME
: el nombre del bucket para la restauración de los registros de auditoría. Este valor se encuentra en el campoBUCKET NAME
de la salida.RESTORE_ENDPOINT
: el endpoint del bucket para restaurar los registros de auditoría. Este valor se encuentra en el campoENDPOINT
de la salida.RESTORE_FULLY_QUALIFIED_BUCKET_NAME
: el nombre completo del bucket para restaurar los registros de auditoría. Este valor se encuentra en el campoFULLY-QUALIFIED-BUCKET-NAME
de la salida.
Obtén el secreto del segmento creado:
kubectl get secret -n PROJECT_NAMESPACE -o json| jq --arg jq_src $DST_BUCKET '.items[].metadata|select(.annotations."object.gdc.goog/subject"==$jq_src)|.name'
La salida debe tener el siguiente aspecto, donde se muestra el nombre secreto del contenedor:
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
Con el nombre del secreto que has obtenido, define las siguientes variables de entorno:
DST_SECRET_NAME=RESTORE_SECRET_NAME DST_CREDENTIALS="PROJECT_NAMESPACE/RESTORE_SECRET_NAME"
Sustituye
RESTORE_SECRET_NAME
por el nombre del secreto que has obtenido en el paso anterior.Crea el secreto del certificado de AC del sistema de almacenamiento:
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-restore-ca \ --from-literal=ca.crt=CERTIFICATE
Sustituye
CERTIFICATE
por el certificado de AC del sistema de almacenamiento.Define la siguiente variable de entorno para la ubicación del certificado:
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-restore-ca
Obtener las credenciales para acceder al segmento de copia de seguridad
Sigue estos pasos para encontrar las credenciales del contenedor que contiene la copia de seguridad de los registros de auditoría:
Define las siguientes variables de entorno:
SRC_ACCESS_KEY_ID= ACCESS_KEY SRC_SECRET_ACCESS_KEY= ACCESS_SECRET SRC_ENDPOINT= REMOTE_ENDPOINT SRC_PATH= REMOTE_BUCKET_NAME
Haz los cambios siguientes:
ACCESS_KEY
: la clave de acceso del segmento de copia de seguridad.ACCESS_SECRET
: el secreto de acceso del segmento de copia de seguridad.REMOTE_ENDPOINT
: el endpoint del contenedor de copia de seguridad.REMOTE_BUCKET_NAME
: el nombre del segmento de copia de seguridad.
Crea un secreto para el segmento de copia de seguridad:
kubectl create secret generic -n PROJECT_NAMESPACE s3-backup-bucket-credentials \ --from-literal=access-key-id=$SRC_ACCESS_KEY_ID \ --from-literal=secret-access-key=$SRC_SECRET_ACCESS_KEY
Define la siguiente variable de entorno con la ubicación del secreto:
SRC_CREDENTIALS=PROJECT_NAMESPACE/s3-backup-bucket-credentials
Crea un secreto con el certificado de CA del segmento:
kubectl create secret generic -n PROJECT_NAMESPACE s3-backup-bucket-ca \ --from-literal=ca.crt=BACKUP_CERTIFICATE
Sustituye
BACKUP_CERTIFICATE
por el certificado de AC del bucket de copia de seguridad.Define la siguiente variable de entorno con la ubicación del certificado:
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-backup-bucket-ca
Configurar la restauración de registros de auditoría
Sigue estos pasos para configurar la transferencia de registros de auditoría del segmento de copia de seguridad al segmento de restauración:
Crea una cuenta de servicio para la tarea de transferencia de registros de auditoría. Debes proporcionar acceso a la cuenta de servicio para leer y escribir en el segmento y los secretos del espacio de nombres del proyecto.
kubectl apply -f - <<EOF --- apiVersion: v1 kind: ServiceAccount metadata: name: audit-log-restore-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: read-secrets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-secrets-rolebinding-restore namespace: PROJECT_NAMESPACE subjects: - kind: ServiceAccount name: audit-log-restore-sa namespace: PROJECT_NAMESPACE roleRef: kind: Role name: read-secrets-role apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-log-restore-bucket-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - $DST_BUCKET # Source bucket name resources: - buckets verbs: - read-object - write-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-log-restore-role-binding namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-log-restore-bucket-role subjects: - kind: ServiceAccount name: audit-log-restore-sa namespace: PROJECT_NAMESPACE --- EOF
Crea una tarea de transferencia para restaurar los registros del segmento de copia de seguridad remoto:
kubectl apply -f - <<EOF --- apiVersion: batch/v1 kind: Job metadata: name: audit-log-restore-job namespace: PROJECT_NAMESPACE spec: template: spec: serviceAccountName: audit-log-restore-sa containers: - name: storage-transfer-pod image: gcr.io/private-cloud-staging/storage-transfer:latest imagePullPolicy: Always command: - /storage-transfer args: - '--src_endpoint=$SRC_ENDPOINT - '--dst_endpoint=$DST_ENDPOINT - '--src_path=\$SRC_PATH - '--dst_path=\$DST_PATH - '--src_credentials=$SRC_CREDENTIALS - '--dst_credentials=$DST_CREDENTIALS - '--dst_ca_certificate_reference=$DST_CA_CERTIFICATE - '--src_ca_certificate_reference=$SRC_CA_CERTIFICATE # Optional. Based on destination type - '--src_type=s3' - '--dst_type=s3' - '--bandwidth_limit=100M' # Optional of the form '10K', '100M', '1G' bytes per second restartPolicy: OnFailure # Will restart on failure. --- EOF
Después de programar el trabajo, puede monitorizar la transferencia de datos proporcionando el nombre del trabajo como audit-log-restore-job
y el espacio de nombres de su proyecto.
La tarea finaliza cuando se han transferido todos los datos al bucket de destino.
Implementar una instancia de registro de auditoría para acceder a los registros
Para acceder a los registros restaurados, debes implementar una instancia de Loki, también llamada instancia de registro de auditoría.
Para configurar la instancia de registro de auditoría, usa la cuenta de servicio de audit-log-restore-sa
que has creado para la tarea de restauración. Sigue estos pasos para implementar la instancia:
Crea un objeto
ConfigMap
para la configuración de la instancia:kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE data: loki.yaml: |- auth_enabled: true common: ring: kvstore: store: inmemory chunk_store_config: max_look_back_period: 0s compactor: shared_store: s3 working_directory: /data/loki/boltdb-shipper-compactor compaction_interval: 10m retention_enabled: true retention_delete_delay: 2h retention_delete_worker_count: 150 ingester: chunk_target_size: 1572864 chunk_encoding: snappy max_chunk_age: 2h chunk_idle_period: 90m chunk_retain_period: 30s autoforget_unhealthy: true lifecycler: ring: kvstore: store: inmemory replication_factor: 1 heartbeat_timeout: 10m max_transfer_retries: 0 wal: enabled: true flush_on_shutdown: true dir: /wal checkpoint_duration: 1m replay_memory_ceiling: 20GB limits_config: retention_period: 48h enforce_metric_name: false reject_old_samples: false ingestion_rate_mb: 256 ingestion_burst_size_mb: 256 max_streams_per_user: 20000 max_global_streams_per_user: 20000 per_stream_rate_limit: 256MB per_stream_rate_limit_burst: 256MB shard_streams: enabled: false desired_rate: 3MB schema_config: configs: - from: "2020-10-24" index: period: 24h prefix: index_ object_store: s3 schema: v11 store: boltdb-shipper server: http_listen_port: 3100 grpc_server_max_recv_msg_size: 104857600 grpc_server_max_send_msg_size: 104857600 analytics: reporting_enabled: false storage_config: boltdb_shipper: active_index_directory: /data/loki/boltdb-shipper-active cache_location: /data/loki/boltdb-shipper-cache cache_ttl: 24h shared_store: s3 aws: endpoint: $DST_ENDPOINT bucketnames: $DST_PATH access_key_id: ${S3_ACCESS_KEY_ID} secret_access_key: ${S3_SECRET_ACCESS_KEY} s3forcepathstyle: true EOF
Despliega la instancia con un servicio para acceder a los registros del segmento de restauración:
kubectl apply -f - <<EOF --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: audit-logs-loki-restore logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: persistentVolumeClaimRetentionPolicy: whenDeleted: Retain whenScaled: Retain podManagementPolicy: OrderedReady replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: audit-logs-loki-restore serviceName: audit-logs-loki-restore template: metadata: labels: app: audit-logs-loki-restore app.kubernetes.io/part-of: audit-logs-loki-restore egress.networking.gke.io/enabled: "true" istio.io/rev: default logging.private.gdch.goog/log-type: audit spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/control-plane operator: DoesNotExist - key: node-role.kubernetes.io/master operator: DoesNotExist weight: 1 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - audit-logs-loki-restore topologyKey: kubernetes.io/hostname weight: 100 containers: - args: - -config.file=/etc/loki/loki.yaml - -config.expand-env=true - -target=all env: - name: S3_ACCESS_KEY_ID valueFrom: secretKeyRef: key: access-key-id name: $DST_SECRET_NAME optional: false - name: S3_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: secret-access-key name: $DST_SECRET_NAME optional: false image: gcr.io/private-cloud-staging/loki:v2.8.4-gke.2 imagePullPolicy: Always livenessProbe: failureThreshold: 3 httpGet: path: /ready port: http-metrics scheme: HTTP initialDelaySeconds: 330 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: audit-logs-loki-restore ports: - containerPort: 3100 name: http-metrics protocol: TCP - containerPort: 7946 name: gossip-ring protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /ready port: http-metrics scheme: HTTP initialDelaySeconds: 45 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: ephemeral-storage: 2000Mi memory: 8000Mi requests: cpu: 300m ephemeral-storage: 2000Mi memory: 1000Mi securityContext: readOnlyRootFilesystem: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/loki name: config - mountPath: /data name: loki-storage - mountPath: /tmp name: temp - mountPath: /tmp/loki/rules-temp name: tmprulepath - mountPath: /etc/ssl/certs/storage-cert.crt name: storage-cert subPath: ca.crt - mountPath: /wal name: loki-storage dnsPolicy: ClusterFirst priorityClassName: audit-logs-loki-priority restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 10001 runAsGroup: 10001 runAsUser: 10001 serviceAccount: audit-logs-loki-restore-sa serviceAccountName: audit-logs-loki-restore-sa terminationGracePeriodSeconds: 4800 volumes: - emptyDir: {} name: temp - configMap: defaultMode: 420 name: audit-logs-loki-restore name: config - emptyDir: {} name: tmprulepath - name: storage-cert secret: defaultMode: 420 secretName: web-tls updateStrategy: type: RollingUpdate volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null name: loki-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: standard-rwo volumeMode: Filesystem --- apiVersion: v1 kind: Service metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - name: http-metrics port: 3100 protocol: TCP targetPort: http-metrics selector: app: audit-logs-loki-restore sessionAffinity: None type: ClusterIP --- EOF
Configurar la instancia de monitorización para ver los registros de la fuente de datos
Sigue estos pasos para configurar Grafana, también llamada instancia de monitorización, de forma que puedas ver los registros de auditoría restaurados de la instancia de registro de auditoría:
- Ve al endpoint de la instancia de monitorización de tu proyecto.
- En el menú de navegación de la interfaz de usuario, haga clic en Administración > Fuentes de datos.
- Haz clic en Añadir nueva fuente de datos.
- En la página Añadir fuente de datos, seleccione Loki.
- En la página Configuración, introduce
Audit Logs - Restore
como valor del campo Nombre. En la sección HTTP, introduce el siguiente valor en el campo URL:
http://audit-logs-loki-restore.PROJECT_NAMESPACE.svc:3100
En la sección Encabezados HTTP personalizados, introduce los siguientes valores en los campos correspondientes:
- Header:
X-Scope-OrgID
- Valor:
infra-obs
- Header:
En la figura 1, Loki se muestra como una opción en la página Añadir fuente de datos de la interfaz de usuario de la instancia de monitorización. En la imagen 2, la página Configuración muestra los campos que debe rellenar para configurar la fuente de datos.
Imagen 1. La página Añadir fuente de datos de la interfaz de usuario de la instancia de monitorización.
Imagen 2. La página Configuración de la interfaz de usuario de la instancia de monitorización.
La opción Audit Logs - Restore
ahora está disponible como fuente de datos en el explorador de registros.