Overview
The Microsoft Sentinel destination forwards Ocean events to the Log Analytics workspace that backs your Sentinel instance, using Azure’s HTTP Data Collector API. Events arrive as rows in a custom table namedOceanSecurity_CL, where you can query them with KQL alongside the rest of your Sentinel data.
For an introduction to event types, payloads, and delivery semantics, see the SIEM Forwarding Overview.
Prerequisites
Before configuring the destination in Ocean, gather two values from the Log Analytics workspace that backs your Sentinel:- The Workspace ID — a GUID, e.g.
11111111-2222-3333-4444-555555555555. - The Primary shared key — a long base64 string. Treat this as a secret.
- An Azure account with at least Log Analytics Contributor permission on the workspace (so you can read the shared keys).
- The Azure CLI (or Azure PowerShell) installed locally. The shared key is no longer exposed in the Azure portal UI, so a command-line tool is required to retrieve it.
Ocean currently supports the public Azure commercial cloud (
*.ods.opinsights.azure.com). Sovereign clouds (Azure Government, Azure China) are not yet supported.Get the workspace ID
You can get the Workspace ID from either the Azure CLI or the Azure portal — both show the same value.- Azure CLI
- Azure portal
| Flag | Meaning |
|---|---|
--resource-group (-g) | The Azure Resource Group that contains the Log Analytics workspace. |
--workspace-name (-n) | The Log Analytics workspace name (the workspace your Sentinel is connected to). |
Get the primary shared key
Per Microsoft’s current guidance, workspace shared keys are no longer visible in the Azure portal. The legacy “Primary Key” and “Secondary Key” fields belonged to the older Log Analytics agent (MMA) configuration; with the move to the Azure Monitor Agent (AMA), the Settings → Agents blade has been refactored around Data Collection Rules, and the keys panel has been removed. Use one of the commands below.
- Azure CLI (recommended)
- Azure PowerShell
| Flag | Meaning |
|---|---|
--resource-group (-g) | The Azure Resource Group that contains the Log Analytics workspace. |
--workspace-name (-n) | The Log Analytics workspace name. |
primarySharedKey value — that’s what you paste into Ocean. The secondary key is for rotation only; do not use it for the integration.Configure the destination in Ocean
Fill in the basics
| Field | Value |
|---|---|
| Name | A friendly name (e.g. SOC Sentinel Prod). |
| Workspace ID | The GUID you copied above. |
| Workspace Key | The primarySharedKey you copied above. Ocean stores this encrypted; it is never displayed again. |
Pick events to forward
Under Events to forward, select at least one:
- Inbound Protection — malicious cases
- Inbound Protection — spam cases
- AI Response — report phishing
- AI Response — quarantine release
- Audit Logs
How events arrive in Sentinel
Log Analytics receives each batch of events and writes them to a custom table namedOceanSecurity_CL. The first batch creates the table; later batches add rows.
A few Log Analytics behaviors to know about — these come from Microsoft’s HTTP Data Collector API reference:
- Table name has
_CLappended by Azure to mark it as a custom log. - Column names get a type suffix. Log Analytics infers a type for each field on first ingestion and appends a suffix:
_sfor string,_dfor double,_bfor boolean,_tfor datetime,_gfor GUID. Soevent_typebecomesevent_type_s,is_remediatedbecomesis_remediated_b, and so on. TimeGeneratedis the ingestion time, not the event time. Ocean does not set the API’stime-generated-fieldheader, so Log Analytics populatesTimeGeneratedwith the moment the row was received. When you care about when Ocean actually processed the email, use theprocessed_at_tcolumn (from the event payload) instead.- Explore the schema before writing complex queries. Different event types share the same table but have different fields. Run
OceanSecurity_CL | getschema | order by ColumnName asconce after the first ingest to see the exact column names and types Log Analytics created for your payloads — Azure’s inference rules around nested objects can vary, so the schema is the source of truth. - First-ingest latency. It can take 5–10 minutes after the first event for the
_CLtable to appear in the schema browser. The table is queryable immediately once it shows up.
KQL examples
These examples query theOceanSecurity_CL table using only top-level scalar fields. Run OceanSecurity_CL | getschema first to see the exact columns in your workspace, then adapt the queries to project the fields you need.
Count events by type over the last 24 hours:
Troubleshooting
| Symptom | Likely cause | Resolution |
|---|---|---|
| Destination shows Authentication failed | Wrong Workspace ID or Workspace Key, or the key was rotated. | Re-fetch the Workspace ID and the primarySharedKey via the Azure CLI and update the destination. |
| Destination shows Endpoint unreachable | Workspace ID is malformed or the workspace was deleted. | Verify the GUID and that the workspace still exists in Azure. |
Destination shows Invalid request with InvalidAuthorization | The shared key has been regenerated in Azure since the destination was created. | Re-fetch and update the Workspace Key. |
| Table doesn’t appear in Sentinel | Log Analytics takes 5–10 minutes to materialize a brand-new _CL table. | Wait ~10 minutes after the first export and refresh the schema browser. |
| Table exists but column names look wrong | Log Analytics added type suffixes (_s, _b, _d, _t, _g) on first ingest. | Use the suffixed names in KQL — see the examples above. |
| Cannot read shared keys | Your Azure account lacks Log Analytics Contributor on the workspace. | Ask your Azure admin to grant the role on the workspace’s resource group. |
