Collect Cisco Umbrella Web Proxy logs
This document explains how to ingest Cisco Umbrella Web Proxy logs to Google Security Operations using Amazon S3. Cisco Umbrella Web Proxy provides full URL visibility and control for web traffic, acting as a cloud-based secure web gateway (SWG). Web Proxy logs capture HTTP and HTTPS traffic details including full URLs, user identities, content types, and security verdicts for requests proxied through the Umbrella intelligent proxy.
Before you begin
Make sure you have the following prerequisites:
- Google SecOps instance.
- Privileged access to the Cisco Umbrelladashboard with Full Admin or Read-Only Admin role.
- Privileged access to AWS(S3, IAM).
- Cisco Umbrella Secure Internet Gateway (SIG) or DNS Security Advantage license with intelligent proxy enabled.
Configure Cisco Umbrella log export to Amazon S3
Cisco Umbrella natively supports exporting Web Proxy logs to an Amazon S3 bucket that you manage. If you have already configured S3 log export for Umbrella DNS logs, the same S3 bucket and IAM configuration can be reused. Umbrella stores proxy logs in a separate prefix.
- Sign in to the Cisco Umbrelladashboard at
https://dashboard.umbrella.com. - Go to Admin > Log Management.
- If S3 log export is not yet configured, click Use your company-managed Amazon S3 bucket.
- Provide the following configuration details:
- Bucket Name: Enter the name of the S3 bucket (for example,
umbrella-logs). - Region: Select the AWS region where your bucket is located.
- Bucket Name: Enter the name of the S3 bucket (for example,
- Copy the AWS Account IDand External IDdisplayed by Umbrella if not already saved.
- Click Save.
Configure AWS S3 bucket and IAM for Google SecOps
- Create Amazon S3 bucketfollowing this user guide: Creating a bucket
- Save bucket Nameand Regionfor future reference (for example,
umbrella-logs). - Create a Userfollowing this user guide: Creating an IAM user .
- Select the created User.
- Select Security credentialstab.
- Click Create Access Keyin section Access Keys.
- Select Third-party serviceas Use case.
- Click Next.
- Optional: Add description tag.
- Click Create access key.
- Click Download CSV fileto save the Access Keyand Secret Access Keyfor future reference.
- Click Done.
- Select Permissionstab.
- Click Add permissionsin section Permissions policies.
- Select Add permissions.
- Select Attach policies directly.
- Search for AmazonS3FullAccesspolicy.
- Select the policy.
- Click Next.
- Click Add permissions.
Configure the IAM policy and role for Cisco Umbrella S3 access
Cisco Umbrella requires a cross-account IAM role to write logs to your S3 bucket.
- In the AWS console, go to IAM > Policies > Create policy > JSON tab.
-
Copy and paste the following policy (replace
umbrella-logsif you entered a different bucket name):{ "Version" : "2012-10-17" , "Statement" : [ { "Sid" : "AllowUmbrellaPutObjects" , "Effect" : "Allow" , "Action" : [ "s3:PutObject" , "s3:GetBucketLocation" ], "Resource" : [ "arn:aws:s3:::umbrella-logs" , "arn:aws:s3:::umbrella-logs/*" ] } ] } -
Click Next > Create policy. Name it
UmbrellaS3WritePolicy. -
Go to IAM > Roles > Create role > Custom trust policy.
-
Paste the tfollowing trust policy, replacing
UMBRELLA_AWS_ACCOUNT_IDandUMBRELLA_EXTERNAL_IDwith the values copied from the Umbrella dashboard:{ "Version" : "2012-10-17" , "Statement" : [ { "Effect" : "Allow" , "Principal" : { "AWS" : "arn:aws:iam::UMBRELLA_AWS_ACCOUNT_ID:root" }, "Action" : "sts:AssumeRole" , "Condition" : { "StringEquals" : { "sts:ExternalId" : "UMBRELLA_EXTERNAL_ID" } } } ] } -
Click Next.
-
Attach the
UmbrellaS3WritePolicypolicy. -
Name the role
UmbrellaS3Roleand click Create role. -
Copy the Role ARNfor use in the Umbrella dashboard.
Verify Cisco Umbrella log export
- Return to the Cisco Umbrelladashboard.
- Go to Admin > Log Management.
- Enter the Role ARNfrom the IAM role you created (if not already configured).
- Click Verifyto confirm that Umbrella can write to the S3 bucket.
- After successful verification, Umbrella will begin exporting proxy logs to the S3 bucket.
Configure a feed in Google SecOps to ingest Cisco Umbrella Web Proxy logs
- Go to SIEM Settings > Feeds.
- Click + Add New Feed.
- In the Feed namefield, enter a name for the feed (for example,
Cisco Umbrella Web Proxy logs). - Select Amazon S3 V2as the Source type.
- Select Cisco Umbrella Web Proxyas the Log type.
- Click Next.
-
Specify values for the following input parameters:
- S3 URI:
s3://umbrella-logs/proxylogs/ - Source deletion options: Select deletion option according to your preference.
- Maximum File Age: Include files modified in the last number of days. Default is 180 days.
- Access Key ID: User access key with access to the S3 bucket.
- Secret Access Key: User secret key with access to the S3 bucket.
- Asset namespace: The asset namespace .
- Ingestion labels: The label applied to the events from this feed.
- S3 URI:
-
Click Next.
-
Review your new feed configuration in the Finalizescreen, and then click Submit.
UDM Mapping Table
| Log Field | UDM Mapping | Logic |
|---|---|---|
ampDisposition
|
security_result.detection_fields[].value
|
The value of ampDisposition
from the raw log. |
ampMalware
|
security_result.detection_fields[].value
|
The value of ampMalware
from the raw log. |
ampScore
|
security_result.detection_fields[].value
|
The value of ampScore
from the raw log. |
avDetections
|
security_result.detection_fields[].value
|
The value of avDetections
from the raw log. |
blockedCategories
|
security_result.threat_name
|
The value of blockedCategories
from the raw log. |
certificateErrors
|
security_result.detection_fields[].value
|
The value of certificateErrors
from the raw log. |
contentType
|
security_result.detection_fields[].value
|
The value of contentType
from the raw log. |
destinationIp
|
target.ip
|
The value of destinationIp
from the raw log. |
destinationListID
|
security_result.detection_fields[].value
|
The value of destinationListID
from the raw log. |
dlpstatus
|
security_result.detection_fields[].value
|
The value of dlpstatus
from the raw log. |
externalIp
|
principal.ip
|
The value of externalIp
from the raw log. |
fileAction
|
security_result.detection_fields[].value
|
The value of fileAction
from the raw log. |
fileName
|
target.file.names
|
The value of fileName
from the raw log. |
identitiesV8
|
principal.hostname
|
The value of identitiesV8
from the raw log. |
identity
|
principal.location.name
|
The value of identity
from the raw log. |
internalIp
|
principal.ip
|
The value of internalIp
from the raw log. |
isolateAction
|
security_result.detection_fields[].value
|
The value of isolateAction
from the raw log. |
referer
|
network.http.referral_url
|
The value of referer
from the raw log. |
requestMethod
|
network.http.method
|
The value of requestMethod
from the raw log. |
requestSize
|
security_result.detection_fields[].value
|
The value of requestSize
from the raw log. |
responseBodySize
|
security_result.detection_fields[].value
|
The value of responseBodySize
from the raw log. |
responseSize
|
security_result.detection_fields[].value
|
The value of responseSize
from the raw log. |
ruleID
|
security_result.rule_id
|
The value of ruleID
from the raw log. |
rulesetID
|
security_result.detection_fields[].value
|
The value of rulesetID
from the raw log. |
sha
|
security_result.about.file.sha256
|
The value of sha
from the raw log. |
statusCode
|
network.http.response_code
|
The value of statusCode
from the raw log. |
ts
|
timestamp
|
The value of ts
from the raw log, parsed into a timestamp. |
url
|
target.url
|
The value of url
from the raw log. |
userAgent
|
network.http.user_agent
|
The value of userAgent
from the raw log. |
verdict
|
security_result.detection_fields[].value
|
The value of verdict
from the raw log. |
warnstatus
|
security_result.detection_fields[].value
|
The value of warnstatus
from the raw log. The value of collection_time
from the raw log. Hardcoded to NETWORK_HTTP
. Hardcoded to Cisco
. Hardcoded to Umbrella
. Hardcoded to UMBRELLA_WEBPROXY
. Derived from the scheme of the URL field ( http
or https
). Parsed from the userAgent
field using a user-agent parsing library. The value of requestSize
from the raw log, converted to an integer. The value of responseSize
from the raw log, converted to an integer. Derived from the identity
field when identityType
(or identityTypeV8
with identitiesV8
) indicates a user. Further parsed to extract user details like display name, first name, last name, and email address. Mapped from the verdict
field: allowed
or allowed
-> ALLOW
, other values -> BLOCK
. If categories
is not empty, set to NETWORK_CATEGORIZED_CONTENT
. The value of categories
from the raw log. Based on the verdict
and potentially other fields. Usually Traffic allowed
or Traffic blocked
. If verdict
is not allowed
or blocked
and statusCode
is present, the summary is Traffic %{statusCode}
. |
Need more help? Get answers from Community members and Google SecOps professionals.

