이 페이지에서는 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 |
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 읽기 요청(가져오기, 나열) | 조직별로 분당 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 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 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
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용 커스텀 모듈 테스트를 참조하세요.