本页面简要介绍了 Security Health Analytics 自定义模块。对于 内置模块的相关信息,请参阅 Security Health Analytics 内置检测器。
借助自定义模块,您可以通过创建自定义检测器来扩展 Security Health Analytics 的检测功能,该检测器可扫描您使用定义的规则指定的 Google Cloud 资源和政策,以检查是否存在漏洞、配置错误或违规情况。
自定义模块的配置或定义(无论是在 Google Cloud 控制台中创建自定义模块还是自行对其进行编码)决定了检测器检查的资源、检测器评估的属性,以及检测器在检测到漏洞或配置错误时返回的信息。
您可以为 Security Command Center 支持的任何资源或资产创建自定义模块。
如果您自行对自定义模块定义进行编码,则可以使用 YAML 和通用表达式语言 (CEL) 表达式。如果您使用 Google Cloud 控制台创建自定义模块,则系统会为您完成大部分编码工作,但您需要对 CEL 表达式进行编码。
如需查看 YAML 文件中自定义模块定义的示例,请参阅自定义模块定义示例。
在实时扫描和批量扫描中,自定义模块会与 Security Health Analytics 的内置检测器一起运行。在实时模式下,每当资产的配置更改时,系统就会触发扫描。系统每天会对已注册的组织或项目的所有检测器运行一次批量模式扫描。
在扫描期间,每个自定义检测器都会应用于启用了它的每个组织、文件夹或项目中所有匹配的资产。
来自自定义检测器的发现结果会写入 Security Command Center。
详情请参阅以下内容:
比较内置检测器和自定义模块
您可以使用内置 Security Health Analytics 检测器无法检测的自定义模块进行检测;但是,内置检测器支持自定义模块不支持的特定 Security Command Center 功能。
功能支持
攻击路径不支持 Security Health Analytics 自定义模块 因此自定义模块生成的发现结果不会 攻击风险得分或攻击路径。
比较检测逻辑
作为说明可以使用自定义模块执行的某些操作的示例,您可以将内置检测器 PUBLIC_SQL_INSTANCE
检查的内容与可以使用自定义模块执行的操作进行比较。
内置检测器 PUBLIC_SQL_INSTANCE
会检查 Cloud SQL 实例的 authorizedNetworks
属性是否设置为 0.0.0.0/0
。如果是,则检测器会发出发现结果,表明 Cloud SQL 实例对公众开放,因为它接受来自所有 IP 地址的连接。
借助自定义模块,您可以实现更复杂的检测逻辑,以检查 Cloud SQL 实例是否存在以下各项:
- 具有特定前缀的 IP 地址(使用通配符)。
state
属性的值,可用于在值设置为MAINTENANCE
时忽略实例,或在值为其他值时触发发现结果。region
属性的值,可用于仅对在特定区域具有公共 IP 地址的实例触发发现结果。
必需的 IAM 角色和权限
IAM 角色决定了您可以执行的操作 Security Health Analytics 自定义模块。
下表列出了 Security Health Analytics 自定义模块权限以及可提供这些权限的预定义 IAM 角色。这些权限的有效期至少为 2024 年 1 月 22 日。更新后 下表第二个表格中列出的权限, 都是必填字段。
您可以使用 Google Cloud 控制台或 Security Command Center API 在组织、文件夹或项目级应用这些角色。
2024 年 1 月 22 日之前需要的权限 | 角色 |
---|---|
securitycenter.securityhealthanalyticscustommodules.create |
roles/securitycenter.settingsEditor |
securitycenter.securityhealthanalyticscustommodules.get |
roles/securitycenter.settingsViewer |
securitycenter.securityhealthanalyticscustommodules.test |
roles/securitycenter.securityHealthAnalyticsCustomModulesTester |
下表列出了 2024 年 1 月 22 日当天或之后需要的 Security Health Analytics 自定义模块权限,以及包含这些权限的预定义 IAM 角色。
您可以使用 Google Cloud 控制台或 Security Command Center API 来 在组织、文件夹或项目级别分配这些角色。
2024 年 1 月 22 日或之后所需的权限 | 角色 |
---|---|
securitycentermanagement.securityHealthAnalyticsCustomModules.create
|
roles/securitycentermanagement.shaCustomModulesEditor |
securitycentermanagement.securityHealthAnalyticsCustomModules.list
|
roles/securitycentermanagement.shaCustomModulesViewer
|
如需详细了解 IAM 权限和角色以及如何授予这些权限,请参阅使用 Google Cloud 控制台授予 IAM 角色。
自定义模块配额
Security Health Analytics 自定义模块受配额限制的约束。
创建自定义模块的默认配额限制为 100,但如有必要,您可以申请增加配额。
对自定义模块方法的 API 调用也受配额限制的约束。通过 下表显示了自定义模块 API 调用的默认配额限制。
API 调用类型 | 限制 |
---|---|
CustomModules 读取请求(获取、列出) | 每个组织每分钟 1,000 次 API 调用 |
CustomModules 写入请求(创建、更新、删除) | 每个组织每分钟 60 次 API 调用 |
CustomModules 测试请求 | 每个组织每分钟 12 次 API 调用 |
如需增加配额,请在 Google Cloud 控制台的配额页面上提交申请。
如需详细了解 Security Command Center 配额,请参阅配额和限制。
支持的资源类型
Address
-
compute.googleapis.com/Address
Alert Policy
monitoring.googleapis.com/AlertPolicy
AlloyDB for PostgreSQL
-
alloydb.googleapis.com/Backup
-
alloydb.googleapis.com/Cluster
-
alloydb.googleapis.com/Instance
Artifact Registry Repository
-
artifactregistry.googleapis.com/Repository
Autoscaler
-
compute.googleapis.com/Autoscaler
Backend Bucket
-
compute.googleapis.com/BackendBucket
Backend Service
-
compute.googleapis.com/BackendService
BigQuery Data Transfer Service
-
bigquerydatatransfer.googleapis.com/TransferConfig
BigQuery Table
bigquery.googleapis.com/Table
Bucket
-
storage.googleapis.com/Bucket
Cloud Data Fusion
-
datafusion.googleapis.com/Instance
Cloud Function
-
cloudfunctions.googleapis.com/CloudFunction
Cloud Run
-
run.googleapis.com/DomainMapping
-
run.googleapis.com/Execution
-
run.googleapis.com/Job
-
run.googleapis.com/Revision
-
run.googleapis.com/Service
Cluster
-
container.googleapis.com/Cluster
Cluster Role
-
rbac.authorization.k8s.io/ClusterRole
Cluster Role Binding
-
rbac.authorization.k8s.io/ClusterRoleBinding
Commitment
-
compute.googleapis.com/Commitment
Composer Environment
-
composer.googleapis.com/Environment
Compute Project
-
compute.googleapis.com/Project
-
compute.googleapis.com/SecurityPolicy
CryptoKey
-
cloudkms.googleapis.com/CryptoKey
CryptoKey Version
-
cloudkms.googleapis.com/CryptoKeyVersion
Dataflow Job
-
dataflow.googleapis.com/Job
Dataproc Cluster
-
dataproc.googleapis.com/Cluster
Dataset
-
bigquery.googleapis.com/Dataset
Datastream Connection Profile
datastream.googleapis.com/ConnectionProfile
Datastream Private Connection
datastream.googleapis.com/PrivateConnection
Datastream Stream
datastream.googleapis.com/Stream
Disk
-
compute.googleapis.com/Disk
DNS Policy
-
dns.googleapis.com/Policy
File Instance
-
file.googleapis.com/Instance
Firewall
-
compute.googleapis.com/Firewall
Firewall Policy
-
compute.googleapis.com/FirewallPolicy
Folder
-
cloudresourcemanager.googleapis.com/Folder
Forwarding Rule
-
compute.googleapis.com/ForwardingRule
Global Forwarding Rule
-
compute.googleapis.com/GlobalForwardingRule
Health Check
-
compute.googleapis.com/HealthCheck
Hub
-
gkehub.googleapis.com/Feature
-
gkehub.googleapis.com/Membership
Image
-
compute.googleapis.com/Image
Instance
-
compute.googleapis.com/Instance
Instance Group
-
compute.googleapis.com/InstanceGroup
Instance Group Manager
-
compute.googleapis.com/InstanceGroupManagers
Interconnect Attachment
-
compute.googleapis.com/InterconnectAttachment
Keyring
-
cloudkms.googleapis.com/KeyRing
KMS Import Job
-
cloudkms.googleapis.com/ImportJob
Kubernetes Service
-
k8s.io/Service
Log Bucket
-
logging.googleapis.com/LogBucket
Log Metric
-
logging.googleapis.com/LogMetric
Log Sink
-
logging.googleapis.com/LogSink
Managed Zone
-
dns.googleapis.com/ManagedZone
Namespace
-
k8s.io/Namespace
Network
-
compute.googleapis.com/Network
Network Endpoint Group
-
compute.googleapis.com/NetworkEndpointGroup
Node
-
k8s.io/Node
Node Group
-
compute.googleapis.com/NodeGroup
Node Template
-
compute.googleapis.com/NodeTemplate
Nodepool
container.googleapis.com/NodePool
Organization
-
cloudresourcemanager.googleapis.com/Organization
Organization Policy Service v2
-
orgpolicy.googleapis.com/CustomConstraint
-
orgpolicy.googleapis.com/Policy
Packet Mirroring
-
compute.googleapis.com/PacketMirroring
Pod
-
k8s.io/Pod
Project
-
cloudresourcemanager.googleapis.com/Project
Pubsub Snapshot
-
pubsub.googleapis.com/Snapshot
Pubsub Subscription
-
pubsub.googleapis.com/Subscription
Pubsub Topic
-
pubsub.googleapis.com/Topic
Region Backend Service
-
compute.googleapis.com/RegionBackendService
Region Disk
-
compute.googleapis.com/RegionDisk
Reservation
-
compute.googleapis.com/Reservation
Resource Policy
-
compute.googleapis.com/ResourcePolicy
Router
-
compute.googleapis.com/Router
Role
-
rbac.authorization.k8s.io/Role
Role Binding
-
rbac.authorization.k8s.io/RoleBinding
Secret Manager
-
secretmanager.googleapis.com/Secret
Service Account Key
-
iam.googleapis.com/ServiceAccountKey
ServiceUsage Service
-
serviceusage.googleapis.com/Service
Snapshot
-
compute.googleapis.com/Snapshot
Spanner Database
-
spanner.googleapis.com/Database
Spanner Instance
-
spanner.googleapis.com/Instance
SQL Instance
-
sqladmin.googleapis.com/Instance
SSL Certificate
-
compute.googleapis.com/SslCertificate
SSL Policy
-
compute.googleapis.com/SslPolicy
Subnetwork
-
compute.googleapis.com/Subnetwork
Target HTTP Proxy
-
compute.googleapis.com/TargetHttpProxy
Target HTTPS Proxy
-
compute.googleapis.com/TargetHttpsProxy
Target Instance
-
compute.googleapis.com/TargetInstance
Target Pool
-
compute.googleapis.com/TargetPool
Target SSL Proxy
-
compute.googleapis.com/TargetSslProxy
Target VPN Gateway
-
compute.googleapis.com/TargetVpnGateway
URL Map
-
compute.googleapis.com/UrlMap
Vertex AI
-
aiplatform.googleapis.com/BatchPredictionJob
-
aiplatform.googleapis.com/CustomJob
-
aiplatform.googleapis.com/Dataset
-
aiplatform.googleapis.com/Endpoint
-
aiplatform.googleapis.com/HyperparameterTuningJob
-
aiplatform.googleapis.com/Model
-
aiplatform.googleapis.com/SpecialistPool
-
aiplatform.googleapis.com/TrainingPipeline
VPC Connector
-
vpcaccess.googleapis.com/Connector
VPN Gateway
-
compute.googleapis.com/VpnGateway
VPN Tunnel
-
compute.googleapis.com/VpnTunnel
后续步骤
- 如需使用自定义模块,请参阅使用 Security Health Analytics 的自定义模块。
- 如需自行对自定义模块定义进行编码,请参阅对 Security Health Analytics 的自定义模块进行编码。
- 如需测试您的自定义模块,请参阅测试 Security Health Analytics 的自定义模块。