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 Umbrella dashboard 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 Umbrella dashboard 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 ID and External ID displayed by Umbrella if not already saved.
- Click Save.
Configure AWS S3 bucket and IAM for Google SecOps
- Create Amazon S3 bucket following this user guide: Creating a bucket
- Save bucket Name and Region for future reference (for example,
umbrella-logs). - Create a User following this user guide: Creating an IAM user.
- Select the created User.
- Select Security credentials tab.
- Click Create Access Key in section Access Keys.
- Select Third-party service as Use case.
- Click Next.
- Optional: Add description tag.
- Click Create access key.
- Click Download CSV file to save the Access Key and Secret Access Key for future reference.
- Click Done.
- Select Permissions tab.
- Click Add permissions in section Permissions policies.
- Select Add permissions.
- Select Attach policies directly.
- Search for AmazonS3FullAccess policy.
- 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 ARN for use in the Umbrella dashboard.
Verify Cisco Umbrella log export
- Return to the Cisco Umbrella dashboard.
- Go to Admin > Log Management.
- Enter the Role ARN from the IAM role you created (if not already configured).
- Click Verify to 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 name field, enter a name for the feed (for example,
Cisco Umbrella Web Proxy logs). - Select Amazon S3 V2 as the Source type.
- Select Cisco Umbrella Web Proxy as 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 Finalize screen, 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.