Recopila registros de auditoría de CircleCI
Este analizador extrae campos de los registros de auditoría de CircleCI en formatos CSV y JSON, y los transforma en el modelo de datos unificado (UDM). Controla ambos formatos, realiza transformaciones y enriquecimientos de datos, y asigna los campos extraídos a sus campos de UDM correspondientes dentro del objeto event. Se enfoca en las acciones del usuario, el acceso a los recursos y los eventos de actualización, los clasifica y completa los campos relevantes de la AUA, como principal, target, network y metadata.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a CircleCI.
Configura un feed en Google SecOps para transferir los registros de CircleCI
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de CircleCI).
- Selecciona Webhook como el Tipo de origen.
- Selecciona CircleCI como el Tipo de registro.
- Haz clic en Siguiente.
- Opcional: Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
. - Espacio de nombres de recursos: Es el espacio de nombres de recursos.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
- Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
- Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
- En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
- Haz clic en Listo.
Crea una clave de API para el feed de webhook
Ve a consola de Google Cloud > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso de la clave de API a la API de Google Security Operations.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
Habilita la autenticación especificando la clave de API y la clave secreta como parte del encabezado personalizado en el siguiente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recomendación: Especifica la clave de API como un encabezado en lugar de hacerlo en la URL.
Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de consulta en el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Reemplaza lo siguiente:
ENDPOINT_URL
: Es la URL del extremo del feed.API_KEY
: Es la clave de API para autenticar en Google SecOps.SECRET
: Es la clave secreta que generaste para autenticar el feed.
Cómo configurar un webhook en CircleCI
- Accede a la interfaz web de CircleCI.
- Selecciona el proyecto del que deseas transferir los registros.
- Haz clic en Configuración del proyecto.
- Selecciona Webhooks.
- Haz clic en Agregar webhook.
Especifica valores para los siguientes parámetros de entrada:
- Nombre del webhook: Proporciona un nombre descriptivo (por ejemplo, Google SecOps).
- URL del extremo: Ingresa el
<ENDPOINT_URL>
del extremo de API de Google SecOps.
- Eventos: Selecciona los eventos de CircleCI que deben activar el webhook (por ejemplo, selecciona workflow-completed para enviar datos después de que finalice un flujo de trabajo).
Haz clic en Guardar para crear el webhook.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
account.id | read_only_udm.about.resource.attribute.labels.value | El valor de account.id del registro sin procesar se asigna al campo UDM read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es account_id. |
acción | read_only_udm.metadata.product_event_type | El valor de action del registro sin procesar se asigna al campo de la AUA read_only_udm.metadata.product_event_type. |
actor.id | read_only_udm.principal.user.product_object_id | El valor de actor.id del registro sin procesar se asigna al campo de la AUA read_only_udm.principal.user.product_object_id. |
actor.name | read_only_udm.principal.user.userid | Se quita el prefijo "github: " del campo actor.name en el registro sin procesar. El valor restante se asigna al campo de la AUA read_only_udm.principal.user.userid. Si actor.name existe en el registro sin procesar, el valor USER_RESOURCE_UPDATE_CONTENT se asigna a read_only_udm.metadata.event_type. De lo contrario, se asigna USER_RESOURCE_ACCESS. |
id | read_only_udm.metadata.product_log_id | El valor de id del registro sin procesar se asigna al campo de la AUA read_only_udm.metadata.product_log_id. El analizador establece read_only_udm.metadata.log_type en CIRCLECI. El analizador establece read_only_udm.metadata.product_name en CIRCLECI. El analizador establece read_only_udm.metadata.vendor_name en CIRCLECI. |
occurred_at | read_only_udm.metadata.event_timestamp | El valor de occurred_at del registro sin procesar se analiza como una marca de tiempo y se asigna al campo de la AUA read_only_udm.metadata.event_timestamp. |
organization.name | read_only_udm.target.administrative_domain | Se quita el prefijo "github: " del campo organization.name en el registro sin procesar. El valor restante se asigna al campo de la UDM read_only_udm.target.administrative_domain. |
payload.job.id | read_only_udm.about.resource.attribute.labels.value | El valor de payload.job.id del registro sin procesar se asigna al campo UDM read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es job_id. |
payload.job.job_name | read_only_udm.about.resource.attribute.labels.value | El valor de payload.job.job_name del registro sin procesar se asigna al campo UDM read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es job_name. |
payload.job.job_status | read_only_udm.about.resource.attribute.labels.value | El valor de payload.job.job_status del registro sin procesar se asigna al campo UDM read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es job_status. |
payload.workflow.id | read_only_udm.about.resource.attribute.labels.value | El valor de payload.workflow.id del registro sin procesar se asigna al campo UDM read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es workflow_id. |
request.id | read_only_udm.network.session_id | El valor de request.id del registro sin procesar se asigna al campo de la AUA read_only_udm.network.session_id. |
scope.id | read_only_udm.about.resource.attribute.labels.value | El valor de scope.id del registro sin procesar se asigna al campo de la AUA read_only_udm.about.resource.attribute.labels.value, donde la clave correspondiente es scope_id. Inicialmente, el analizador establece sec_action en BLOCK. Si el campo success del registro sin procesar es verdadero, sec_action cambia a ALLOW. Luego, el valor de sec_action se asigna al campo de la AUA read_only_udm.security_result.action. |
target.id | read_only_udm.target.resource.product_object_id | El valor de target.id del registro sin procesar se asigna al campo de la AUA read_only_udm.target.resource.product_object_id. |
target.name | read_only_udm.target.resource.name | Se quita el prefijo "github: " del campo target.name en el registro sin procesar. El valor restante se asigna al campo de la UDM read_only_udm.target.resource.name. El analizador establece read_only_udm.target.resource.resource_type en STORAGE_OBJECT. |
version | read_only_udm.target.resource.attribute.labels.value | El valor de version del registro sin procesar se convierte en una cadena y se asigna al campo de la AUA read_only_udm.target.resource.attribute.labels.value, donde la clave correspondiente es version. |
Cambios
2023-03-09
- Sin embargo, el analizador se creó recientemente.