Back to standards and frameworks

CIS Google Cloud Foundation Benchmark

## Statement

Category

Standards and Frameworks

Applies to

Alibaba CloudAWSGoogle CloudMicrosoft AzureMicrosoft Entra ID

Coverage

72 controls, 80 queries

Asset types

22 covered

Overview

Statement

This security configuration benchmark covers foundational elements of Google Cloud. The recommendations detailed here are important security considerations when designing your infrastructure on Google Cloud. Most of the recommendations provided with this release of the benchmark cover security considerations only at individual Project level and not at the organization level.

Intended Audience

This document is intended for system and application administrators, security specialists, auditors, help desk, platform deployment, and/or DevOps personnel who plan to develop, deploy, assess, or secure solutions on Google Cloud.

Recommendations

Procedures and mapped controls

1. Identity and Access Management
2. Logging and Monitoring

This section covers recommendations addressing Logging and Monitoring on Google Cloud.

3. Networking
4. Virtual Machines
5. Storage
6. Cloud SQL Database Services

Mapped controls

Ensure 'skip_show_database' database flag for Cloud SQL MySQL instance is set to 'On'

Google Cloud

Ensure the 'local_infile' database flag for a Cloud SQL MySQL instance is set to 'Off'

Google Cloud

Ensure 'log_error_verbosity' database flag for Cloud SQL PostgreSQL instance is set to 'DEFAULT' or stricter

Google Cloud

Ensure the 'log_connections' database flag for Cloud SQL PostgreSQL instance is set to 'On'

Google Cloud

Ensure the 'log_disconnections' database flag for Cloud SQL PostgreSQL instance is set to 'On'

Google Cloud

Ensure 'log_statement' database flag for Cloud SQL PostgreSQL instance is set appropriately

Google Cloud

Ensure the 'log_min_messages' database flag for Cloud SQL PostgreSQL instance is set appropriately

Google Cloud

Ensure 'log_min_error_statement' database flag for Cloud SQL PostgreSQL instance is set to 'Error' or stricter

Google Cloud

Ensure the 'log_min_duration_statement' database flag for Cloud SQL PostgreSQL instance is set to '-1' (Disabled)

Google Cloud

Ensure 'cloudsql.enable_pgaudit' database flag for each Cloud SQL PostgreSQL instance is set to 'on' for centralized logging

Google Cloud

Ensure Instance IP assignment is set to private

Google Cloud

Ensure 'external scripts enabled' database flag for Cloud SQL SQL Server instance is set to 'off'

Google Cloud

Ensure the 'cross db ownership chaining' database flag for Cloud SQL on the SQL Server instance is set to 'Off'

Google Cloud

Ensure 'user connections' database flag for Cloud SQL SQL Server instance is set to a non-limiting value

Google Cloud

Ensure 'user options' database flag for Cloud SQL SQL Server instance is not configured

Google Cloud

Ensure 'remote access' database flag for Cloud SQL SQL Server instance is set to 'off'

Google Cloud

Ensure '3625 (trace flag)' database flag for all Cloud SQL Server instances is set to 'on'

Google Cloud

Ensure the 'contained database authentication' database flag for Cloud SQL on the SQL Server instance is set to 'off'

Google Cloud

Ensure the Cloud SQL database instances require all incoming connections to use SSL

Google Cloud

Ensure Cloud SQL Database Instances do not implicitly whitelist all public IP addresses

Google Cloud

Ensure Cloud SQL database instances do not have public IPs

Google Cloud

Ensure Cloud SQL database instances are configured with automated backups

Google Cloud
7. BigQuery

Query logic

These are the stored checks tied to this framework.

Corporate login credentials are used instead of Gmail accounts

Connectors

Google Cloud

Covered asset types

IAMServiceAccountIAMUser

Expected check: eq []

GCPIAM1{...AssetFragment}
Multi-factor authentication (MFA) is enabled for all IAM users that have a console password

Connectors

AWS

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where:{hasIAMUserCredentials:{passwordEnabled:true,mfaActive:false}}){...AssetFragment}
Google Cloud IAMUsers Without MFA

Connectors

Google Cloud

Covered asset types

IAMUser

Expected check: eq []

{
  iamUsers(where: { NOT: { user: { isEnrolledIn2Sv: true } } }) {
    ...AssetFragment
  }
}
Entra Users Without MFA With Access to Azure

Connectors

Microsoft Azure

Covered asset types

User

Expected check: eq []

