Audit Log

Audit logs are records of what happens inside your GoodData environment. These logs help you track who did what, when they did it, how they did it, and what they changed.

The audit log can support you in several critical areas:

  • Security and fraud prevention – Monitor unauthorized or suspicious activity.
  • Compliance and legal requirements – Meet GDPR, HIPAA, or SOC2 standards.
  • Troubleshooting and support – Quickly trace issues and understand changes that impact your setup.

Note

The Audit Log feature is available only as part of the Enterprise tier.

Setting up Audit Logging

Audit log messages are built into the existing logging system and are automatically collected along with logs from all other services and components. No additional setup is required.

You can filter audit log messages by using the field type=audit to extract only audit-related entries from your logs.

Once filtered, you can refine your search further by using additional fields, such as:

  • eventName=XYZ – to find specific event types (as listed in the Audit Events section)
  • categoryUid=XYZ – to filter by Open Cybersecurity Schema Framework (OCSF) event category
  • classUid=XYZ – to filter by OCSF event class

Audit Log Entries

Each audit log entry is saved in JSON format and includes a set of mandatory fields, which are standardized and present in every log entry, regardless of the event type:

FieldDescription
eventNameStandard name of the event
categoryUidCategory based on OCSF (Open Cybersecurity Schema Framework)
classUidClass based on OCSF
descriptionA short, human-readable summary of the event
tsTime the event happened (timestamp), e.g. 2023-01-20T18:55:32.466Z
orgIdID of the organization
workspaceIdID of the workspace (if applicable)
userIdWho triggered the event (user ID, service, or token)
targetWhat was affected (e.g. dashboard, user, group)
sourceIP address where the event came from (127.0.0.1 is used for events initiated by internal components)
errorCodeIf something went wrong (e.g. Access Denied)
sessionContextTypeType of session: JWT, API Token, OIDC, or automation
sessionContextIdentifierToken or automation identifier
typeType of message. The default value is audit.

Note

Depending on the eventName, audit entries may include additional JSON fields specific to that event type. These extra fields provide more context for that particular action and are not standardized across all events.

Example Audit Log Entry:

{
  "eventName": "user_login",
  "categoryUid": "3",
  "classUid": "3002",
  "description": "User XY logged in",
  "ts": "2023-01-20T18:55:32.466Z",
  "orgId": "org_abc123",
  "workspaceId": "workspace_xyz456",
  "userId": "user_XY",
  "target": "organization_setting_XY",
  "source": "1.2.3.4",
  "sessionContextType": "OIDC",
  "sessionContextIdentifier": "token_1234",
  "success": true,
  "type": "audit"
}

Audit Events

Below is a complete list of all audit log events, including their meanings, categories, and classes. The categories and classes follow the Open Cybersecurity Schema Framework (OCSF) where applicable.

