Skip to content
Community previewValidate controls against current Google documentation.Report a gap

System and Information Integrity (SI) - Google Cloud Platform

This guide provides gcloud commands and automated methods for collecting evidence related to NIST SP 800-53 and FedRAMP System and Information Integrity (SI) family controls in Google Cloud Platform environments.

  • Security Command Center: Vulnerability and threat detection
  • Cloud Logging: Centralized logging and monitoring
  • Cloud Monitoring: Performance and uptime monitoring
  • Cloud Security Scanner: Web application vulnerability scanning
  • Container Analysis: Container vulnerability scanning
  • Cloud IDS: Intrusion detection system

List Security Command Center findings

Terminal window
gcloud scc findings list organizations/ORGANIZATION_ID \
--source=organizations/ORGANIZATION_ID/sources/SECURITY_HEALTH_ANALYTICS_SOURCE_ID \
--filter="state=\"ACTIVE\" AND category=\"VULNERABILITY\"" \
--format="table(name,category,findingClass,severity)"

Check OS patch status on instances

Terminal window
gcloud compute instances os-inventory list-instances \
--format="table(name,lastOsInventoryUpdateTime)"

Get OS inventory details for an instance

Terminal window
gcloud compute instances os-inventory describe INSTANCE_NAME \
--zone=ZONE

Check Shielded VM status (includes vTPM for integrity)

Terminal window
gcloud compute instances list \
--filter="shieldedInstanceConfig.enableIntegrityMonitoring=true" \
--format="table(name,shieldedInstanceConfig.enableIntegrityMonitoring,shieldedInstanceConfig.enableVtpm)"

Monitor malware detection alerts

Terminal window
gcloud logging read \
"resource.type=\"gce_instance\" AND protoPayload.response.finding.category=\"MALWARE\"" \
--project=PROJECT_ID \
--freshness=7d

List all log sinks

Terminal window
gcloud logging sinks list --project=PROJECT_ID

Check Cloud Monitoring alerting policies

Terminal window
gcloud monitoring policies list --project=PROJECT_ID

List notification channels

Terminal window
gcloud monitoring channels list --project=PROJECT_ID

Export audit logs for analysis

Terminal window
gcloud logging read \
"logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity\"" \
--project=PROJECT_ID \
--format=json \
--freshness=24h > audit_logs.json

Check if Cloud IDS is enabled

Terminal window
gcloud ids endpoints list --project=PROJECT_ID --location=LOCATION

SI-5: Security Alerts, Advisories, and Directives

Section titled “SI-5: Security Alerts, Advisories, and Directives”

List Security Command Center notification configs

Terminal window
gcloud scc notification-configs list --organization=ORGANIZATION_ID

Check for critical findings

Terminal window
gcloud scc findings list organizations/ORGANIZATION_ID \
--filter="severity=\"CRITICAL\" OR severity=\"HIGH\"" \
--format="table(name,category,severity,state,createTime)"

Verify security controls are active

Terminal window
# Check if audit logging is enabled
gcloud projects get-iam-policy PROJECT_ID \
--flatten="auditConfigs[].auditLogConfigs[]" \
--format="table(auditConfigs.service,auditConfigs.auditLogConfigs.logType)"
# Check organization policies are enforced
gcloud resource-manager org-policies list \
--organization=ORGANIZATION_ID \
--format="table(constraint,listPolicy.allValues,booleanPolicy.enforced)"

SI-7: Software, Firmware, and Information Integrity

Section titled “SI-7: Software, Firmware, and Information Integrity”

Check image signatures and attestations

Terminal window
gcloud container binauthz attestors list --project=PROJECT_ID

Verify Binary Authorization policy

Terminal window
gcloud container binauthz policy export --project=PROJECT_ID

List signed container images

Terminal window
gcloud container images list-tags gcr.io/PROJECT_ID/IMAGE_NAME \
--format="table(digest,tags,timestamp)"

Check Web Security Scanner findings

Terminal window
gcloud web-security-scanner scan-runs list \
--project=PROJECT_ID

Get scan results

Terminal window
gcloud web-security-scanner findings list \
--scan-run=SCAN_RUN_NAME \
--project=PROJECT_ID

Check Cloud Storage lifecycle policies

Terminal window
for bucket in $(gsutil ls); do
echo "Bucket: $bucket"
gsutil lifecycle get $bucket
done

List retention policies on log buckets

Terminal window
gcloud logging buckets list \
--location=global \
--format="table(name,retentionDays,locked)" \
--project=PROJECT_ID

Check for instances with secure boot enabled

