このページでは、Security Health Analytics 用のカスタム モジュールの概要について説明します。 組み込みモジュールの詳細については、Security Health Analytics の組み込み検出機能をご覧ください。
カスタム モジュールによって、脆弱性、構成ミス、コンプライアンス違反を確認するために定義したルールを使用して指定した Google Cloud リソースとポリシーをスキャンするカスタム検出器を作成することで、Security Health Analytics の検出機能を拡張できます。
Google Cloud Console で作成するか、自分でコーディングするかのいずれかの、カスタム モジュールの構成または定義によって、検出器がチェックするリソース、検出器が評価するプロパティ、脆弱性または構成ミスが検出されると、検出器が返す情報が決定されます。
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 事前定義ロールを示します。これらの権限は 2024 年 1 月 22 日まで有効です。それ以降は、2 番目の表に一覧表示されている権限が必要になります。
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 読み取りリクエスト(Get、List) | 組織ごとに 1 分あたり 1,000 回の API 呼び出し |
CustomModules 書き込みリクエスト(Create、Update、Delete) | 組織ごとに 1 分あたり 60 回の API 呼び出し |
CustomModules テスト リクエスト | 組織ごとに 1 分あたり 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 のカスタム モジュールをテストするをご覧ください。