{
  users(where: { mfaActive: false, NOT: { iamRoleAssignments_SOME: null } }) {
    ...AssetFragment
  }
}
Multi-factor authentication is enabled for all RAM users that have a console password

Connectors

Alibaba Cloud

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where:{hasIAMUserLoginProfile_SOME:{mfaBindRequired:false}}){...AssetFragment}
Entra users without mfa

Connectors

Microsoft Entra ID

Covered asset types

User

Expected check: eq []

{
  users(where: { mfaActive: false }) {
    ...AssetFragment
  }
}
There are only GCP-managed service account keys for each service account

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{iamServiceAccounts(where:{hasIAMServiceAccountKeys_SOME:{keyType: "USER_MANAGED"}}){...AssetFragment}}
Ensure Service Account has no Admin privileges

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{
  iamServiceAccounts(
    where: {
      hasIAMRole_SOME: {
        OR: [
          { name: "roles/owner" }
          { name: "roles/editor" }
          { name_CONTAINS: "admin" }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
IAM users are not assigned the Service Account User or Service Account Token Creator roles at project level

Connectors

Google Cloud

Covered asset types

IAMServiceAccountIAMUser

Expected check: eq []

GCP110IAM6{...AssetFragment}
User-managed/external keys for service accounts are rotated every 90 days or less

Connectors

Google Cloud

Covered asset types

IAMServiceAccountKey

Expected check: eq []

GCPIAM5{...AssetFragment}
Separation of duties is enforced while assigning service account related roles to users

Connectors

Google Cloud

Covered asset types

IAMUser

Expected check: eq []

{
  iamUsers(
    where: {
      AND: [
        {
          hasIAMRole_SOME: {
            name: "roles/iam.serviceAccountAdmin"
          }
        }
        {
          hasIAMRole_SOME: {
            name: "roles/iam.serviceAccountUser"
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Cloud KMS cryptokeys are not anonymously or publicly accessible

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

kmsKeys(where:{OR:[{policyDocument_CONTAINS:"allUsers"},{policyDocument_CONTAINS:"allAuthenticatedUsers"}]}){...AssetFragment}
KMS encryption keys are rotated within a period of 90 days

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

GCP110IAM10{...AssetFragment}
GCP API Keys are restricted based on hosts and apps

Connectors

Google Cloud

Covered asset types

APIKey

Expected check: eq []

{
  apiKeys(
    where: {
      clientRestrictions: []
    }
  ) {
    ...AssetFragment
  }
}
GCP API Keys are restricted based on APIs

Connectors

Google Cloud

Covered asset types

APIKey

Expected check: eq []

{
  apiKeys(
    where: {
       apiRestrictions: []
    }
  ) {
    ...AssetFragment
  }
}
API Keys rotation

Connectors

Google Cloud

Covered asset types

APIKey

Expected check: eq []

{
  APIKeysRotation(days: 90) {...AssetFragment}
}
Essential Contacts Set

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

EssentialContactsSetOnConnector{...AssetFragment}
Ensure Secrets are not stored in Cloud Functions environment variables by using Secret Manager

Connectors

Google Cloud

Covered asset types

Function

Expected check: eq []

{
  functions(
    where: {
      envVars_SOME: {
        key_MATCHES: "(?i).*(api|key|secret|token|password|access|id|auth|app|client|credential|security|private|public|authorization|confidential|encryption|hmac|signature|passphrase|session|authentication|verify|oauth|ssl|tls|jwt|service_account|code|secure|sudo).*"
      }
    }
  ) {
    ...AssetFragment
  }
}
Cloud Audit Logging is configured properly across all services and all users from a project

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging1{...AssetFragment}
Sinks are configured for all Log entries

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging2{...AssetFragment}
Retention policies on log buckets are configured using Bucket Lock

Connectors

Google Cloud

Covered asset types

LogBucket

Expected check: eq []

logBuckets(where:{locked:false}){...AssetFragment}
Log metric filter and alerts exist for Project Ownership assignments/changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging4{...AssetFragment}
Log metric filter and alerts exist for Audit Configuration Changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging5{...AssetFragment}
Log metric filter and alerts exist for Custom Role changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging6{...AssetFragment}
Log metric filter and alerts exist for VPC Network Firewall rule changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging7{...AssetFragment}
Log metric filter and alerts exist for VPC network route changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging8{...AssetFragment}
Log metric filter and alerts exist for VPC network changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging9{...AssetFragment}
Log metric filter and alerts exist for Cloud Storage IAM permission changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging10{...AssetFragment}
Log metric filter and alerts exist for SQL instance configuration changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging11{...AssetFragment}
Google Cloud VPCs without DNS logging

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

{
  vpcs(where: { dnsPolicy_NONE: { NOT: { enableLogging_IN: ["true"] } } }) {
    ...AssetFragment
  }
}
Google Cloud Projects Without Asset Inventory

Connectors

Google Cloud

Covered asset types

Project

Expected check: eq []

{
  projects(
    where: { NOT: { enabledServices_INCLUDES: "cloudasset.googleapis.com" } }
  ) {
    ...AssetFragment
  }
}
Google Cloud Load Balancers without logging

Connectors

Google Cloud

Covered asset types

LoadBalancer

Expected check: eq []

{
  loadBalancers(
    where: { backendServices_ALL: { NOT: { logConfigEnabled: true } } }
  ) {
    ...AssetFragment
  }
}
The default network does not exist in a project

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{name:"default"}){...AssetFragment}
Legacy networks do not exist for a project

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{IPv4Range_NOT:"" gatewayIPv4_NOT:""}){...AssetFragment}
DNSSEC is enabled for Cloud DNS

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{dnsSecConfigState_NOT:"on"}){...AssetFragment}
RSASHA1 is not used for the key-signing key in Cloud DNS DNSSEC

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{hasDNSKeySpec_SOME:{keyType:"keySigning",algorithm_MATCHES:"(?i)rsasha1"}}){...AssetFragment}
RSASHA1 is not used for the zone-signing key in Cloud DNS DNSSEC

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{hasDNSKeySpec_SOME:{keyType:"zoneSigning",algorithm_MATCHES:"(?i)rsasha1"}}){...AssetFragment}
Security Groups with management ports not restricted from the internet

Connectors

Alibaba CloudAWSMicrosoft Azure

Covered asset types

SecurityGroup

Expected check: eq []

{
  securityGroups(
    where: {
      rules_SOME: {
        direction: "Inbound"
        action: "Allow"
        AND: [
          {
            OR: [
              { sources_INCLUDES: "cidr:0.0.0.0/0" }
              { sources_INCLUDES: "cidr:::/0" }
              { sources_INCLUDES: "tag:Internet" }
              { sources: [] }
            ]
          }
          { 
            OR: [
                { destFromPort_LTE: 22, destToPort_GTE: 22 }
                { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
              ]
          }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
Firewalls with management ports not restricted from the internet

Connectors

Google Cloud

Covered asset types

Firewall

Expected check: eq []

{
  firewalls(
    where: {
      rules_SOME: {
        direction: "Inbound"
        AND: [
          {
            OR: [
              { sources_INCLUDES: "cidr:0.0.0.0/0" }
              { sources_INCLUDES: "cidr:::/0" }
              { sources: [] }
            ]
          }
          {
            OR: [
              { destFromPort_LTE: 22, destToPort_GTE: 22 }
              { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
            ]
          }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
VPC Flow logs is enabled for every subnet in a VPC Network

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{hasSubnetwork_SOME:{enableFlowLogs:false}}){...AssetFragment}
No HTTPS or SSL proxy load balancers permit SSL policies with weak cipher suites

Connectors

Google Cloud

Covered asset types

LoadBalancer

Expected check: eq []

{
  loadBalancers(
    where: {OR: [
      {httpsProxies_SOME: {OR: [
        {sslPolicy: ""},
        {hasSSLPolicy: {OR: [
          {profile: "COMPATIBLE"},
          {AND: [{profile: "MODERN"}, {NOT: {minTlsVersion: "TLS_1_2"}}]},
          {AND: [
            {profile: "CUSTOM"}, 
            {OR: [
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_GCM_SHA256"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_GCM_SHA38"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_3DES_EDE_CBC_SHA"}
                ]
            }
          ]}
        ]}
        }
      ]}},
      {sslProxies_SOME: {OR: [
        {sslPolicy: ""},
        {hasSSLPolicy: {OR: [
          {profile: "COMPATIBLE"},
          {AND: [{profile: "MODERN"}, {NOT: {minTlsVersion: "TLS_1_2"}}]},
          {AND: [
            {profile: "CUSTOM"}, 
            {OR: [
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_GCM_SHA256"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_GCM_SHA38"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_3DES_EDE_CBC_SHA"}
                ]
            }
          ]}
        ]}
        }
      ]}},
    ]}){
    ...AssetFragment
  }
}
Instances are not configured to use the default service account

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where: {serviceAccountEmail_CONTAINS: "[email protected]"}) {...AssetFragment}
Instances are not configured to use the default service account with full access to all Cloud APIs

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

GCPVM1{...AssetFragment}
"Block Project-wide SSH keys" is enabled for VM instances

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where:{hasVMMetadataItem_SOME:{key:"block-project-ssh-keys" value:"false"}}){...AssetFragment}
Oslogin is enabled for a Project

Connectors

Google Cloud

Covered asset types

Project

Expected check: eq []

projects(where:{hasCommonInstanceMetadataItem_SOME:{key:"os-login",value:"false"}}){...AssetFragment}
'Enable connecting to serial ports' is not enabled for VM Instance

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where:{hasVMMetadataItem_SOME:{key:"serial-port-enable",value:"true"}}){...AssetFragment}
IP forwarding is not enabled on Instances

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where:{canIPForward:true}){...AssetFragment}
VM disks for critical VMs are encrypted with Customer-Supplied Encryption Keys (CSEK)

Connectors

Google Cloud

Covered asset types

Disk

Expected check: eq []

disks(where:{encryptedWithCustomerSuppliedKey: false }){...AssetFragment}
GCP VMs with security features disabled

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      OR: [
        { shieldedInstanceConfigEnableVtpm: false }
        { shieldedInstanceConfigEnableSecureBoot: false }
        { shieldedInstanceConfigEnableIntegrityMonitoring: false }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Compute instances do not have public IP addresses

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      networkInterfaces_SOME: { NOT: { accessConfigs_SOME: null } }
      NOT: { name_STARTS_WITH: "gke-" }
    }
  ) {
    ...AssetFragment
  }
}
App Engine Allowing Plain HTTP

Connectors

Google Cloud

Covered asset types

AppEngineService

Expected check: eq []

{
  appEngineServices(
    where: {
      serviceVersions_NONE: {
        urlHandlers_SOME: {
          urlRegex_IN: ["/.*", ".*"]
          securityLevel_IN: ["SECURE_ALWAYS"]
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Ensure That Compute Instances Have Confidential Computing Enabled

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(where: { cloudProvider: "gcp", NOT:{enableConfidentialCompute: true} }) {
    ...AssetFragment
  }
}
Cloud Storage buckets have uniform bucket-level access enabled

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

buckets(where:{iamConfigurationUniformBucketLevelAccessEnabled:false}){...AssetFragment}
Publicly Accessible AWS Buckets

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: "aws"
      publicAccessBlocked: false
      OR: [
        {
          hasBucketACLGrant_SOME: {
            OR: [
              { granteeURI: "http://acs.amazonaws.com/groups/global/AllUsers" }
              {
                granteeURI: "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
              }
            ]
            permission_IN: ["READ", "WRITE", "WRITE_ACP", "FULL_CONTROL"]
          }
        }
        {
          bucketPolicy: {
            statements_SOME: {
              effect: "Allow"
              OR: [
                { actions_INCLUDES: "s3:GetObject" }
                { actions_INCLUDES: "s3:ListObjects" }
                { actions_INCLUDES: "s3:ListObjectsV2" }
                { actions_INCLUDES: "s3:PutObject" }
                { actions_INCLUDES: "s3:PutObjectAcl" }
                { actions_INCLUDES: "s3:CreateMultipartUpload" }
                { actions_INCLUDES: "s3:UploadPart" }
                { actions_INCLUDES: "s3:DeleteObject" }
                { actions_INCLUDES: "s3:DeleteObjects" }
                { actions_INCLUDES: "s3:*" }
                { actions_INCLUDES: "*" }
              ]
              principals_INCLUDES: "AWS|*"
            }
          }
        }
      ]
    }
  ) {...AssetFragment}
}
Publicly Readable Azure Blob Containers

Connectors

Microsoft Azure

Covered asset types

BlobContainer

Expected check: eq []

{
  blobContainers(
    where: {
      cloudProvider: "azure"
      publicAccessBlocked: false
      publicAccess_IN: ["Blob", "Container"]
    }
  ) {...AssetFragment}
}
Publicly Accessible Google Cloud Buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: "gcp"
      publicAccessBlocked: false
        iamBindings_SOME: {
          OR: [
            { members_INCLUDES: "allUsers" }
            { members_INCLUDES: "allAuthenticatedUsers" }
          ]
          role: {
            OR: [
              { permissions_INCLUDES: "storage.objects.get" }
              { permissions_INCLUDES: "storage.objects.list" }
              { permissions_INCLUDES: "storage.objects.create" }
              { permissions_INCLUDES: "storage.objects.delete" }
              { permissions_INCLUDES: "storage.objects.update" }
              { permissions_INCLUDES: "storage.objects.*" }
              { permissions_INCLUDES: "storage.objects.setIamPolicy" }
              {
                permissions_INCLUDES: "storage.multipartUploads.create"
              }
              { permissions_INCLUDES: "storage.multipartUploads.*" }
            ]
          }
      }
    }
  ) {...AssetFragment}
}
Publicly Accessible Alibaba Buckets

Connectors

Alibaba Cloud

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: "alibaba"
      publicAccessBlocked: false
      OR: [
        { acl_IN: ["public-read", "public-read-write"] }
        {
          bucketPolicy: {
            statements_SOME: {
              effect: "Allow"
              OR: [
                { actions_INCLUDES: "oss:GetObject" }
                { actions_INCLUDES: "oss:PutObject" }
                { actions_INCLUDES: "oss:PutObjectAcl" }
                { actions_INCLUDES: "oss:ListObjects" }
                { actions_INCLUDES: "oss:GetObjectVersion" }
                { actions_INCLUDES: "oss:*" }
                { actions_INCLUDES: "*" }
              ]
              principals_INCLUDES: "*"
            }
          }
        }
      ]
    }
  ) {...AssetFragment}
}
Ensure 'skip_show_database' database flag for Cloud SQL MySQL instance is set to 'On'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
cloudSqlInstances(
   where: {
      engine: "mysql"
      cloudProvider: "gcp"
      OR: [
        { dbFlags_NONE: { name: "skip_show_database" } }
        { dbFlags_SOME: { name: "skip_show_database", value: "off" } }
      ]
    }
  ) {
     ...AssetFragment
  }}
The 'local_infile' database flag for a Cloud SQL Mysql instance is set to 'off'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "mysql" cloudProvider: "gcp" OR: [ { dbFlags_NONE: { name: "local_infile" } } { dbFlags_SOME: { name: "local_infile", value: "on" } } ] } ) { ...AssetFragment }}
Ensure 'log_error_verbosity' database flag for Cloud SQL PostgreSQL instance is set to 'DEFAULT' or stricter

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "postgresql"
      cloudProvider: "gcp"
      dbFlags_SOME: { name: "log_error_verbosity", value: "verbose" }
    }
  ) {
    ...AssetFragment
  }
}
The 'log_connections' database flag for Cloud SQL PostgreSQL instance is set to 'on'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "postgresql" cloudProvider: "gcp" OR: [ { dbFlags_NONE: { name: "log_connections" } } { dbFlags_SOME: { name: "log_connections", value: "off" } } ] } ) { ...AssetFragment }}
The 'log_disconnections' database flag for Cloud SQL PostgreSQL instance is set to 'on'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "postgresql" cloudProvider: "gcp" OR: [ { dbFlags_NONE: { name: "log_disconnections" } } { dbFlags_SOME: { name: "log_disconnections", value: "off" } } ] } ) { ...AssetFragment }}
Ensure 'log_statement' database flag for Cloud SQL PostgreSQL instance is set appropriately

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "postgresql"
      cloudProvider: "gcp"
      dbFlags_NONE: { name: "log_statement" }
    }
  ) {
     ...AssetFragment
  }
}
The 'log_min_messages' database flag for a Cloud SQL PostgreSQL is set

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "postgresql" cloudProvider: "gcp" dbFlags_SOME: { name: "log_min_messages" NOT: { value_IN: ["error", "log", "fatal", "panic"] } } } ) { ...AssetFragment }}
Ensure 'log_min_error_statement' database flag for Cloud SQL PostgreSQL instance is set to 'Error' or stricter

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "postgresql"
      cloudProvider: "gcp"
      dbFlags_SOME: { name: "log_min_error_statement", NOT: {value_IN: ["error", "log", "fatal", "panic"]} }
    }
  ) {
     ...AssetFragment
  }
}
The 'log_min_duration_statement' database flag for Cloud SQL PostgreSQL instance is set to '-1' (disabled)

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "postgresql" cloudProvider: "gcp" dbFlags_SOME: { name: "log_min_duration_statement", NOT: { value: "-1" } } } ) { ...AssetFragment }}
Ensure 'cloudsql.enable_pgaudit' database flag for each Cloud Sql Postgresql instance is set to 'on' for centralized logging

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "postgresql"
      cloudProvider: "gcp"
      OR: [{ dbFlags_NONE: { name: "cloudsql.enable_pgaudit" }}, {dbFlags_SOME: {name: "cloudsql.enable_pgaudit", value: "off"}}]
     
    }
  ) {
     ...AssetFragment
  }
}
Ensure Instance IP assignment is set to private

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      cloudProvider: "gcp"
      ipAddresses_SOME: { NOT: { type: "PRIVATE" } }
    }
  ) {
    ...AssetFragment
  }
}
Ensure 'external scripts enabled' database flag for Cloud SQL SQL Server instance is set to 'off'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "sqlserver"
      cloudProvider: "gcp"
      dbFlags_SOME: { name: "external scripts enabled",value: "on" }
    }
  ) {
     ...AssetFragment
  }
}
The 'cross db ownership chaining' database flag for Cloud SQL on the SQL Server instance is set to 'off'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "sqlserver" cloudProvider: "gcp" OR: [ { dbFlags_NONE: { name: "cross db ownership chaining" } } { dbFlags_SOME: { name: "cross db ownership chaining", value: "on" } } ] } ) { ...AssetFragment }}
Ensure 'user connections' database flag for Cloud Sql Sql Server instance is set to a non-limiting value

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      cloudProvider: "gcp"
      engine: "sqlserver"
      dbFlags_SOME: { name: "user connections" }
    }
  ) {
    ...AssetFragment
  }
}
Ensure 'user options' database flag for Cloud SQL SQL Server instance is not configured

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "sqlserver"
      cloudProvider: "gcp"
      dbFlags_SOME: { name: "user options" }
    }
  ) {
     ...AssetFragment
  }
}
Ensure 'remote access' database flag for Cloud SQL SQL Server instance is set to 'off'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "sqlserver"
      cloudProvider: "gcp"
      OR: [{ dbFlags_NONE: { name: "remote access" }}, {dbFlags_SOME: {name: "remote access", value: "on"}}]
     
    }
  ) {
     ...AssetFragment
  }
}
Ensure '3625 (trace flag)' database flag for all Cloud SQL Server instances is set to 'on'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      engine: "sqlserver"
      cloudProvider: "gcp"
      OR: [{ dbFlags_NONE: { name: "3625" }}, {dbFlags_SOME: {name: "3625", value: "off"}}]
     
    }
  ) {
     ...AssetFragment
  }
}
The 'contained database authentication' database flag for Cloud SQL on the SQL Server instance is set to 'off'

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances( where: { engine: "sqlserver" cloudProvider: "gcp" OR: [ { dbFlags_NONE: { name: "contained database authentication" } } { dbFlags_SOME: { name: "contained database authentication" value: "on" } } ] } ) { ...AssetFragment }}
Cloud SQL database instances require all incoming connections to use SSL

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

cloudSqlInstances(where:{settingsIPConfigurationRequireSsl:false}){...AssetFragment}
Google Cloud Cloud SQL

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      cloudProvider: "gcp"
      networkSettings_SOME: {
        authorizedNetworks_SOME: {
        OR: [{ cidrValue: "0.0.0.0/0" }, { cidrValue: "::/0" }]
      }
      }
    }
  ) {
    ...AssetFragment
  }
}
Cloud SQL database instances do not have public IPs

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{cloudSqlInstances(where:{instanceType:"CLOUD_SQL_INSTANCE",backendType:"SECOND_GEN",ipAddresses_SOME:{type:"PRIMARY"}}){...AssetFragment}}
Cloud SQL database instances are configured with automated backups

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

cloudSqlInstances(where:{settingsBackupConfigurationEnabled:false}){...AssetFragment}
BigQuery datasets are not anonymously or publicly accessible

Connectors

Google Cloud

Covered asset types

BigQueryTable

Expected check: eq []

bigQueryTables(where:{OR:[{policyDocument_CONTAINS:"AllUsers"},{policyDocument_CONTAINS:"allAuthenticatedUsers"}]}){...AssetFragment}
Cyscale Logo
Cyscale is an agentless cloud-native application protection platform (CNAPP) that automates the contextual analysis of cloud misconfigurations, vulnerabilities, access, and data, to provide an accurate and actionable assessment of risk.

Stay connected

Receive new blog posts and product updates from Cyscale

By clicking Subscribe, I agree to Cyscale’s Privacy Policy


© 2026 Cyscale Limited

LinkedIn icon
Twitter icon
Facebook icon
crunch base icon
angel icon