Bird
Raised Fist0
GCPcloud~5 mins

Audit logging in GCP - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Audit logging
O(n)
Understanding Time Complexity

Audit logging records actions in a system to keep track of what happened and when.

We want to understand how the time to write audit logs changes as more events happen.

Scenario Under Consideration

Analyze the time complexity of the following audit logging code snippet.

// Pseudocode for audit logging in GCP
function writeAuditLog(events) {
  for (let event of events) {
    // Prepare log entry
    let logEntry = formatLog(event);
    // Write log entry to Cloud Logging
    cloudLogging.write(logEntry);
  }
}

This code writes each event's audit log entry one by one to Cloud Logging.

Identify Repeating Operations
  • Primary operation: Loop over each event to write its log entry.
  • How many times: Once for each event in the input list.
How Execution Grows With Input

As the number of events grows, the number of log writes grows the same way.

Input Size (n)Approx. Operations
1010 log writes
100100 log writes
10001000 log writes

Pattern observation: The work grows directly with the number of events.

Final Time Complexity

Time Complexity: O(n)

This means the time to write audit logs grows linearly with the number of events.

Common Mistake

[X] Wrong: "Writing multiple audit logs at once takes the same time as writing one."

[OK] Correct: Each event requires its own log write, so more events mean more time.

Interview Connect

Understanding how audit logging scales helps you design systems that handle many events efficiently.

Self-Check

"What if we batch multiple events into a single log write? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of audit logging in Google Cloud Platform?
easy
A. To create virtual machines
B. To record actions for security and troubleshooting
C. To speed up network traffic
D. To increase storage capacity automatically

Solution

  1. Step 1: Understand audit logging function

    Audit logging captures user and system actions in your cloud environment.
  2. Step 2: Identify the purpose

    This helps with security monitoring and troubleshooting issues.
  3. Final Answer:

    To record actions for security and troubleshooting -> Option B
  4. Quick Check:

    Audit logging = record actions [OK]
Hint: Audit logs track actions for security and fixes [OK]
Common Mistakes:
  • Confusing audit logs with storage or network features
  • Thinking audit logs create resources
  • Assuming audit logs improve performance
2. Which command correctly creates a sink to export audit logs to a Cloud Storage bucket named my-logs-bucket?
easy
A. gcloud logging sinks create my-sink storage.googleapis.com/my-logs-bucket --log-filter="resource.type=\"gce_instance\""
B. gcloud logging create sink my-sink storage://my-logs-bucket
C. gcloud logs create sink my-sink gs://my-logs-bucket
D. gcloud logging sinks add my-sink storage.googleapis.com/my-logs-bucket

Solution

  1. Step 1: Identify correct gcloud command syntax

    The correct command uses gcloud logging sinks create followed by sink name and destination URL.
  2. Step 2: Verify destination format

    Cloud Storage buckets use storage.googleapis.com/BUCKET_NAME format.
  3. Final Answer:

    gcloud logging sinks create my-sink storage.googleapis.com/my-logs-bucket --log-filter="resource.type=\"gce_instance\"" -> Option A
  4. Quick Check:

    Correct sink creation syntax = gcloud logging sinks create my-sink storage.googleapis.com/my-logs-bucket --log-filter="resource.type=\"gce_instance\"" [OK]
Hint: Use 'gcloud logging sinks create' with full storage URL [OK]
Common Mistakes:
  • Using wrong command verbs like 'create sink' or 'add sink'
  • Incorrect bucket URL format (missing storage.googleapis.com)
  • Using 'gs://' instead of full URL
3. Given this filter in a sink configuration: resource.type="bigquery_resource" AND protoPayload.methodName="jobservice.jobcompleted", what logs will be exported?
medium
A. Only logs from Compute Engine instances
B. All error logs from Cloud Storage
C. All BigQuery job completion audit logs
D. All network traffic logs

Solution

  1. Step 1: Analyze the resource type filter

    The filter specifies resource.type="bigquery_resource", so logs relate to BigQuery.
  2. Step 2: Analyze the method name filter

    protoPayload.methodName="jobservice.jobcompleted" means only job completion events are included.
  3. Final Answer:

    All BigQuery job completion audit logs -> Option C
  4. Quick Check:

    Filter matches BigQuery job completions = All BigQuery job completion audit logs [OK]
Hint: Filter resource and method to find exported logs [OK]
Common Mistakes:
  • Confusing resource types with unrelated services
  • Ignoring methodName filter
  • Assuming all logs are exported
4. You created a sink to export audit logs to a Pub/Sub topic but logs are not appearing. What is the most likely cause?
medium
A. The sink lacks permission to publish to the Pub/Sub topic
B. The sink filter is too broad and excludes all logs
C. Audit logging is disabled in the project
D. The Pub/Sub topic name is misspelled in the sink

Solution

  1. Step 1: Check sink permissions

    Sinks need permission to write to destinations like Pub/Sub topics.
  2. Step 2: Identify common permission issue

    If logs do not appear, the sink likely lacks the pubsub.publisher role on the topic.
  3. Final Answer:

    The sink lacks permission to publish to the Pub/Sub topic -> Option A
  4. Quick Check:

    Missing sink permissions = The sink lacks permission to publish to the Pub/Sub topic [OK]
Hint: Check sink destination permissions first when logs missing [OK]
Common Mistakes:
  • Assuming audit logging is off without checking
  • Blaming filter without verifying permissions
  • Ignoring typo in topic name
5. You want to export only admin activity audit logs for Cloud Storage buckets in your project to a BigQuery dataset for analysis. Which sink filter is correct?
hard
A. resource.type="gcs_bucket" AND severity="ERROR"
B. logName:"cloudaudit.googleapis.com/activity" AND resource.type="gcs_bucket" AND protoPayload.methodName:"storage.objects.create"
C. logName:"cloudaudit.googleapis.com/data_access" AND resource.type="gcs_bucket"
D. logName:"cloudaudit.googleapis.com/admin_activity" AND resource.type="gcs_bucket"

Solution

  1. Step 1: Identify admin activity logs

    Admin activity logs use logName:"cloudaudit.googleapis.com/admin_activity".
  2. Step 2: Filter for Cloud Storage buckets

    Use resource.type="gcs_bucket" to target storage buckets.
  3. Step 3: Confirm filter matches requirement

    logName:"cloudaudit.googleapis.com/admin_activity" AND resource.type="gcs_bucket" correctly combines admin activity logs with GCS buckets.
  4. Final Answer:

    logName:"cloudaudit.googleapis.com/admin_activity" AND resource.type="gcs_bucket" -> Option D
  5. Quick Check:

    Admin activity + GCS bucket filter = logName:"cloudaudit.googleapis.com/admin_activity" AND resource.type="gcs_bucket" [OK]
Hint: Use admin_activity logName for admin logs [OK]
Common Mistakes:
  • Using data_access logs instead of admin_activity
  • Filtering by specific methods unnecessarily
  • Confusing severity with log type
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard