What is Event Threat Detection?
Event Threat Detection is a built-in service for the Security Command Center Premium tier that continuously monitors your organization or projects and identifies threats within your systems in near-real time. Event Threat Detection is regularly updated with new detectors to identify emerging threats at cloud scale.
How Event Threat Detection works
Event Threat Detection monitors the Cloud Logging stream for your organization or projects. If you activate Security Command Center Premium tier at the organization level, Event Threat Detection consumes logs for your projects as they are created and Event Threat Detection can monitor Google Workspace Logs . Cloud Logging contains log entries of API calls and other actions that create, read, or modify the configuration or metadata of your resources. Google Workspace logs track user sign-ins to your domain and provide a record of actions performed on your Google Workspace Admin Console.
Log entries contain status and event information that Event Threat Detection uses to quickly detect threats. Event Threat Detection applies detection logic and proprietary threat intelligence, including tripwire indicator matching, windowed profiling, advanced profiling, machine learning, and anomaly detection, to identify threats in near-real time.
When Event Threat Detection detects a threat, it writes a finding to Security Command Center. If you activate Security Command Center Premium tier at the organization level, Security Command Center can write findings to a Cloud Logging project. From Cloud Logging and Google Workspace logging, you can export findings to other systems with Pub/Sub and process them with Cloud Run functions.
If you activate Security Command Center Premium tier at the organization level, you can additionally use Google Security Operations to investigate some findings. Google SecOps is a Google Cloud service that lets you investigate threats and pivot through related entities in a unified timeline. For instructions on sending findings to Google SecOps, see Investigate findings in Google SecOps .
Your ability to view and edit findings and logs is determined by the Identity and Access Management (IAM) roles you are granted. For more information on Security Command Center IAM roles, see Access control .
Event Threat Detection rules
Rules define the type of threats that Event Threat Detection detects and the types of logs that must be enabled for detectors to work. Admin Activityaudit logs are always written; you can't configure or disable them.
Event Threat Detection includes the following default rules:
BACKUP_HOSTS_DELETE_HOST
BACKUP_EXPIRE_IMAGE
BACKUP_REMOVE_PLAN
BACKUP_EXPIRE_IMAGES_ALL
BACKUP_TEMPLATES_DELETE_TEMPLATE
BACKUP_TEMPLATES_DELETE_POLICY
BACKUP_PROFILES_DELETE_PROFILE
BACKUP_APPLIANCES_REMOVE_APPLIANCE
BACKUP_STORAGE_POOLS_DELETE
BACKUP_REDUCE_BACKUP_EXPIRATION
BACKUP_REDUCE_BACKUP_FREQUENCY
BACKUP_DELETE_VAULT
BACKUP_DELETE_VAULT_BACKUP
BACKUP_DELETE_BACKUP_PLAN_ASSOCIATION
BRUTE_FORCE_SSH
CLOUD_IDS_THREAT_ACTIVITY
Cloud IDS detected threat events.
Cloud IDS detects layer 7 attacks by analyzing mirrored packets and, when a threat event is detected, sends a threat-class finding to Security Command Center. Finding category names start with "Cloud IDS" followed by the Cloud IDS threat identifier.
The Cloud IDS integration with Event Threat Detection does not include Cloud IDS vulnerability detections. Findings are classified as Lowseverity by default.
To learn more about Cloud IDS detections, see Cloud IDS Logging information .
EXTERNAL_MEMBER_ADDED_TO_PRIVILEGED_GROUP
An external member was added to a privileged Google Group (a group granted sensitive roles or permissions). A finding is generated only if the group doesn't already contain other external members from the same organization as the newly added member. To learn more, see Unsafe Google Group changes .
This finding isn't available for project-level activations. Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles associated with the group change. For more information, see Sensitive IAM roles and permissions .
PRIVILEGED_GROUP_OPENED_TO_PUBLIC
A privileged Google Group (a group granted sensitive roles or permissions) was changed to be accessible to the general public. To learn more, see Unsafe Google Group changes .
This finding isn't available for project-level activations. Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles associated with the group change. For more information, see Sensitive IAM roles and permissions .
SENSITIVE_ROLE_TO_GROUP_WITH_EXTERNAL_MEMBER
Sensitive roles were granted to a Google Group with external members. To learn more, see Unsafe Google Group changes .
Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles associated with the group change. For more information, see Sensitive IAM roles and permissions .
BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_CREATE
BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_UPDATE
GCS_BUCKET_IP_FILTERING_MODIFIED
DEFENSE_EVASION_MODIFY_VPC_SERVICE_CONTROL
An existing VPC Service Controls perimeter was changed that would lead to a reduction in the protection offered by that perimeter.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
PROJECT_HTTP_POLICY_BLOCK_DISABLED
GKE_CONTROL_PLANE_CAN_GET_SENSITIVE_OBJECT
A potentially malicious actor attempted to determine what sensitive objects in
GKE they can query for, by using the kubectl auth can-i get
command. Specifically, the rule detects whether the actor checked for API access on
the following objects:
-
*
(all) -
cluster-admin
ClusterRole
-
Secret
Findings are classified as Lowseverity by default.
SERVICE_ACCOUNT_SELF_INVESTIGATION
An IAM service account credential was used to investigate the roles and permissions associated with that same service account.
Sensitive roles
Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles granted. For more information, see Sensitive IAM roles and permissions .
ANOMALOUS_ACCESS
DATA_EXFILTRATION_BIG_QUERY
Detects the following scenarios:
-
Resources owned by the protected organization were saved outside of the organization, including copy or transfer operations.
This scenario is indicated by a subrule of
exfil_to_external_table
and Highseverity. -
Attempts were made to access BigQuery resources that are protected by VPC Service Controls.
This scenario is indicated by a subrule of
vpc_perimeter_violation
and Lowseverity.
DATA_EXFILTRATION_BIG_QUERY_EXTRACTION
Detects the following scenarios:
- A BigQuery resource owned by the protected organization was saved, through extraction operations, to a Cloud Storage bucket outside the organization.
- A BigQuery resource owned by the protected organization was saved, through extraction operations, to a publicly accessible Cloud Storage bucket owned by that organization.
For project-level activations of the Security Command Center Premium tier, this finding is available only if the Standard tier is enabled in the parent organization.. Findings are classified as Lowseverity by default.
DATA_EXFILTRATION_BIG_QUERY_TO_GOOGLE_DRIVE
DATA_EXFILTRATION_BIG_QUERY_TO_PUBLIC_RESOURCE
A BigQuery resource was saved to a public resource owned by your organization. Findings are classified as Mediumseverity by default.
CLOUDSQL_EXFIL_EXPORT_TO_EXTERNAL_GCS
CLOUDSQL_EXFIL_EXPORT_TO_PUBLIC_GCS
Detects the following scenarios:
- Live instance data was exported to a Cloud Storage bucket outside of the organization.
- Live instance data was exported to a Cloud Storage bucket that is owned by the organization and is publicly accessible.
For project-level activations of the Security Command Center Premium tier, this finding is available only if the Standard tier is enabled in the parent organization.. Findings are classified as Highseverity by default.
CLOUDSQL_EXFIL_RESTORE_BACKUP_TO_EXTERNAL_INSTANCE
PostgreSQL admin activity logs
SQL Server admin activity logs
The backup of a Cloud SQL instance was restored to an instance outside of the organization. Findings are classified as Highseverity by default.
CLOUDSQL_EXFIL_USER_GRANTED_ALL_PERMISSIONS
Note : You must enable the pgAudit extension to use this rule.
CLOUDSQL_SUPERUSER_WRITES_TO_USER_TABLES
Cloud SQL for MySQL data access logs
Note : You must enable the pgAudit extension for PostgreSQL or database auditing for MySQL to use this rule.
postgres
for PostgreSQL
servers or root
for MySQL users) wrote to non-system tables. Findings are classified as Lowseverity by default.ALLOYDB_USER_GRANTED_ALL_PERMISSIONS
Note : You must enable the pgAudit extension to use this rule.
ALLOYDB_SUPERUSER_WRITES_TO_USER_TABLES
Note : You must enable the pgAudit extension to use this rule.
postgres
) wrote
to non-system tables. Findings are classified as Lowseverity by default.DORMANT_SERVICE_ACCOUNT_USED_IN_ACTION
DORMANT_SERVICE_ACCOUNT_ADDED_IN_IAM_ROLE
A dormant user-managed service account was granted one or more sensitive IAM roles. In this context, a service account is considered dormant if it has been inactive for more than 180 days.
Sensitive roles
Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles granted. Findings are classified as Mediumseverity by default. For more information, see Sensitive IAM roles and permissions .
DORMANT_SERVICE_ACCOUNT_IMPERSONATION_ROLE_GRANTED
DORMANT_SERVICE_ACCOUNT_KEY_CREATED
LEAKED_SA_KEY_USED
EXCESSIVE_FAILED_ATTEMPT
2-step verification was disabled for the organization.
This finding isn't available for project-level activations. Findings are classified as Mediumseverity by default.
A user disabled 2-step verification.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
A user's account was suspended due to suspicious activity.
This finding isn't available for project-level activations. Findings are classified as Mediumseverity by default.
A user's account was disabled because a password leak was detected.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
Government-backed attackers might have tried to compromise a user account or computer.
This finding isn't available for project-level activations. Findings are classified as Highseverity by default.
Cloud HTTP Load Balancer
Note : You must enable external Application Load Balancer logging to use this rule.
Java Naming and Directory Interface (JNDI) lookups within headers or URL parameters were detected. These lookups might indicate attempts at Log4Shell exploitation. These findings have low severity, because they only indicate a detection or exploit attempt, not a vulnerability or a compromise.
This rule is always on. Findings are classified as Lowseverity by default.
A suspicious login to a user's account was detected and blocked.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
LOG4J_BAD_DOMAIN
LOG4J_BAD_IP
MALWARE_BAD_DOMAIN
MALWARE_BAD_IP
CRYPTOMINING_POOL_DOMAIN
CRYPTOMINING_POOL_IP
GCE_ADMIN_ADD_SSH_KEY
GCE_ADMIN_ADD_STARTUP_SCRIPT
IAM_ANOMALOUS_GRANT
This finding includes subrules that provide more specific information about each instance of this finding.
The following list shows all possible subrules:
-
external_service_account_added_to_policy
,external_member_added_to_policy
: Privileges were granted to IAM users and service accounts that are not members of your organization or, if Security Command Center is activated at the project level only, your project.Note : If Security Command Center is activated at the organization level at any tier, then this detector uses an organization's existing IAM policies as context. If Security Command Center activation is only at the project level, then the detector uses only the project's IAM policies as context.
If a sensitive IAM grant to an external member occurs, and there are less than three existing IAM policies that are similar to it, this detector generates a finding.
Sensitive roles
Findings are classified as Highor Mediumseverity, depending on the sensitivity of the roles granted. Findings are classified as Highseverity by default. For more information, see Sensitive IAM roles and permissions .
-
external_member_invited_to_policy
: An external member was invited as the owner of the project through theInsertProjectOwnershipInvite
API. -
custom_role_given_sensitive_permissions
: ThesetIAMPolicy
permission was added to a custom role. -
service_account_granted_sensitive_role_to_member
: Privileged roles were granted to members through a service account. This subrule is triggered by a subset of sensitive roles that include only basic IAM roles and certain data storage roles. For more information, see Sensitive IAM roles and permissions . -
policy_modified_by_default_compute_service_account
: A default Compute Engine service account was used to modify project IAM settings.
UNMANAGED_ACCOUNT_ADDED_IN_IAM_ROLE
ANOMALOUS_BEHAVIOR_NEW_API_METHOD
IAM_ANOMALOUS_BEHAVIOR_IP_GEOLOCATION
IAM user and service accounts accessed Google Cloud from anomalous locations, based on the geolocation of the requesting IP addresses.
This finding isn't available for project-level activations and they are classified as Lowseverity by default.
IAM_ANOMALOUS_BEHAVIOR_USER_AGENT
IAM service accounts accessed Google Cloud from anomalous or suspicious user agents.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
The Enable SSO (single sign-on) setting on the admin account was disabled.
This finding isn't available for project-level activations. Findings are classified as Highseverity by default.
The SSO settings for the admin account were changed.
This finding isn't available for project-level activations. Findings are classified as Highseverity by default.
ANOMALOUS_SA_DELEGATION_IMPERSONATION_OF_SA_ADMIN_ACTIVITY
ANOMALOUS_SA_DELEGATION_MULTISTEP_ADMIN_ACTIVITY
ANOMALOUS_SA_DELEGATION_MULTISTEP_DATA_ACCESS
ANOMALOUS_SA_DELEGATION_IMPERSONATOR_ADMIN_ACTIVITY
ANOMALOUS_SA_DELEGATION_IMPERSONATOR_DATA_ACCESS
GKE_CONTROL_PLANE_EDIT_SENSITIVE_RBAC_OBJECT
ClusterRole
, RoleBinding
, or ClusterRoleBinding
role-based access control (RBAC) object of the sensitive cluster-admin
role by using a PUT
or PATCH
request. Findings are classified as Lowseverity by default.GKE_CONTROL_PLANE_CSR_FOR_MASTER_CERT
cluster-admin
access. Findings are classified as Highseverity by default.GKE_CONTROL_PLANE_CREATE_SENSITIVE_BINDING
RoleBinding
or ClusterRoleBinding
object for the cluster-admin
role. Findings are classified as Lowseverity by default.GKE_CONTROL_PLANE_GET_CSR_WITH_COMPROMISED_BOOTSTRAP_CREDENTIALS
kubectl
command, using compromised bootstrap credentials. Findings are classified as Highseverity by default.GKE_CONTROL_PLANE_LAUNCH_PRIVILEGED_CONTAINER
A potentially malicious actor created a Pod that contains privileged containers or containers with privilege escalation capabilities.
A privileged container has the privileged
field set to true
.
A container with privilege escalation capabilities has the allowPrivilegeEscalation
field set to true
. For more
information, see the SecurityContext v1 core
API reference in the Kubernetes documentation. Findings are classified as Lowseverity by default.
SERVICE_ACCOUNT_KEY_CREATION
GLOBAL_SHUTDOWN_SCRIPT_ADDED
GLOBAL_STARTUP_SCRIPT_ADDED
ORG_LEVEL_SERVICE_ACCOUNT_TOKEN_CREATOR_ROLE_ADDED
PROJECT_LEVEL_SERVICE_ACCOUNT_TOKEN_CREATOR_ROLE_ADDED
OS_PATCH_EXECUTION_FROM_SERVICE_ACCOUNT
MODIFY_BOOT_DISK_ATTACH_TO_INSTANCE
SECRETS_ACCESSED_IN_KUBERNETES_NAMESPACE
OFFENSIVE_SECURITY_DISTRO_ACTIVITY
SERVICE_ACCOUNT_EDITOR_OWNER
INFORMATION_GATHERING_TOOL_USED
SUSPICIOUS_TOKEN_GENERATION_IMPLICIT_DELEGATION
iam.serviceAccounts.implicitDelegation
permission was
misused to generate access tokens from a more privileged service account. Findings are classified as Lowseverity by default.SUSPICIOUS_TOKEN_GENERATION_SIGN_JWT
serviceAccounts.signJwt
method to generate an access token for another service account. Findings are classified as Lowseverity by default.SUSPICIOUS_TOKEN_GENERATION_CROSS_PROJECT_OPENID
The iam.serviceAccounts.getOpenIdToken
IAM permission was used across projects.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
SUSPICIOUS_TOKEN_GENERATION_CROSS_PROJECT_ACCESS_TOKEN
The iam.serviceAccounts.getAccessToken
IAM permission was used across projects.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
SUSPICIOUS_CROSS_PROJECT_PERMISSION_DATAFUSION
The datafusion.instances.create
IAM permission was used across projects.
This finding isn't available for project-level activations. Findings are classified as Lowseverity by default.
DNS_TUNNELING_IODINE_HANDSHAKE
VPC_ROUTE_MASQUERADE
BILLING_DISABLED_SINGLE_PROJECT
BILLING_DISABLED_MULTIPLE_PROJECTS
VPC_FIREWALL_HIGH_PRIORITY_BLOCK
VPC_FIREWALL_MASS_RULE_DELETION
VPC firewall rules were mass deleted by non-service accounts.
This rule is temporarily unavailable. To monitor updates to your firewall rules, use the Cloud audit logs . Findings are classified as Lowseverity by default.
SERVICE_API_DISABLED
MIG_AUTOSCALING_SET_TO_MAX
UNAUTHORIZED_SERVICE_ACCOUNT_API_CALL
ANONYMOUS_SESSIONS_GRANTED_CLUSTER_ADMIN
ClusterRoleBinding
object was created, adding the root-cluster-admin-binding
behavior to anonymous users. Findings are classified as Lowseverity by default.AI_IAM_ANOMALOUS_BEHAVIOR_IP_GEOLOCATION
IAM user and service accounts accessed Google Cloud AI services from anomalous locations, based on the geolocation of the requesting IP addresses.
This finding isn't available for project-level activations and they are classified as Lowseverity by default.
AI_ANOMALOUS_SA_DELEGATION_MULTISTEP_ADMIN_ACTIVITY
AI_ANOMALOUS_SA_DELEGATION_MULTISTEP_DATA_ACCESS
AI_ANOMALOUS_SA_DELEGATION_IMPERSONATOR_ADMIN_ACTIVITY
AI_ANOMALOUS_SA_DELEGATION_IMPERSONATOR_DATA_ACCESS
AI_ANOMALOUS_SA_DELEGATION_IMPERSONATION_OF_SA_ADMIN_ACTIVITY
AI_ANOMALOUS_BEHAVIOR_NEW_API_METHOD
AI_DORMANT_SERVICE_ACCOUNT_USED_IN_ACTION
GKE_RESOURCE_CREATED_ANONYMOUSLY_FROM_INTERNET
GKE_RESOURCE_MODIFIED_ANONYMOUSLY_FROM_INTERNET
GKE_ANONYMOUS_USERS_GRANTED_ACCESS
Someone created an RBAC binding that references one of the following users or groups:
-
system:anonymous
-
system:unauthenticated
-
system:authenticated
These users and groups are effectively anonymous and should be avoided when creating role bindings or cluster role bindings to any RBAC roles. Review the binding to ensure that it is necessary. If the binding isn't necessary, remove it. Findings are classified as Mediumseverity by default.
GKE_SUSPICIOUS_EXEC_ATTACH
exec
or attach
commands to get a shell or
execute a command on a container running in the kube-system
namespace.
These methods are sometimes used for legitimate debugging purposes. However, the kube-system
namespace is intended for system objects created by Kubernetes,
and unexpected command execution or shell creation should be reviewed. Findings are classified as Mediumseverity by default.GKE_SENSITIVE_HOSTPATH
hostPath
volume mount to a
sensitive path on the host node's file system. Access to these paths on the host
filesystem can be used to access privileged or sensitive information on the node and for
container escapes. If possible, don't allow any hostPath
volumes in your
cluster. Findings are classified as Lowseverity by default.GKE_SHAREPROCESSNAMESPACE_POD
shareProcessNamespace
option set to true
, allowing all containers to share the same Linux process namespace.
This could allow an untrusted or compromised container to escalate privileges by
accessing and controlling environment variables, memory, and other sensitive data from
processes running in other containers. Findings are classified as Lowseverity by default.GKE_CLUSTERROLE_PRIVILEGED_VERBS
ClusterRole
that contains the bind
, escalate
, or impersonate
verbs. A subject that's bound to a
role with these verbs can impersonate other users with higher privileges, bind to
additional Roles
or ClusterRoles
that contain additional
permissions, or modify their own ClusterRole permissions. This might lead to those
subjects gaining cluster-admin privileges. Findings are classified as Lowseverity by default.GKE_CRB_CLUSTERROLE_AGGREGATION_CONTROLLER
ClusterRoleBinding
that references the default system:controller:clusterrole-aggregation-controller
ClusterRole
. This default ClusterRole
has the escalate
verb, which allows subjects to modify the privileges of their own
roles, allowing for privilege escalation. Findings are classified as Lowseverity by default.GKE_MANUALLY_DELETED_CSR
GKE_APPROVE_CSR_FORBIDDEN
GKE_CSR_APPROVED
GKE_REVERSE_SHELL_POD
GKE_POD_MASQUERADING
GKE_SUSPICIOUS_EXPLOIT_POD
GKE_SERVICE_ACCOUNT_CREATION_SENSITIVE_NAMESPACE
kube-system
and kube-public
namespaces are critical for
GKE cluster operations, and unauthorized service accounts could
compromise cluster stability and security. Findings are classified as Lowseverity by default.GKE_SUSPICIOUS_CRYPTOMINING_POD
GKE_SENSITIVE_NAMESPACE_WORKLOAD_TRIGGERED
kube-system
or kube-public
namespaces. These namespaces
are critical for GKE cluster operations, and unauthorized workloads could
compromise cluster stability or security. Findings are classified as Lowseverity by default.GKE_EXCESSIVELY_CAPABLE_CONTAINER_CREATED
-
CAP_SYS_MODULE
-
CAP_SYS_RAWIO
-
CAP_SYS_PTRACE
-
CAP_SYS_BOOT
-
CAP_DAC_READ_SEARCH
-
CAP_NET_ADMIN
-
CAP_BPF
GKE_WEBHOOK_CONFIG_CREATED
GKE_STATIC_POD_CREATED
GKE_TOR_PROXY_IP_REQUEST
GKE_NODEPORT_SERVICE_CREATED
GKE_KUBE_DNS_MODIFICATION
CLOUD_RUN_JOBS_CRYPTOMINING_COMMANDS
CLOUD_RUN_CRYPTOMINING_DOCKER_IMAGES
CLOUD_RUN_SERVICES_SET_IAM_POLICY
CLOUD_DB_LOGIN_SUCCEEDED_ANON_IP
Cloud SQL for PostgreSQL data access logs
Cloud SQL for MySQL data access logs
Note : You must enable IP logging in PostgreSQL to use this rule for AlloyDB and Postgres.
CLOUD_DB_LOGIN_FAILED_ANON_IP
Cloud SQL for PostgreSQL data access logs
Cloud SQL for MySQL data access logs
Note : You must enable IP logging in PostgreSQL to use this rule for AlloyDB and Postgres.
Custom modules for Event Threat Detection
In addition to built-in detection rules, Event Threat Detection provides module templates that you can use to create custom detection rules. For more information, see Overview of custom modules for Event Threat Detection .
To create detection rules for which no custom module templates are available, you can export your log data to BigQuery , and then run unique or recurring SQL queries that capture your threat models.
Unsafe Google Group changes
This section explains how Event Threat Detection uses Google Workspace logs, Cloud Audit Logs, and IAM policies to detect unsafe Google Groups changes. Detecting Google Groups changes is only supported when you activate Security Command Center at the organization level.
Google Cloud customers can use Google groups to manage roles and permissions for members in their organizations, or apply access policies to collections of users. Instead of granting roles directly to members, administrators can grant roles and permissions to Google Groups, and then add members to specific groups. Group members inherit all of a group's roles and permissions, which lets members access specific resources and services.
While Google Groups are a convenient way to manage access control at scale, they can pose a risk if external users from outside your organization or domain are added to privileged groups—groups that are granted sensitive roles or permissions . Sensitive roles control access to security and network settings, logs, and personally identifiable information (PII), and are not recommended for external group members.
In large organizations, administrators might not be aware when external members are added to privileged groups. Cloud Audit Logs record role grants to groups, but those log events don't contain information on group members, which can obscure the potential impact of some group changes.
If you share your Google Workspace logs with Google Cloud, Event Threat Detection monitors your logging streams for new members added to your organization's Google Groups. Because the logs are at the organization level, Event Threat Detection can scan Google Workspace logs only when you activate Security Command Center at the organization level. Event Threat Detection can't scan these logs when you activate Security Command Center at the project level.
Event Threat Detection identifies external group members and, using Cloud Audit Logs, reviews each affected group's IAM roles to check whether the groups are granted sensitive roles. That information is used to detect the following unsafe changes for privileged Google Groups:
- External group members added to privileged groups
- Sensitive roles or permissions granted to groups with external group members
- Privileged groups that are changed to allow anyone in the general public to join
Event Threat Detection writes findings to Security Command Center. Findings contain the email addresses of newly added external members, internal group members that initiate events, group names, and the sensitive roles associated with groups. You can use the information to remove external members from groups or revoke sensitive roles granted to groups.
For more information on Event Threat Detection findings, see Event Threat Detection rules .
Sensitive IAM roles and permissions
This section explains how Event Threat Detection defines sensitive IAM roles. Detections like IAM Anomalous Grant and Unsafe Google Group changes generate findings only if changes involve high- or medium-sensitivity roles. The sensitivity of roles impacts the severity rating assigned to findings.
- High-sensitivity roles control critical services in organizations, including billing, firewall settings, and logging. Findings that match these roles are classified as Highseverity.
- Medium-sensitivity roles
have editing permissions
that let principals make changes to Google Cloud resources; and viewing
and executing permissions on data storage services that often hold sensitive
data. The severity assigned to findings depends on the resource:
- If medium-sensitivity roles are granted at the organization level, findings are classified as Highseverity.
- If medium-sensitivity roles are granted at lower levels in your resource hierarchy (folders, projects, and buckets, among others), findings are classified as Mediumseverity.
Granting these sensitive roles is considered dangerous if the grantee is an External Member or an abnormal identity, like a principal that has been inactive for a long time.
Granting sensitive roles to external members creates a potential threat because they can be abused for account compromise and data exfiltration.
Finding categories that use these sensitive roles include:
- Persistence: IAM Anomalous Grant
- Subrule:
external_service_account_added_to_policy
- Subrule:
external_member_added_to_policy
- Subrule:
- Privilege Escalation: Sensitive Role Granted To Hybrid Group
- Privilege Escalation: Dormant Service Account Granted Sensitive Role
Finding categories that use a subset of the sensitive roles include:
- Persistence: IAM Anomalous Grant
- Subrule:
service_account_granted_sensitive_role_to_member
- Subrule:
The service_account_granted_sensitive_role_to_member
subrule targets both
external and internal members generally and therefore uses only a subset of
sensitive roles, as explained in Event Threat Detection rules
.
roles/owner
roles/editor
roles/cloudkms.*
roles/cloudsecurityscanner.*
roles/dlp.*
roles/iam.*
roles/secretmanager.*
roles/securitycenter.*
roles/errorreporting.*
roles/logging.*
roles/stackdriver.*
roles/billing.*
roles/healthcare.*
roles/essentialcontacts.*
roles/dns.*
roles/domains.*
roles/networkconnectivity.*
roles/networkmanagement.*
roles/privateca.*
roles/cloudasset.*
roles/servicedirectory.*
roles/servicemanagement.*
roles/servicenetworking.*
roles/serviceusage.*
roles/compute.admin
roles/compute.instanceAdmin
roles/compute.instanceAdmin.v1
roles/compute.loadBalancerAdmin
roles/compute.networkAdmin
roles/compute.orgFirewallPolicyAdmin
roles/compute.orgFirewallPolicyUser
roles/compute.orgSecurityPolicyAdmin
roles/compute.orgSecurityPolicyUser
roles/compute.orgSecurityResourceAdmin
roles/compute.osAdminLogin
roles/compute.publicIpAdmin
roles/compute.securityAdmin
roles/compute.storageAdmin
roles/compute.xpnAdmin
Examples:
roles/storage.objectAdmin
roles/file.editor
roles/source.writer
roles/container.developer
Role names usually end with titles like Admin , Owner , Editor , or Writer .
Expand the node in the last row of the table to see All medium-sensitivity roles
Examples:
roles/cloudsql.viewer
roles/cloudsql.client
roles/bigquery.dataViewer
roles/bigquery.user
roles/spanner.databaseReader
roles/spanner.databaseUser
-
roles/accessapproval.approver
-
roles/accessapproval.configEditor
-
roles/accesscontextmanager.gcpAccessAdmin
-
roles/accesscontextmanager.policyAdmin
-
roles/accesscontextmanager.policyEditor
-
roles/actions.Admin
-
roles/ml.admin
-
roles/ml.developer
-
roles/ml.jobOwner
-
roles/ml.modelOwner
-
roles/ml.modelUser
-
roles/apigateway.admin
-
roles/appengine.appAdmin
-
roles/appengine.appCreator
-
roles/appengine.serviceAdmin
-
roles/automl.admin
-
roles/automl.editor
-
roles/bigquery.admin
-
roles/bigquery.dataEditor
-
roles/bigquery.dataOwner
-
roles/bigquery.dataViewer
-
roles/bigquery.resourceAdmin
-
roles/bigquery.resourceEditor
-
roles/bigquery.resourceViewer
-
roles/bigquery.user
-
roles/binaryauthorization.attestorsAdmin
-
roles/binaryauthorization.attestorsEditor
-
roles/binaryauthorization.policyAdmin
-
roles/binaryauthorization.policyEditor
-
roles/bigtable.admin
-
roles/bigtable.reader
-
roles/bigtable.user
-
roles/cloudbuild.builds.builder
-
roles/cloudbuild.builds.editor
-
roles/deploymentmanager.editor
-
roles/deploymentmanager.typeEditor
-
roles/endpoints.portalAdmin
Beta
-
roles/cloudfunctions.admin
-
roles/cloudfunctions.developer
-
roles/cloudfunctions.invoker
-
roles/cloudiot.admin
-
roles/cloudiot.deviceController
-
roles/cloudiot.editor
-
roles/cloudiot.provisioner
-
roles/genomics.admin
-
roles/genomics.admin
-
roles/lifesciences.admin
-
roles/lifesciences.editor
-
roles/monitoring.admin
-
roles/monitoring.alertPolicyEditor
-
roles/monitoring.dashboardEditor
-
roles/monitoring.editor
-
roles/monitoring.metricWriter
-
roles/monitoring.notificationChannelEditor
-
roles/monitoring.servicesEditor
-
roles/monitoring.uptimeCheckConfigEditor
-
roles/run.admin
-
roles/run.developer
-
roles/cloudscheduler.admin
-
roles/source.admin
-
roles/source.writer
-
roles/spanner.admin
-
roles/spanner.backupAdmin
-
roles/spanner.backupWriter
-
roles/spanner.databaseAdmin
-
roles/spanner.restoreAdmin
-
roles/spanner.databaseReader
-
roles/spanner.databaseUser
-
roles/storage.admin
-
roles/storage.hmacKeyAdmin
-
roles/storage.objectAdmin
-
roles/storage.objectCreator
-
roles/storage.objectViewer
-
roles/storage.legacyBucketOwner
-
roles/storage.legacyBucketWriter
-
roles/storage.legacyBucketReader
-
roles/storage.legacyObjectOwner
-
roles/storage.legacyObjectReader
-
roles/cloudsql.admin
-
roles/cloudsql.editor
-
roles/cloudsql.client
-
roles/cloudsql.instanceUser
-
roles/cloudsql.viewer
-
roles/cloudtasks.admin
-
roles/cloudtasks.enqueuer
-
roles/cloudtasks.queueAdmin
-
roles/cloudtasks.taskDeleter
-
tpu.admin
-
roles/cloudtrace.admin
-
roles/cloudtrace.agent
-
roles/compute.imageUser
-
roles/compute.osLoginExternalUser
-
roles/osconfig.guestPolicyAdmin
-
roles/osconfig.guestPolicyEditor
-
roles/osconfig.osPolicyAssignmentAdmin
-
roles/osconfig.osPolicyAssignmentEditor
-
roles/osconfig.patchDeploymentAdmin
-
roles/containeranalysis.admin
-
roles/containeranalysis.notes.attacher
-
roles/containeranalysis.notes.editor
-
roles/containeranalysis.occurrences.editor
-
roles/datacatalog.admin
-
roles/datacatalog.categoryAdmin
-
roles/datacatalog.entryGroupCreator
-
roles/datacatalog.entryGroupOwner
-
roles/datacatalog.entryOwner
-
roles/dataflow.admin
-
roles/dataflow.developer
-
roles/dataproc.admin
-
roles/dataproc.editor
-
roles/metastore.admin
-
roles/metastore.editor
-
roles/datastore.importExportAdmin
-
roles/datastore.indexAdmin
-
roles/datastore.owner
-
roles/datastore.user
-
roles/eventarc.admin
-
roles/eventarc.developer
-
roles/eventarc.eventReceiver
-
roles/file.editor
-
roles/firebase.admin
-
roles/firebase.analyticsAdmin
-
roles/firebase.developAdmin
-
roles/firebase.growthAdmin
-
roles/firebase.qualityAdmin
-
roles/firebaseabt.admin
-
roles/firebaseappcheck.admin
-
roles/firebaseappdistro.admin
-
roles/firebaseauth.admin
-
roles/firebasecrashlytics.admin
-
roles/firebasedatabase.admin
-
roles/firebasedynamiclinks.admin
-
roles/firebasehosting.admin
-
roles/firebaseinappmessaging.admin
-
roles/firebaseml.admin
-
roles/firebasenotifications.admin
-
roles/firebaseperformance.admin
-
roles/firebasepredictions.admin
-
roles/firebaserules.admin
-
roles/firebasestorage.admin
-
roles/cloudconfig.admin
-
roles/cloudtestservice.testAdmin
-
roles/gameservices.admin
-
vmwareengine.vmwareengineAdmin
-
roles/container.admin
-
roles/container.clusterAdmin
-
roles/container.developer
-
roles/gkehub.admin
-
roles/gkehub.gatewayAdmin
-
roles/gkehub.connect
-
roles/gsuiteaddons.developer
-
roles/iap.admin
-
roles/iap.settingsAdmin
Managed Service for Microsoft Active Directory
-
roles/managedidentities.admin
-
roles/managedidentities.domainAdmin
-
roles/managedidentities.viewer
-
roles/redis.admin
-
roles/redis.editor
-
roles/ondemandscanning.admin
-
roles/opsconfigmonitoring.resourceMetadata.writer
-
roles/axt.admin
-
roles/orgpolicy.policyAdmin
-
roles/autoscaling.metricsWriter
-
roles/autoscaling.sitesAdmin
-
roles/autoscaling.stateWriter
-
roles/chroniclesm.admin
-
roles/dataprocessing.admin
-
roles/earlyaccesscenter.admin
-
roles/firebasecrash.symbolMappingsAdmin
-
roles/identityplatform.admin
-
roles/identitytoolkit.admin
-
roles/oauthconfig.editor
-
roles/retail.admin
-
roles/retail.editor
-
roles/runtimeconfig.admin
-
roles/proximitybeacon.attachmentEditor
-
roles/proximitybeacon.beaconEditor
-
roles/pubsub.admin
-
roles/pubsub.editor
-
roles/pubsublite.admin
-
roles/pubsublite.editor
-
roles/pubsublite.publisher
-
roles/recaptchaenterprise.admin
-
roles/recaptchaenterprise.agent
-
roles/automlrecommendations.admin
-
roles/automlrecommendations.editor
-
roles/recommender.billingAccountCudAdmin
-
roles/recommender.cloudAssetInsightsAdmin
-
roles/recommender.cloudsqlAdmin
-
roles/recommender.computeAdmin
-
roles/recommender.firewallAdmin
-
roles/recommender.iamAdmin
-
roles/recommender.productSuggestionAdmin
-
roles/recommender.projectCudAdmin
-
roles/resourcemanager.folderAdmin
-
roles/resourcemanager.folderCreator
-
roles/resourcemanager.folderEditor
-
roles/resourcemanager.folderIamAdmin
-
roles/resourcemanager.folderMover
-
roles/resourcemanager.lienModifier
-
roles/resourcemanager.organizationAdmin
-
roles/resourcemanager.projectCreator
-
roles/resourcemanager.projectDeleter
-
roles/resourcemanager.projectIamAdmin
-
roles/resourcemanager.projectMover
-
roles/resourcemanager.tagAdmin
-
roles/resourcesettings.admin
-
roles/vpcaccess.admin
-
roles/serviceconsumermanagement.tenancyUnitsAdmin
-
roles/storagetransfer.admin
-
roles/storagetransfer.user
-
roles/aiplatform.admin
-
roles/aiplatform.featurestoreAdmin
-
roles/aiplatform.migrator
-
roles/aiplatform.user
Vertex AI Workbench user-managed notebooks
-
roles/notebooks.admin
-
roles/notebooks.legacyAdmin
-
roles/workflows.admin
-
roles/workflows.editor
Log types and activation requirements
This section lists the logs that Event Threat Detection uses, along with the threats that Event Threat Detection looks for in each log, and what, if anything, you need to do to turn on each log.
You need to turn a log on for Event Threat Detection only if all of the following are true:
- You are using the product or service that writes to the log.
- You need to protect the product or service against the threats that Event Threat Detection detects in the log.
- The log is a data access audit log or other log that is off by default.
Certain threats can be detected in multiple logs. If Event Threat Detection can detect a threat in a log that is already turned on, you don't need to turn on another log to detect that same threat.
If a log isn't listed in this section, Event Threat Detection does not scan it, even if it is turned on. For more information, see Potentially redundant log scans .
As described in the following table , some log types are only available at the organization level. If you activate Security Command Center at the project level, Event Threat Detection doesn't scan these logs and doesn't produce any findings.
Foundational log sources
Event Threat Detection uses foundational data sources to detect potentially malicious activities in your network.
-
If you enable Event Threat Detection without VPC Flow Logs, Event Threat Detection immediately starts analyzing an independent, duplicate, and internal stream of VPC Flow Logs. To further investigate an existing Event Threat Detection finding, you need to enable VPC Flow Logs and manually navigate to Logs Explorer and Flow Analyzer. If you enable VPC Flow Logs at a later date, only future findings will contain the relevant links for further investigation.
-
If you enable Event Threat Detection with VPC Flow Logs, Event Threat Detection immediately starts analyzing the VPC Flow Logs in your deployment and provides links to Logs Explorer and Flow Analyzer to help you investigate further.
Logs for network detection of malware
Event Threat Detection can provide network detection of malware by scanning any one of the following logs:
- Cloud DNS logging
- Cloud NAT logging
- Firewall Rules Logging
- VPC Flow Logs
You don't need to enable more than one of Cloud NAT logging, Firewall Rules Logging, or VPC Flow Logs.
If you are already using Cloud DNS logging, Event Threat Detection can detect malware using domain resolution. For most users, the Cloud DNS logs are sufficient for the network detection of malware.
If you need another level of visibility beyond domain resolution, you can turn on VPC Flow Logs, but VPC Flow Logs can incur costs. To manage these costs, we recommend increasing the aggregation interval to 15 minutes and reducing the sample rate to between 5% and 10%, but there is a tradeoff between recall (higher sample) and cost management (lower sample rate). For more information, see Log sampling and processing .
If you are already using Firewall Rules Logging or Cloud NAT logging, these logs are useful in place of VPC Flow Logs.
Supported log data and threats detected
This section lists the Cloud Logging and Google Workspace logs that you can turn on or otherwise configure to increase the number of threats that Event Threat Detection can detect.
Certain threats, such as threats posed by the anomalous impersonation or delegation of a service account, can be found in most audit logs. For these types of threats, you determine which logs you need to turn on based on the products and services you are using.
The following table shows specific logs you can enable and the type of threats that can be detected.
Log4j Malware: Bad Domain
Malware: bad domain
Malware: Cryptomining Bad Domain
Log4j Malware: Bad IP
Malware: bad IP
Malware: Cryptomining Bad IP
Log4j Malware: Bad IP
Malware: bad IP
Malware: Cryptomining Bad IP
Discovery: Can get sensitive Kubernetes object check
Privilege Escalation: Get Kubernetes CSR with compromised
bootstrap credentials
Persistence: SSO Enablement Toggle
Persistence: SSO Settings Changed
Persistence: Strong Authentication Disabled
Persistence: Two Step Verification Disabled
Privilege Escalation: Privileged Group Opened To Public
Share Google Workspace Admin Audit logs with Cloud Logging
This log type can't be scanned in project-level activations.
Credential Access: External Member Added To Privileged
Group
Initial Access: Account Disabled Hijacked
Initial Access: Disabled Password Leak
Initial Access: Government Based Attack
Initial Access: Suspicious Login Blocked
Persistence: Two Step Verification Disabled
Share Google Workspace Login Audit logs with Cloud Logging
This log type can't be scanned in project-level activations.
Initial Access: Log4j Compromise Attempt
Exfiltration: Cloud SQL Data Exfiltration
Initial Access: CloudDB Successful login from Anonymizing Proxy IP
Credential Access: CloudDB Failed login from Anonymizing Proxy IP
Exfiltration: Cloud SQL Data Exfiltration
Exfiltration: Cloud SQL Over-Privileged Grant
Initial Access: CloudDB Successful login from Anonymizing Proxy IP
Credential Access: CloudDB Failed login from Anonymizing Proxy IP
- Activate Logging Data Access audit logs for Cloud SQL for PostgreSQL.
- To detect the
Exfiltration: Cloud SQL Over-Privileged Grant
threat, you must also enable the pgAudit extension
Privilege Escalation: AlloyDB Database Superuser Writes to User
Tables
Privilege Escalation: AlloyDB Over-Privileged Grant
Initial Access: CloudDB Successful login from Anonymizing Proxy IP
Credential Access: CloudDB Failed login from Anonymizing Proxy IP
- Activate Logging Data Access audit logs for AlloyDB for PostgreSQL
- To detect the
Privilege Escalation: AlloyDB Database Superuser Writes to User Tables
andPrivilege Escalation: AlloyDB Over-Privileged Grant
threats, you must also enable the pgAudit extension
Discovery: Service Account Self-Investigation
Exfiltration: Cloud SQL Data Exfiltration
Initial Access: Leaked Service Account Key Used
Privilege Escalation: Anomalous Multistep Service Account
Delegation for AI Data Access
Privilege Escalation: Anomalous Multistep Service Account
Delegation for Data Access
Privilege Escalation: Anomalous Service Account Impersonator for
AI Data Access
Privilege Escalation: Anomalous Service Account Impersonator for
Data Access
Brute force SSH
Log4j Malware: Bad IP
Malware: bad IP
Malware: Cryptomining Bad IP
Logs that are always on
The following table lists the Cloud Logging logs that you don't need to turn on or configure. These logs are always on and Event Threat Detection scans them automatically.
Log type | Threats detected | Configuration required |
---|---|---|
Exfiltration: BigQuery Data Exfiltration Exfiltration: BigQuery Data Extraction Exfiltration: BigQuery Data to Google Drive Exfiltration: Move to Public BigQuery resource ( Preview ) |
None | |
Credential Access: Failed Attempt to Approve Kubernetes Certificate Signing Request (CSR) Credential Access: Manually Approved Kubernetes Certificate Signing Request (CSR) ( Preview ) Defense Evasion: Anonymous Sessions Granted Cluster Admin Access Defense Evasion: Manually Deleted Certificate Signing Request (CSR) Defense Evasion: Potential Kubernetes Pod Masquerading Defense Evasion: Static Pod Created Execution: GKE launch excessively capable container ( Preview ) Execution: Kubernetes Pod Created with Potential Reverse Shell Arguments Execution: Suspicious Exec or Attach to a System Pod ( Preview ) Execution: Workload triggered in sensitive namespace Impact: GKE kube-dns modification detected ( Preview ) Impact: Suspicious Kubernetes Container Names - Cryptocurrency Mining Initial Access: Anonymous GKE Resource Created from the Internet ( Preview ) Initial Access: GKE NodePort service created Initial Access: GKE Resource Modified Anonymously from the Internet ( Preview ) Initial Access: Successful API call made from a TOR proxy IP Persistence: GKE Webhook Configuration Detected Persistence: Service Account Created in sensitive namespace Privilege Escalation: Changes to sensitive Kubernetes RBAC objects Privilege Escalation: ClusterRole with Privileged Verbs ( Preview ) Privilege Escalation: ClusterRoleBinding to Privileged Role Privilege Escalation: Create Kubernetes CSR for master cert Privilege Escalation: Creation of sensitive Kubernetes bindings Privilege Escalation: Effectively Anonymous Users Granted GKE Cluster Access Privilege Escalation: Launch of privileged Kubernetes container Privilege Escalation: Suspicious Kubernetes Container Names - Exploitation and Escape ( Preview ) Privilege Escalation: Workload Created with a Sensitive Host Path Mount ( Preview ) Privilege Escalation: Workload with shareProcessNamespace enabled ( Preview ) |
None | |
Persistence: IAM Anomalous Grant ( Preview ) Persistence: Unmanaged Account Granted Sensitive Role Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy Privilege Escalation: Dormant Service Account Granted Sensitive Role Privilege Escalation: Impersonation Role Granted For Dormant Service Account Privilege Escalation: Sensitive Role Granted To Hybrid Group |
None | |
Exfiltration: Cloud SQL Restore Backup to External Organization | None | |
Exfiltration: Cloud SQL Restore Backup to External Organization | None | |
Exfiltration: Cloud SQL Restore Backup to External Organization | None | |
Defense Evasion: GCS Bucket IP Filtering Modified Defense Evasion: Project HTTP Policy Block Disabled Initial Access: Dormant Service Account Action Initial Access: Dormant Service Account Activity in AI Service Initial Access: Dormant Service Account Key Created Initial Access: Excessive Permission Denied Actions Initial Access: Leaked Service Account Key Used Lateral Movement: Modified Boot Disk Attached to Instance ( Preview ) Persistence: GCE Admin Added SSH Key Persistence: GCE Admin Added Startup Script Persistence: New AI API Method Persistence: New API Method Persistence: New Geography Persistence: New Geography for AI Service Persistence: New User Agent Privilege Escalation: Anomalous Impersonation of Service Account for Admin Activity Privilege Escalation: Anomalous Impersonation of Service Account for AI Admin Activity Privilege Escalation: Anomalous Multistep Service Account Delegation for Admin Activity Privilege Escalation: Anomalous Multistep Service Account Delegation for AI Admin Activity Privilege Escalation: Anomalous Service Account Impersonator for Admin Activity Privilege Escalation: Anomalous Service Account Impersonator for AI Admin Activity |
None | |
Defense Evasion: Modify VPC Service Control ( Preview ) | None | |
Impact: Google Cloud Backup and DR expire all images Impact: Deleted Google Cloud Backup and DR Backup Impact: Deleted Google Cloud Backup and DR host Impact: Deleted Google Cloud Backup and DR plan association Impact: Deleted Google Cloud Backup and DR Vault Impact: Google Cloud Backup and DR delete policy Impact: Google Cloud Backup and DR delete profile Impact: Google Cloud Backup and DR delete template Impact: Google Cloud Backup and DR expire image Impact: Google Cloud Backup and DR reduce backup expiration Impact: Google Cloud Backup and DR reduce backup frequency Impact: Google Cloud Backup and DR remove appliance Impact: Google Cloud Backup and DR remove plan Inhibit system recovery: Google Cloud Backup and DR delete storage pool |
None | |
Execution: Cryptomining Docker Image Impact: Cryptomining Commands |
None |
What's next
- Learn about using Event Threat Detection .
- Learn how to investigate and develop response plans for threats.