このページでは、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 Policymonitoring.googleapis.com/AlertPolicyAlloyDB 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 Modelbigquery.googleapis.com/ModelBigQuery Tablebigquery.googleapis.com/TableBucket-
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 Profiledatastream.googleapis.com/ConnectionProfileDatastream Private Connectiondatastream.googleapis.com/PrivateConnectionDatastream Streamdatastream.googleapis.com/StreamDialogflow 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 Nodepoolcontainer.googleapis.com/NodePoolOrganization-
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 のカスタム モジュールをテストするをご覧ください。