Collect Cloud Identity Device Users logs

Supported in:

This document explains how to export Cloud Identity Device Users logs into Google Security Operations using Cloud Storage. The parser first extracts data from JSON formatted Cloud Identity Device Users logs and transforms the timestamp to the standardized format. Then, it maps specific fields from the raw log data to the corresponding fields in the unified data model (UDM) for user entities, their relationships to assets, and additional user attributes like management and password states.

Before you begin

  • Ensure that Google Cloud Identity is enabled in your Google Cloud project.
  • Ensure that you have a Google SecOps instance.
  • Ensure that you have privileged access to Google Cloud Identity and Cloud Logging.

Create a Cloud Storage bucket

  1. Sign in to the Google Cloud console.
  2. Go to the Cloud Storage Buckets page.

    Go to Buckets

  3. Click Create.

  4. On the Create a bucket page, enter your bucket information. After each of the following steps, click Continue to proceed to the next step:

    1. In the Get started section, do the following:

      1. Enter a unique name that meets the bucket name requirements; for example, gcp-cloudidentity-users-logs.
      2. To enable hierarchical namespace, click the expander arrow to expand the Optimize for file oriented and data-intensive workloads section, and then select Enable Hierarchical namespace on this bucket.

      3. To add a bucket label, click the expander arrow to expand the Labels section.

      4. Click Add label, and specify a key and a value for your label.

    2. In the Choose where to store your data section, do the following:

      1. Select a Location type.
      2. Use the location type menu to select a Location where object data within your bucket will be permanently stored.

      3. To set up cross-bucket replication, expand the Set up cross-bucket replication section.

    3. In the Choose a storage class for your data section, either select a default storage class for the bucket, or select Autoclass for automatic storage class management of your bucket's data.

    4. In the Choose how to control access to objects section, select not to enforce public access prevention, and select an access control model for your bucket's objects.

    5. In the Choose how to protect object data section, do the following:

      1. Select any of the options under Data protection that you want to set for your bucket.
      2. To choose how your object data will be encrypted, click the expander arrow labeled Data encryption, and select a Data encryption method.
  5. Click Create.

Configure Cloud Identity Device Users logs export

  1. Sign in to the Google Cloud console.
  2. Go to Logging > Log Router.
  3. Click Create Sink.
  4. Provide the following configuration parameters:

    • Sink Name: enter a meaningful name; for example, Cloudidentity-Users-Sink.
    • Sink Destination: select Cloud Storage Storage and enter the URI for your bucket; for example, gs://gcp-cloudidentity-users-logs.
    • Log Filter:

      logName="projects/<your-project-id>/logs/cloudaudit.googleapis.com%2Factivity"
      resource.type="cloud_identity_user"
      
    • Set Export Options: include all log entries.

  5. Click Create.

Configure permissions for Cloud Storage

  1. Go to IAM & Admin > IAM.
  2. Locate the Cloud Logging service account.
  3. Grant the roles/storage.admin on the bucket.

Configure a feed in Google SecOps to ingest Cloud Identity Device Users logs

  1. Go to SIEM Settings > Feeds.
  2. Click Add new.
  3. In the Feed name field, enter a name for the feed; for example, Cloud Identity DU Logs.
  4. Select Google Cloud Storage as the Source type.
  5. Select GCP Cloud Identity Device Users as the Log type.
  6. Click Get Service Account next to the Chronicle Service Account field.
  7. Click Next.
  8. Specify values for the following input parameters:

    • Storage Bucket URI: Cloud Storage bucket URL; for example, gs://gcp-cloudidentity-users-logs.
    • URI Is A: select Directory which includes subdirectories.
    • Source deletion options: select the deletion option according to your preference.

    • Asset namespace: the asset namespace.

    • Ingestion labels: the label applied to the events from this feed.

  9. Click Next.

  10. Review your new feed configuration in the Finalize screen, and then click Submit.

UDM Mapping Table

Log Field UDM Mapping Logic
collection_time.nanos timestamp.nanos Directly mapped from the log field. Represents the event timestamp in nanoseconds.
collection_time.seconds timestamp.seconds Directly mapped from the log field. Represents the event timestamp in seconds.
createTime entity.metadata.creation_timestamp Directly mapped from the log field after being parsed by the date filter. Represents the creation timestamp of the user.
managementState entity.additional.fields.value.string_value Directly mapped from the log field. Represents the management state of the user.
name entity.entity.resource.name Directly mapped from the log field. Represents the full resource name of the device user.
passwordState entity.additional.fields.value.string_value Directly mapped from the log field. Represents the password state of the user. This field is only mapped if the passwordState field exists in the raw log.
userEmail entity.entity.user.email_addresses Directly mapped from the log field. Represents the email address of the user.
entity.additional.fields.key Set to a constant value Management State within the parser. This field is used to provide context to the managementState value.
entity.additional.fields.key Set to a constant value Password State within the parser. This field is used to provide context to the passwordState value and is only present if passwordState exists in the raw log.
entity.entity.user.product_object_id Extracted from the name field using the grok filter, capturing the deviceuser_id portion. Represents the unique identifier of the device user.
entity.metadata.collected_timestamp.nanos Copied from collection_time.nanos. Represents the timestamp when the log was collected.
entity.metadata.collected_timestamp.seconds Copied from collection_time.seconds. Represents the timestamp when the log was collected.
entity.metadata.entity_type Set to a constant value USER within the parser.
entity.metadata.product_name Set to a constant value GCP Cloud Identity Device Users within the parser.
entity.metadata.vendor_name Set to a constant value Google Cloud Platform within the parser.
relations.entity.asset.product_object_id Extracted from the name field using the grok filter, capturing the device_id portion. Represents the unique identifier of the device.
relations.entity_type Set to a constant value ASSET within the parser.
relations.relationship Set to a constant value MEMBER within the parser.

Changes

2022-10-01

Bug fix:

  • Removed mapping for the field firstSyncTime, lastSyncTime.
  • Added condition to check passwordState not empty.

2022-04-21

Enhancement:

  • Changed value of relationships.entity_type to ASSET, relations.relationship to MEMBER
  • Changed mapping for firstSyncTime and lastSyncTime from additional.fields to entity.metadata.interval

2022-04-13

  • Newly created parser.

Need more help? Get answers from Community members and Google SecOps professionals.