EventMeaningCategoryClassAdditional Details
DATA_ACCESSUser accessed workspace data66005target = dashboard/visualization IDs
DATA_EXPORT_INITIATEUser started a data export66005exportFormat, exportId
DATA_EXPORT_RETRIEVEUser downloaded exported data66005exportId
EXECUTION_INITIATEAn AFM execution was initiated.66005—
EXECUTION_RETRIEVEThe results of an AFM execution were retrieved.66005—
CSV_DATA_UPLOADData uploaded via CSV66005target = datasourceId
USER_LOGINUser tried to log in33002Logs only failed logins for JWT/API; success only for OIDC
USER_LOGOUTUser logged out33002—
USER_CREATEA user was created33001Includes ID, email, userGroups
USER_UPDATEUser account updated33001List of changed attributes
USER_DELETEUser account deleted33001—
API_TOKEN_CREATEAn API token was created33002—
API_TOKEN_DELETEAn API token was deleted33002—
USER_DATA_FILTER_CREATEA user data filter was created33005MAQL expression + user/userGroup
USER_DATA_FILTER_UPDATEA user data filter was updated33005—
USER_DATA_FILTER_DELETEA user data filter was deleted33005—
USERGROUP_CREATEA user group was created33006—
USERGROUP_UPDATEA user group was updated33006—
USERGROUP_DELETEA user group was deleted33006—
USER_USERGROUP_ADDUser added to a group33006Includes user and group info
USER_USERGROUP_DELETEUser removed from a group33006—
PERMISSION_USER_ADDPermission added to user33005Includes permissionLevel and object
PERMISSION_USER_DELETEPermission removed from user33005—
PERMISSION_USERGROUP_ADDPermission added to group33006Includes permissionLevel and object
PERMISSION_USERGROUP_DELETEPermission removed from group33006—
PERMISSION_RULE_ADDPermission rule added33005Example: ALL_WORKSPACE_USERS
PERMISSION_RULE_DELETEPermission rule removed33005—
INVITATION_SENDInvitation to join organization sent33005Only used in trial setups of GoodData Cloud. Not applicable to GoodData.CN.
SCHEDULED_MAIL_SENDA scheduled email was sent44009from_email, sessionContext info
AUTH_PROVIDER_CREATEAuth provider created9999001Parameters (secrets masked)
AUTH_PROVIDER_DELETEAuth provider deleted9999001—
AUTH_PROVIDER_UPDATEAuth provider updated9999001—
AUTH_FIM_ENABLEFederated identity enabled9999001—
DATASOURCE_CREATENew data source created9999002Parameters (credentials masked)
DATASOURCE_DELETEData source deleted9999002—
DATASOURCE_UPDATEData source updated9999002—
DATASOURCE_CACHE_INVALIDATECache invalidated9999002target = dataSource ID
ORG_SETTINGS_CREATEOrg settings created9999003Includes settingType
ORG_SETTINGS_UPDATEOrg settings updated9999003—
ORG_SETTINGS_DELETEOrg settings deleted9999003—
WORKSPACE_DATA_FILTER_CREATEWorkspace data filter created9999006Includes column name and title
WORKSPACE_DATA_FILTER_UPDATEWorkspace data filter updated9999006—
WORKSPACE_DATA_FILTER_DELETEWorkspace data filter deleted9999006—
WORKSPACE_DATA_FILTER_SETTING_CREATEWorkspace data filter setting created9999006Includes filterValues
WORKSPACE_DATA_FILTER_SETTING_UPDATEWorkspace data filter setting updated9999006—
WORKSPACE_DATA_FILTER_SETTING_DELETEWorkspace data filter setting deleted9999006—
WORKSPACE_CREATEWorkspace created9999005—
WORKSPACE_UPDATEWorkspace updated9999005—
WORKSPACE_DELETEWorkspace deleted9999005Deletes all resources inside
WORKSPACE_SETTINGS_CREATEWorkspace setting created9999005settingType = name of setting
WORKSPACE_SETTINGS_UPDATEWorkspace setting updated9999005—
WORKSPACE_SETTINGS_DELETEWorkspace setting deleted9999005—
ANALYTICS_MODEL_CREATEAnalytics model created9999007Includes type and sourceColumn
ANALYTICS_MODEL_UPDATEAnalytics model updated9999007—
ANALYTICS_MODEL_DELETEAnalytics model deleted9999007—
METRIC_CREATEMetric created9999007Includes MAQL and format
METRIC_UPDATEMetric updated9999007—
METRIC_DELETEMetric deleted9999007—
DATASET_CREATEDataset created9999007Includes ID and source table
DATASET_UPDATEDataset updated9999007—
DATASET_DELETEDataset deleted9999007—
LOCALIZATION_UPDATELocalizations updated9999004—
LOCALIZATION_DOWNLOADLocalizations downloaded9999004—
DASHBOARD_UPDATEDashboard updated9999007—
DASHBOARD_CREATEDashboard created9999007—
DASHBOARD_DELETEDashboard deleted9999007—
VISUALISATION_CREATEVisualization created9999007—
VISUALISATION_UPDATEVisualization updated9999007—
VISUALISATION_DELETEVisualization deleted9999007—

Audit Logging for Layout APIs

When using the layout APIs, deletion of old resources is recorded through a single audit log message per action, rather than individual entries for each sub-resource. However, creation events are logged individually for each entity.

Here is how deletion events are logged:

  • eventName = workspace_delete, target = <org_id> (Triggered by the organization layout API) This also deletes: workspace settings, dashboards, visualizations, and permissions.

  • eventName = workspace_delete, target = <workspace_id> (Triggered by the workspace layout API) This also deletes: workspace settings, dashboards, visualizations, and permissions.

  • eventName = analytics_model_delete, target = <workspace_id> (Triggered by the analytics model layout API) This also deletes related permissions.

  • eventName = datasource_delete, target = <organization_id> Deletes the data source and all related permissions.

Limitations

  • No Dedicated API: This solution does not include a dedicated API for accessing audit logs.
  • No Internal Log Processing: There is no active log processing pipeline within GoodData.CN.
  • Decentralized Storage: Logs are stored locally with each deployment. This means there is no centralized aggregation (e.g., no integration with systems like Loki).