Terminal window
gcloud compute instances list \
--filter="shieldedInstanceConfig.enableSecureBoot=true" \
--format="table(name,shieldedInstanceConfig.enableSecureBoot,shieldedInstanceConfig.enableVtpm,shieldedInstanceConfig.enableIntegrityMonitoring)"
#!/bin/bash
# Complete SI controls audit
PROJECT_ID="YOUR_PROJECT_ID"
ORG_ID="YOUR_ORG_ID"
OUTPUT_DIR="si_audit_$(date +%Y%m%d)"
mkdir -p $OUTPUT_DIR
# Security findings
echo "=== Security Command Center Findings ==="
gcloud scc findings list organizations/$ORG_ID \
--filter="state=\"ACTIVE\"" \
--format=json > $OUTPUT_DIR/scc_findings.json
# Logging configuration
echo "=== Logging Configuration ==="
gcloud logging sinks list --format=json > $OUTPUT_DIR/log_sinks.json
gcloud logging buckets list --location=global --format=json > $OUTPUT_DIR/log_buckets.json
# Monitoring configuration
echo "=== Monitoring Alerts ==="
gcloud monitoring policies list --format=json > $OUTPUT_DIR/alert_policies.json
gcloud monitoring channels list --format=json > $OUTPUT_DIR/notification_channels.json
# Shielded VM status
echo "=== Shielded VM Status ==="
gcloud compute instances list \
--format="json(name,shieldedInstanceConfig)" > $OUTPUT_DIR/shielded_vms.json
# Binary Authorization
echo "=== Binary Authorization ==="
gcloud container binauthz policy export > $OUTPUT_DIR/binauthz_policy.yaml
gcloud container binauthz attestors list --format=json > $OUTPUT_DIR/attestors.json
#!/bin/bash
# Generate vulnerability management report
# OS vulnerabilities
echo "=== OS Vulnerabilities ==="
gcloud scc findings list organizations/ORG_ID \
--source=organizations/ORG_ID/sources/SECURITY_HEALTH_ANALYTICS_SOURCE_ID \
--filter="category=\"OS_VULNERABILITY\" AND state=\"ACTIVE\"" \
--format="table(resource,category,findingClass,severity)"
# Container vulnerabilities
echo "=== Container Vulnerabilities ==="
for image in $(gcloud container images list --format="value(name)"); do
echo "Scanning image: $image"
gcloud container images scan $image
gcloud container images describe $image --show-package-vulnerability
done
# Web application vulnerabilities
echo "=== Web Security Scanner Results ==="
gcloud web-security-scanner scan-runs list \
--format="table(name,state,startTime,endTime,urlsCrawledCount,urlsTestedCount)"
#!/bin/bash
# Monitor security events in real-time
# Monitor critical security findings
watch -n 300 'gcloud scc findings list organizations/ORG_ID \
--filter="severity=\"CRITICAL\" AND state=\"ACTIVE\" AND eventTime>timestamp.now()-300s" \
--format="table(name,category,severity,eventTime)"'
# Monitor authentication failures
gcloud logging tail \
"protoPayload.status.code=7 OR protoPayload.status.code=16" \
--project=PROJECT_ID
# Monitor configuration changes
gcloud logging tail \
"protoPayload.methodName:(\"SetIamPolicy\" OR \"Update\" OR \"Patch\" OR \"Delete\")" \
--project=PROJECT_ID
#!/bin/bash
# Export compliance evidence for SI controls
EXPORT_BUCKET="gs://compliance-evidence-bucket"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Export all security findings
gcloud scc findings list organizations/ORG_ID \
--filter="state=\"ACTIVE\"" \
--format=json | gsutil cp - $EXPORT_BUCKET/si_findings_$TIMESTAMP.json
# Export monitoring configuration
gcloud monitoring policies list --format=json | \
gsutil cp - $EXPORT_BUCKET/monitoring_policies_$TIMESTAMP.json
# Export log aggregation proof
gcloud logging sinks list --format=json | \
gsutil cp - $EXPORT_BUCKET/log_sinks_$TIMESTAMP.json
# Export patch compliance status
for instance in $(gcloud compute instances list --format="value(name,zone)"); do
name=$(echo $instance | cut -d' ' -f1)
zone=$(echo $instance | cut -d' ' -f2)
gcloud compute instances os-inventory describe $name --zone=$zone --format=json | \
gsutil cp - $EXPORT_BUCKET/patch_status_${name}_$TIMESTAMP.json
done

Page provenance

Community-maintained guidance. Use the edit link below to propose a sourced correction.

Contributors

Was this page useful?

Help us prioritize the next improvement.