このページでは、Security Health Analytics 用のカスタム モジュールの概要について説明します。組み込みモジュールの詳細については、Security Health Analytics の組み込み検出機能をご覧ください。
カスタム モジュールによって、脆弱性、構成ミス、コンプライアンス違反を確認するために定義したルールを使用して指定した Google Cloudのリソースとポリシーをスキャンするカスタム検出機能を作成することで、Security Health Analytics の検出機能を拡張できます。
カスタム モジュールの構成または定義は、Google Cloud コンソールで作成することも、自分でコーディングすることもできます。これらの構成または定義により、検出機能でチェックされるリソース、検出機能で評価されるプロパティ、脆弱性または構成ミスの検出時に検出機能から返される情報が決定されます。
カスタム モジュールは、Security Command Center がサポートする任意のリソースまたはアセットに作成できます。
カスタム モジュールの定義を自分でコーディングする場合は、YAML 式と Common Expression Language(CEL)式を使用します。カスタム モジュールをGoogle Cloud コンソールで作成する場合、ほとんどのコーディングはシステム側で行われますが、CEL 式をコーディングする必要があります。
カスタム モジュール定義の YAML ファイルの例については、カスタム モジュール定義の例をご覧ください。
カスタム モジュールは、Security Health Analytics の組み込み検出機能とともに、リアルタイムとバッチの両方のスキャンで実行されます。リアルタイム モードでは、アセットの構成が変更されるたびにスキャンがトリガーされます。バッチモード スキャンでは、登録された組織またはプロジェクトのすべての検出機能が 1 日に 1 回実行されます。
スキャン中に、各カスタム検出機能で有効になっている組織、フォルダ、プロジェクトと一致するすべてのアセットにカスタム検出機能が適用されます。
カスタム検出機能からの検出結果は、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 事前定義ロールの一覧を示します。
Google Cloud コンソールまたは Security Command Center API を使用すると、これらのロールを組織レベル、フォルダレベル、またはプロジェクト レベルで適用できます。
| 必要な権限 | ロール | 
|---|---|
| securitycentermanagement.securityHealthAnalyticsCustomModules.create | roles/securitycentermanagement.shaCustomModulesEditor | 
| securitycentermanagement.securityHealthAnalyticsCustomModules.list | roles/securitycentermanagement.shaCustomModulesViewer
       | 
IAM の権限とロールの詳細については、 Google Cloud コンソールを使用して IAM ロールを付与するをご覧ください。
カスタム モジュールの割り当て
Security Health Analytics カスタム モジュールは割り当て上限の対象です。
カスタム モジュールの作成のデフォルトの割り当て上限は 100 ですが、必要に応じて割り当ての増加をリクエストできます。
カスタム モジュールのメソッドへの API 呼び出しも割り当て上限の対象になります。次の表に、カスタム モジュール API 呼び出しのデフォルトの割り当て上限を示します。
| API 呼び出しの種類 | 上限 | 
|---|---|
| CustomModules 読み取りリクエスト(Get、List) | 組織ごとに 1 分あたり 1,000 回の API 呼び出し | 
| CustomModules 書き込みリクエスト(Create、Update、Delete) | 組織ごとに 1 分あたり 60 回の API 呼び出し | 
| CustomModules テスト リクエスト | 組織ごとに 1 分あたり 12 回の API 呼び出し。 | 
割り当てを増やすには、 Google Cloud コンソールの [割り当て] ページでリクエストを送信します。
Security Command Center の割り当ての詳細については、割り当てと上限をご覧ください。
サポートされるリソースタイプ
- Access Context Manager
- 
  accesscontextmanager.googleapis.com/AccessLevel
- 
  accesscontextmanager.googleapis.com/AccessPolicy
- 
  accesscontextmanager.googleapis.com/ServicePerimeter
- 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
- Api Keys
- 
  apikeys.googleapis.com/Key
- 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 Model
- bigquery.googleapis.com/Model
- BigQuery Table
- bigquery.googleapis.com/Table
- Bucket
- 
  storage.googleapis.com/Bucket
- Cloud Billing Project Billing Info
- 
  cloudbilling.googleapis.com/ProjectBillingInfo
- 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 Autoscaling Policy
- 
  dataproc.googleapis.com/AutoscalingPolicy
- Dataproc Batch
- 
  dataproc.googleapis.com/Batch
- Dataproc Cluster
- 
  dataproc.googleapis.com/Cluster
- Dataproc Job
- 
  dataproc.googleapis.com/Job
- 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
- Dialogflow CX
- 
  dialogflow.googleapis.com/Agent
- Disk
- 
  compute.googleapis.com/Disk
- DLP Deidentify Template
- 
  dlp.googleapis.com/DeidentifyTemplate
- DLP Inspect Template
- 
  dlp.googleapis.com/InspectTemplate
- DLP Job
- 
  dlp.googleapis.com/DlpJob
- DLP Job Trigger
- 
  dlp.googleapis.com/JobTrigger
- DLP Stored Info Type
- 
  dlp.googleapis.com/StoredInfoType
- 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
- IAM Role
- 
  iam.googleapis.com/Role
- Image
- 
  compute.googleapis.com/Image
- Instance
- 
  compute.googleapis.com/Instance
- Instance Group
- 
  compute.googleapis.com/InstanceGroup
- Instance Group Manager
- 
  compute.googleapis.com/InstanceGroupManagers
- Instance Template
- 
  compute.googleapis.com/InstanceTemplate
- Interconnect Attachment
- 
  compute.googleapis.com/InterconnectAttachment
