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의 기본 제공되는 감지기와 함께 실행됩니다. 실시간 모드에서는 애셋 구성이 변경될 때마다 스캔이 트리거됩니다. 배치 모드 스캔은 등록된 조직 도는 프로젝트에 대한 모든 감지기에서 하루 한 번 실행됩니다.

스캔 중에는 각 커스텀 감지기가 사용 설정된 각 조직, 폴더, 프로젝트의 모든 일치하는 애셋에 적용됩니다.

커스텀 감지기의 발견 항목은 Security Command Center에 기록됩니다.

자세한 내용은 다음을 참조하세요.

기본 제공 감지기와 커스텀 모듈 비교

기본 제공 Security Health Analytics 감지기로 감지할 수 없는 커스텀 모듈로 항목을 감지할 수 있습니다. 그러나 기본 제공 감지기는 커스텀 모듈이 지원하지 않는 특정 Security Command Center 기능을 지원합니다.

기능 지원

Security Health Analytics 커스텀 모듈은 공격 경로 시뮬레이션에서 지원되지 않으므로 커스텀 모듈에서 생성된 발견 항목은 공격 노출 점수 또는 공격 경로를 가져오지 않습니다.

감지 로직 비교

커스텀 모듈로 수행할 수 있는 일부 작업에 대한 예시로, 기본 제공되는 감지기 PUBLIC_SQL_INSTANCE가 검사할 수 있는 항목과 커스텀 모듈로 검사할 수 있는 항목을 비교합니다.

기본 제공되는 감지기 PUBLIC_SQL_INSTANCE는 Clous SQL 인스턴스의 authorizedNetworks 속성이 0.0.0.0/0으로 설정되었는지 확인합니다. 이렇게 설정되었으면 모든 IP 주소의 연결을 수락하기 때문에 감지기는 Cloud SQL 인스턴스가 공개되었음을 나타내는 발견 항목을 생성합니다.

커스텀 모듈에서는 보다 복잡한 감지 논리를 구현하여 Cloud SQL 인스턴스에서 다음과 같은 항목을 검사할 수 있습니다.

  • 특정 프리픽스가 포함된 IP 주소(와일드 카드 사용)
  • 값이 MAINTENANCE로 설정된 경우 인스턴스를 무시하고 값이 다른 값이면 발견 항목을 트리거하는 state 속성의 값
  • 특정 리전에서 공개 IP 주소가 있는 인스턴스에 대해서만 발견 항목을 트리거하기 위해 사용할 수 있는 region 속성의 값

필수 IAM 역할 및 권한

IAM 역할은 Security Health Analytics 커스텀 모듈로 수행할 수 있는 작업을 결정합니다.

다음 표에는 Security Health Analytics 커스텀 모듈 권한 목록과 이를 포함하는 사전 정의된 IAM 역할이 포함되어 있습니다. 이러한 권한은 최소 2024년 1월 22일까지 유효합니다. 이 날짜 이후에는 두 번째 표에 나열된 권한이 필요합니다.

Google Cloud 콘솔 또는 Security Command Center API를 사용하여 조직, 폴더, 프로젝트 수준에서 이러한 역할을 적용할 수 있습니다.

2024년 1월 22일 이전에 필요한 권한 역할
securitycenter.securityhealthanalyticscustommodules.create
securitycenter.securityhealthanalyticscustommodules.update
securitycenter.securityhealthanalyticscustommodules.delete
roles/securitycenter.settingsEditor
roles/securitycenter.admin
securitycenter.securityhealthanalyticscustommodules.get
securitycenter.securityhealthanalyticscustommodules.list
roles/securitycenter.settingsViewer
roles/securitycenter.adminViewer
roles/securitycenter.admin
securitycenter.securityhealthanalyticscustommodules.test roles/securitycenter.securityHealthAnalyticsCustomModulesTester
roles/securitycenter.adminViewer
roles/securitycenter.adminEditor
roles/securitycenter.admin

다음 표에는 2024년 1월 22일 이후에 필요한 Security Health Analytics 커스텀 모듈 권한과 이 권한이 포함된 사전 정의된 IAM 역할 목록이 포함되어 있습니다.

Google Cloud 콘솔 또는 Security Command Center API를 사용하여 조직, 폴더, 프로젝트 수준에서 이러한 역할을 적용할 수 있습니다.

2024년 1월 22일 이후에 필요한 권한 역할
securitycentermanagement.securityHealthAnalyticsCustomModules.create
securitycentermanagement.securityHealthAnalyticsCustomModules.update
securitycentermanagement.securityHealthAnalyticsCustomModules.delete
securitycentermanagement.securityHealthAnalyticsCustomModules.list
securitycentermanagement.securityHealthAnalyticsCustomModules.get
securitycentermanagement.effectiveSecurityHealthAnalyticsCustomModules.list
securitycentermanagement.effectiveSecurityHealthAnalyticsCustomModules.get
securitycentermanagement.securityHealthAnalyticsCustomModules.simulate
securitycentermanagement.securityHealthAnalyticsCustomModules.test
roles/securitycentermanagement.shaCustomModulesEditor
roles/securitycenter.settingsEditor
roles/securitycenter.admin
securitycentermanagement.securityHealthAnalyticsCustomModules.list
securitycentermanagement.securityHealthAnalyticsCustomModules.get
securitycentermanagement.effectiveSecurityHealthAnalyticsCustomModules.list
securitycentermanagement.effectiveSecurityHealthAnalyticsCustomModules.get
securitycentermanagement.securityHealthAnalyticsCustomModules.simulate
securitycentermanagement.securityHealthAnalyticsCustomModules.test
roles/securitycentermanagement.shaCustomModulesViewer
roles/securitycenter.settingsViewer
roles/securitycenter.adminViewer
roles/securitycenter.admin

IAM 권한 및 역할과 이를 부여하는 방법에 대한 자세한 내용은 Google Cloud 콘솔을 사용하여 IAM 역할 부여를 참조하세요.

커스텀 모듈 할당량

Security Health Analytics 커스텀 모듈에는 할당량 한도가 적용됩니다.

커스텀 모듈 생성 시 기본 할당량 한도는 100이지만 필요한 경우 할당량 증가를 요청할 수 있습니다.

커스텀 모듈 메서드에 대한 API 호출에도 할당량 한도가 적용됩니다. 다음 표에서는 커스텀 모듈 API 호출의 기본 할당량 한도를 보여줍니다.

API 호출 유형 한도
CustomModules 읽기 요청(가져오기, 나열) 조직별로 분당 API 호출 1,000개
CustomModules 쓰기 요청(만들기, 업데이트, 삭제) 조직별로 분당 API 호출 60개
CustomModules 테스트 요청 조직별로 분당 API 호출 12개

할당량을 상향 조정하려면 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 Service
compute.googleapis.com/BackendService
BigQuery Table
bigquery.googleapis.com/Table
Bucket
storage.googleapis.com/Bucket
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
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/DataLabelingJob
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

다음 단계