Chapter 9. Audit logs in Red Hat Developer Hub
Audit logs are a chronological set of records documenting the user activities, system events, and data changes that affect your Red Hat Developer Hub users, administrators, or components. Administrators can view Developer Hub audit logs in the OpenShift Container Platform web console to monitor scaffolder events, changes to the RBAC system, and changes to the Catalog database. Audit logs include the following information:
- Name of the audited event
- Actor that triggered the audited event, for example, terminal, port, IP address, or hostname
- Event metadata, for example, date, time
-
Event status, for example,
success,failure -
Severity levels, for example,
info,debug,warn,error
You can use the information in the audit log to achieve the following goals:
- Enhance security
- Trace activities, including those initiated by automated systems and software templates, back to their source. Know when software templates are executed, as well as the details of application and component installations, updates, configuration changes, and removals.
- Automate compliance
- Use streamlined processes to view log data for specified points in time for auditing purposes or continuous compliance maintenance.
- Debug issues
- Use access records and activity details to fix issues with software templates or plugins.
Audit logs are not forwarded to the internal log store by default because this does not provide secure storage. You are responsible for ensuring that the system to which you forward audit logs is compliant with your organizational and governmental regulations, and is properly secured.
9.1. Configuring audit logs for Developer Hub on OpenShift Container Platform Copy linkLink copied to clipboard!
Use the OpenShift Container Platform web console to configure the following OpenShift Container Platform logging components to use audit logging for Developer Hub:
- Logging deployment
- Configure the logging environment, including both the CPU and memory limits for each logging component. For more information, see Red Hat OpenShift Container Platform - Configuring your Logging deployment.
- Logging collector
-
Configure the
spec.collectionstanza in theClusterLoggingcustom resource (CR) to use a supported modification to the log collector and collect logs fromSTDOUT. For more information, see Red Hat OpenShift Container Platform - Configuring the logging collector. - Log forwarding
-
Send logs to specific endpoints inside and outside your OpenShift Container Platform cluster by specifying a combination of outputs and pipelines in a
ClusterLogForwarderCR. For more information, see Red Hat OpenShift Container Platform - Enabling JSON log forwarding and Red Hat OpenShift Container Platform - Configuring log forwarding.
9.2. Viewing audit logs in Developer Hub Copy linkLink copied to clipboard!
Administrators can view, search, filter, and manage the log data from the Red Hat OpenShift Container Platform web console. You can filter audit logs from other log types by using the isAuditLog field.
Prerequisites
- You are logged in as an administrator in the OpenShift Container Platform web console.
Procedure
- From the Developer perspective of the OpenShift Container Platform web console, click the Topology tab.
- From the Topology view, click the pod that you want to view audit log data for.
- From the pod panel, click the Resources tab.
- From the Pods section of the Resources tab, click View logs.
-
From the Logs view, enter
isAuditLoginto the Search field to filter audit logs from other log types. You can use the arrows to browse the logs containing theisAuditLogfield.
9.2.1. Audit log fields Copy linkLink copied to clipboard!
Developer Hub audit logs can include the following fields:
eventName- The name of the audited event.
actorAn object containing information about the actor that triggered the audited event. Contains the following fields:
actorId-
The name/id/
entityRefof the associated user or service. Can benullif an unauthenticated user accesses the endpoints and the default authentication policy is disabled. ip- The IP address of the actor (optional).
hostname- The hostname of the actor (optional).
client- The user agent of the actor (optional).
stage-
The stage of the event at the time that the audit log was generated, for example,
initiationorcompletion. status-
The status of the event, for example,
succeededorfailed. meta-
An optional object containing event specific data, for example,
taskId. requestAn optional field that contains information about the HTTP request sent to an endpoint. Contains the following fields:
method- The HTTP method of the request.
query-
The
queryfields of the request. params-
The
paramsfields of the request. body-
The request
body. Thesecretsprovided when creating a task are redacted and appear as*. url- The endpoint URL of the request.
responseAn optional field that contains information about the HTTP response sent from an endpoint. Contains the following fields:
status- The status code of the HTTP response.
body- The contents of the request body.
isAuditLog-
A flag set to
trueto differentiate audit logs from other log types. errors-
A list of errors containing the
name,messageand potentially thestackfield of the error. Only appears whenstatusisfailed.
9.2.2. Scaffolder events Copy linkLink copied to clipboard!
Developer Hub audit logs can include the following scaffolder events:
ScaffolderParameterSchemaFetch-
Tracks
GETrequests to the/v2/templates/:namespace/:kind/:name/parameter-schemaendpoint which return template parameter schemas ScaffolderInstalledActionsFetch-
Tracks
GETrequests to the/v2/actionsendpoint which grabs the list of installed actions ScaffolderTaskCreation-
Tracks
POSTrequests to the/v2/tasksendpoint which creates tasks that the scaffolder executes ScaffolderTaskListFetch-
Tracks
GETrequests to the/v2/tasksendpoint which fetches details of all tasks in the scaffolder. ScaffolderTaskFetch-
Tracks
GETrequests to the/v2/tasks/:taskIdendpoint which fetches details of a specified task:taskId ScaffolderTaskCancellation-
Tracks
POSTrequests to the/v2/tasks/:taskId/cancelendpoint which cancels a running task ScaffolderTaskStream-
Tracks
GETrequests to the/v2/tasks/:taskId/eventstreamendpoint which returns an event stream of the task logs of task:taskId ScaffolderTaskEventFetch-
Tracks
GETrequests to the/v2/tasks/:taskId/eventsendpoint which returns a snapshot of the task logs of task:taskId ScaffolderTaskDryRun-
Tracks
POSTrequests to the/v2/dry-runendpoint which creates a dry-run task. All audit logs for events associated with dry runs have themeta.isDryLogflag set totrue. ScaffolderStaleTaskCancellation- Tracks automated cancellation of stale tasks
ScaffolderTaskExecution-
Tracks the
initiationandcompletionof a real scaffolder task execution (will not occur during dry runs) ScaffolderTaskStepExecution-
Tracks
initiationandcompletionof a scaffolder task step execution ScaffolderTaskStepSkip-
Tracks steps skipped due to
ifconditionals not being met ScaffolderTaskStepIteration-
Tracks the step execution of each iteration of a task step that contains the
eachfield.
9.2.3. Catalog events Copy linkLink copied to clipboard!
Developer Hub audit logs can include the following catalog events:
CatalogEntityAncestryFetch-
Tracks
GETrequests to the/entities/by-name/:kind/:namespace/:name/ancestryendpoint, which returns the ancestry of an entity CatalogEntityBatchFetch-
Tracks
POSTrequests to the/entities/by-refsendpoint, which returns a batch of entities CatalogEntityDeletion-
Tracks
DELETErequests to the/entities/by-uid/:uidendpoint, which deletes an entity
If the parent location of the deleted entity is still present in the catalog, then the entity is restored in the catalog during the next processing cycle.
CatalogEntityFacetFetch-
Tracks
GETrequests to the/entity-facetsendpoint, which returns the facets of an entity CatalogEntityFetch-
Tracks
GETrequests to the/entitiesendpoint, which returns a list of entities CatalogEntityFetchByName-
Tracks
GETrequests to the/entities/by-name/:kind/:namespace/:nameendpoint, which returns an entity matching the specified entity reference, for example,<kind>:<namespace>/<name> CatalogEntityFetchByUid-
Tracks
GETrequests to the/entities/by-uid/:uidendpoint, which returns an entity matching the unique ID of the specified entity CatalogEntityRefresh-
Tracks
POSTrequests to the/entities/refreshendpoint, which schedules the specified entity to be refreshed CatalogEntityValidate-
Tracks
POSTrequests to the/entities/validateendpoint, which validates the specified entity CatalogLocationCreation-
Tracks
POSTrequests to the/locationsendpoint, which creates a location
A location is a marker that references other places to look for catalog data.
CatalogLocationAnalyze-
Tracks
POSTrequests to the/locations/analyzeendpoint, which analyzes the specified location CatalogLocationDeletion-
Tracks
DELETErequests to the/locations/:idendpoint, which deletes a location and all child entities associated with it CatalogLocationFetch-
Tracks
GETrequests to the/locationsendpoint, which returns a list of locations CatalogLocationFetchByEntityRef-
Tracks
GETrequests to the/locations/by-entityendpoint, which returns a list of locations associated with the specified entity reference CatalogLocationFetchById-
Tracks
GETrequests to the/locations/:idendpoint, which returns a location matching the specified location ID QueriedCatalogEntityFetch-
Tracks
GETrequests to the/entities/by-queryendpoint, which returns a list of entities matching the specified query