- Keyring
- 
  cloudkms.googleapis.com/KeyRing
- KMS Import Job
- 
  cloudkms.googleapis.com/ImportJob
- Kubernetes CronJob
- 
  k8s.io/CronJob
- Kubernetes DaemonSet
- 
  k8s.io/DaemonSet
- Kubernetes Deployment
- 
  k8s.io/Deployment
- Kubernetes Ingress
- 
  k8s.io/Ingress
- Kubernetes NetworkPolicy
- 
  k8s.io/NetworkPolicy
- Kubernetes ReplicaSet
- 
  k8s.io/ReplicaSet
- Kubernetes Service
- 
  k8s.io/Service
- Kubernetes StatefulSet
- 
  k8s.io/StatefulSet
- Log Bucket
- 
  logging.googleapis.com/LogBucket
- Log Metric
- 
  logging.googleapis.com/LogMetric
- Log Sink
- 
  logging.googleapis.com/LogSink
- Managed Zone
- 
  dns.googleapis.com/ManagedZone
- Machine Image
- 
  compute.googleapis.com/MachineImage
- Monitoring Notification Channel
- 
  monitoring.googleapis.com/NotificationChannel
- Namespace
- 
  k8s.io/Namespace
- NetApp Snapshot
- 
  netapp.googleapis.com/Snapshot
- NetApp Volume
- 
  netapp.googleapis.com/Volume
- 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
- Private CA Certificate
- 
  privateca.googleapis.com/Certificate
- Private CA Certificate Revocation List
- 
  privateca.googleapis.com/CertificateRevocationList
- Project
- 
  cloudresourcemanager.googleapis.com/Project
- Pubsub Snapshot
- 
  pubsub.googleapis.com/Snapshot
- Pubsub Subscription
- 
  pubsub.googleapis.com/Subscription
- Pubsub Topic
- 
  pubsub.googleapis.com/Topic
- Redis Cluster
- 
  redis.googleapis.com/Cluster
- Redis Instance
- 
  redis.googleapis.com/Instance
- Region Backend Service
- 
  compute.googleapis.com/RegionBackendService
- Region Disk
- 
  compute.googleapis.com/RegionDisk
- Reservation
- 
  compute.googleapis.com/Reservation
- Resource Policy
- 
  compute.googleapis.com/ResourcePolicy
- Route
- 
  compute.googleapis.com/Route
- Router
- 
  compute.googleapis.com/Router
- Role
- 
  rbac.authorization.k8s.io/Role
- Role Binding
- 
  rbac.authorization.k8s.io/RoleBinding
- Secret Manager
- 
  secretmanager.googleapis.com/Secret
- Secret Version
- 
  secretmanager.googleapis.com/SecretVersion
- Service Account Key
- 
  iam.googleapis.com/ServiceAccountKey
- ServiceUsage Service
- 
  serviceusage.googleapis.com/Service
- Snapshot
- 
  compute.googleapis.com/Snapshot
- Spanner Backup
- 
  spanner.googleapis.com/Backup
- Spanner Database
- 
  spanner.googleapis.com/Database
- Spanner Instance
- 
  spanner.googleapis.com/Instance
- SQL Backup Run
- 
  sqladmin.googleapis.com/BackupRun
- SQL Instance
- 
  sqladmin.googleapis.com/Instance
- SSL Certificate
- 
  compute.googleapis.com/SslCertificate
- SSL Policy
- 
  compute.googleapis.com/SslPolicy
- Subnetwork
- 
  compute.googleapis.com/Subnetwork
- Tag Binding
- 
  cloudresourcemanager.googleapis.com/TagBinding
- 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/Featurestore
- 
  aiplatform.googleapis.com/HyperparameterTuningJob
- 
  aiplatform.googleapis.com/Index
- 
  aiplatform.googleapis.com/MetadataStore
- 
  aiplatform.googleapis.com/Model
- 
  aiplatform.googleapis.com/SpecialistPool
- 
  aiplatform.googleapis.com/Tensorboard
- 
  aiplatform.googleapis.com/TrainingPipeline
- 
  aiplatform.googleapis.com/NotebookRuntimeTemplate
- Vertex AI Workbench
- 
  notebooks.googleapis.com/Instance
- VMware Engine
- 
  vmwareengine.googleapis.com/Cluster
- 
  vmwareengine.googleapis.com/ExternalAccessRule
- 
  vmwareengine.googleapis.com/ExternalAddress
- 
  vmwareengine.googleapis.com/VmwareEngineNetwork
- 
  vmwareengine.googleapis.com/NetworkPeering
- 
  vmwareengine.googleapis.com/NetworkPolicy
- 
  vmwareengine.googleapis.com/PrivateCloud
- 
  vmwareengine.googleapis.com/PrivateConnection
- VPC Connector
- 
  vpcaccess.googleapis.com/Connector
- VPN Gateway
- 
  compute.googleapis.com/VpnGateway
- VPN Tunnel
- 
  compute.googleapis.com/VpnTunnel
- Workstations
- 
  workstations.googleapis.com/Workstation
- 
  workstations.googleapis.com/WorkstationConfig
次のステップ
- カスタム モジュールを使用するには、Security Health Analytics のカスタム モジュールの使用をご覧ください。
- カスタム モジュールの定義を自分でコーディングするには、Security Health Analytics のカスタム モジュールをコーディングするをご覧ください。
- カスタム モジュールをテストするには、Security Health Analytics のカスタム モジュールをテストするをご覧ください。