다음 대상에 대한 탐지 및 대응 활성화 IBM Cloud
Workload Protection 에서 IBM Cloud 감사 로그를 수집 및 분석하여 잠재적인 위협을 탐지할 수 있습니다.
Workload Protection 탐지 및 대응 모듈은 IBM Cloud, 멀티 클라우드 환경( Amazon Web Services, Azure 및 Google Cloud ), 내부 호스트, 가상 머신(VPC용 VSI, VMware, PowerVS 및 IBM Z 와 Linux ), Kubernetes 및 OpenShift 을 지원합니다.
CDR은 클라우드 워크로드와 활동을 실시간으로 모니터링하고, 선별된 규칙과 행동 기법을 사용하여 위협을 탐지하여 권한 상승 및 측면 이동과 같은 광범위한 공격을 식별합니다.
CDR을 사용하면 조직은 위협을 더 빠르게 탐지하고 대응하여 보안 사고의 영향을 줄이고 다운타임을 최소화할 수 있습니다.
IBM Cloud 계정에 대한 탐지 및 대응 활성화를 완료한 후에는 IBM Cloud 위협 탐지 정책 만들기를 참조하여 사용자 환경에 원하는 탐지 기능을 정의하세요.
IBM Cloud 탐지 및 대응 아키텍처
IBM Cloud 에 대한 CDR 통합은 다음 데이터 흐름을 사용합니다:
-
사용자 및 애플리케이션은 IBM Cloud 계정의 작업으로 감사 이벤트를 생성합니다. 모든 생성, 제거 또는 업데이트는 기록 및 추적됩니다.
-
Activity Tracker Event Routing 는 IBM Cloud 계정에서 생성된 감사 이벤트를 캡처하여 구성된 대상 및 경로를 통해 IBM Cloud Object Storage 버킷으로 라우팅합니다.
-
IBM Cloud Object Storage 는 Activity Tracker Event Routing 에서 감사 이벤트를 저장합니다. IBM Cloud Object Storage 이벤트 구독은 버킷을 모니터링하고 새 이벤트 파일이 작성될 때마다 Code Engine 애플리케이션을 트리거합니다.
-
Code Engine 는 인증을 위해 신뢰할 수 있는 프로필을 사용하여 Object Storage 버킷에서 이벤트 파일을 읽고 Workload Protection 수집 엔드포인트로 이벤트를 전달하는 CDR 알림 애플리케이션을 실행합니다.
-
Workload Protection 는 거의 실시간으로 전달된 이벤트를 수신하고 분석하여 탐지 규칙을 적용하여 권한 상승, 측면 이동, 의심스러운 API 활동과 같은 위협을 식별합니다.
Object Storage 버킷에서 읽을 수 있는 Workload Protection 인스턴스 ID 액세스 권한을 부여하는 신뢰할 수 있는 프로필과 이벤트를 Workload Protection 수집 엔드포인트로 전달할 때 Code Engine 애플리케이션을 인증하는 API 키가 있는 서비스 ID라는 두 가지 IAM 개체를 사용하여 구성 요소 간의 연결이 보호됩니다.
전제조건
시작하기 전에 IBM Cloud 계정에서 다음 서비스와 권한을 사용할 수 있는지 확인하세요.
- 기존 Workload Protection 인스턴스 및 해당 CRN. 나중에
<workload-protection-instance-crn>으로 참조됩니다. 자세한 내용은 ‘ Workload Protection 설정’을 참조하십시오. - Workload Protection IBM Cloud 계정에 CSPM이 활성화되어 있어야 합니다. 자세한 내용은 다음을 참조하세요. 다음을 위한 CSPM 구현 IBM Cloud
- IBM Cloud 계정에서 다음 서비스를 관리할 수 있는 권한입니다:
- Activity Tracker Event Routing: 편집자 또는 관리자 플랫폼 역할.
- IBM Cloud Object Storage: 인스턴스의 관리자 서비스 역할입니다.
- IAM 신원 (계정 관리): 서비스 ID, API 키 및 신뢰할 수 있는 프로필을 만드는 관리자 역할입니다.
- IAM 액세스 관리 (계정 관리): IAM 정책 및 서비스 간 권한 부여를 만드는 관리자 역할입니다.
- Code Engine: 편집자 또는 관리자 서비스 역할.
- Container Registry: 리더 서비스 역할 - Code Engine 에서 CDR 애플리케이션 이미지를 가져오는 데 필요합니다.
- Workload Protection: 인스턴스의 편집자 또는 관리자 플랫폼 역할입니다.
Activity Tracker Event Routing 연동 설정하기
워크플로는 감사 이벤트를 Activity Tracker Event Routing 에서 Object Storage 으로 보내고, 그러면 Code Engine 애플리케이션이 수집 및 분석을 위해 이벤트를 Workload Protection 으로 전달하도록 트리거합니다.
IBM Cloud Object Storage 대상 구성
IBM Cloud Object Storage 는 Activity Tracker Event Routing 이벤트의 대상으로 사용됩니다. 이러한 이벤트는 나중에 Workload Protection 에서 수집하여 잠재적인 의심스러운 활동을 분석합니다.
Cloud Object Storage 대상 구성의 지침을 따릅니다.
대상을 구성한 후 이후 단계에서 사용할 다음 값을 저장합니다:
-
Object Storage 인스턴스 이름입니다.
<your_cos_instance_name>으로 참조됩니다. -
Object Storage 버킷 이름입니다.
<cos_bucket_name>으로 참조됩니다. -
Object Storage 버킷 영역입니다.
<cos_bucket_region>으로 참조됩니다.Activity Tracker Event Routing 경로를 구성할 때 경로 규칙에 배포 지역 외에
global위치가 포함되어 있는지 확인하세요. 계정 설정 변경, MFA 수정, 정책 삭제 및 상황 기반 제한 변경과 같은 IAM 이벤트는 글로벌 이벤트로 생성되며global이 명시적으로 포함되지 않는 한 라우팅되지 않습니다.global위치가 없으면 IAM 변이 이벤트가 Object Storage 버킷에 도달하지 못하고 Workload Protection 에서 분석되지 않습니다.
서비스 ID 및 API 키 작성
Workload Protection 인스턴스로 이벤트를 전송할 Code Engine 애플리케이션에 대한 서비스 ID와 API 키 하나를 생성합니다.
ibmcloud iam service-id-create send-cdr-events-id --description "Service ID for CDR event forwarding"
ibmcloud iam service-api-key-create send-cdr-events-key send-cdr-events-id --description "API Key for CDR app"
생성된 API 키와 서비스 ID 식별자(첫 번째 명령에서 반환된 ServiceId-xxx 값)를 저장합니다. 다음 단계에서는 두 가지 모두 사용됩니다.
Code Engine 에서 CDR 애플리케이션 이미지를 가져올 수 있도록 서비스 ID 리더에 IBM Cloud® Container Registry 에 대한 액세스 권한을 부여합니다:
ibmcloud iam service-policy-create send-cdr-events-id --roles Reader --service-name container-registry
Object Storage 이벤트를 읽기 위한 신뢰할 수 있는 프로필 만들기
신뢰할 수 있는 프로필을 만듭니다(이름을 수정할 수 있음). ID 을 저장하여 나중에 사용하세요. 나중에 <trusted_profile_id> 으로 참조됩니다:
ibmcloud iam trusted-profile-create ibmcdr-wp-cos --description "Trusted profile for Workload Protection interaction with Cloud Object Storage bucket"
Workload Protection 인스턴스에 대한 트러스트 관계를 할당합니다. <workload-protection-instance-crn> 를 Workload Protection CRN으로 바꿉니다:
ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <workload-protection-instance-crn> --id-type CRN
2단계에서 생성한 서비스 ID에 대한 신뢰 관계를 할당합니다. <service_id> 을 서비스 ID 식별자(ServiceId-xxx)로 바꿉니다:
ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <service_id> --id-type serviceid
IBM Cloud Object Storage 리더에 대한 신뢰할 수 있는 프로필에 대한 정책을 만듭니다. <cos_bucket_name> 을 1단계에서 만든 버킷 이름으로 바꿉니다:
ibmcloud iam trusted-profile-policy-create ibmcdr-wp-cos -r "Content Reader,Reader" --service-name cloud-object-storage --resource-type bucket --resource <cos_bucket_name>
CDR 서비스 ID에 액세스하기 위한 신뢰할 수 있는 프로필에 대한 정책을 만듭니다. <service_id> 을 2단계에서 생성한 서비스 ID로 바꿉니다:
ibmcloud iam trusted-profile-policy-create ibmcdr-wp-cos -r Viewer --service-name iam-identity --resource-type serviceid --resource <service_id>
Code Engine 프로젝트 및 비밀 만들기
Code Engine 에서 비밀을 생성하여 API 키를 안전하게 삽입합니다
Code Engine 프로젝트를 작성하십시오.
ibmcloud ce project create --name <code_engine_project>
애플리케이션의 시크릿을 생성합니다(변수로 사용됨). <your_api_key> 을 이전 단계에서 생성한 키로 바꿉니다:
ibmcloud ce secret create --name cdr-secrets --from-literal API_KEY=<your_api_key>
Container Registry 에서 이미지를 가져오기 위한 시크릿을 만듭니다. <your_api_key> 을 이전 단계에서 생성한 키로 바꿉니다:
ibmcloud ce secret create --name icr-secret --format registry --server icr.io --username iamapikey --password <your_api_key> --email noreply@cdr-app.ibm.cloud
Code Engine 앱 만들기
명령에서 다음 변수를 교체해야 합니다:
<target_account_id>IBM Cloud 계정 ID로 로그인합니다.<trusted_profile_id>3단계에서 생성한 신뢰할 수 있는 프로필을 사용합니다.<environment_url>해당 지역의 Workload Protection 엔드포인트를 사용합니다. 예를 들어 인스턴스가 달라스에 있는 경우<environment_url>를us-south.security-compliance-secure.cloud.ibm.com로 바꿉니다.<service_id>에 2단계에서 생성한 서비스 ID를 입력합니다.
ibmcloud ce application create \
--name "sccwp-cdr-app" \
--image icr.io/ext/sysdig/cdr-notification-app:latest \
--min-scale 1 \
--max-scale 10 \
--cpu 0.125 \
--memory 500M \
--request-timeout 60 \
--service-account default \
--env TARGET_ACCOUNT_ID=<target_account_id> \
--env TRUSTED_PROFILE_ID=<trusted_profile_id> \
--env FORWARD_URL="https://<environment_url>/api/cloudingestion/webhooks/ibm/v1/<service_id>" \
--env API_KEY=cdr-secrets:API_KEY \
--registry-secret icr-secret
다음 표에서는 명령에 사용되는 주요 매개변수에 대해 설명합니다:
| 매개변수 | 설명 |
|---|---|
--name |
Code Engine 애플리케이션의 이름입니다. |
--image |
IBM Cloud Container Registry 에서 호스팅되는 CDR 알림 애플리케이션 이미지. 항상 다음과 같아야 합니다. icr.io/ext/sysdig/cdr-notification-app:latest |
--min-scale |
실행 중인 최소 인스턴스 수입니다. 앱이 항상 Object Storage 이벤트를 수신할 준비가 되도록 하려면 1 으로 설정하세요. |
--max-scale |
앱이 로드 상태에서 확장할 수 있는 최대 인스턴스 수입니다. |
--cpu / --memory |
인스턴스당 할당된 리소스를 계산합니다. |
--request-timeout |
앱이 시간 초과되기 전에 수신 요청을 처리하는 데 걸리는 최대 시간(초)입니다. |
TARGET_ACCOUNT_ID |
Activity Tracker Event Routing 을 통해 감사 이벤트가 전달되는 IBM Cloud 계정 ID입니다. |
TRUSTED_PROFILE_ID |
3단계에서 생성된 신뢰할 수 있는 파일 ID로, 앱에서 장기 자격 증명 없이 Object Storage 에 대해 인증하는 데 사용됩니다. |
FORWARD_URL |
Workload Protection 수집 엔드포인트 URL, 신원 토큰으로 서비스 ID를 포함합니다. |
--env-from-secret cdr-secrets |
4단계에서 생성한 Code Engine 시크릿의 서비스 ID API 키를 환경 변수로 앱에 삽입합니다. |
--registry-secret icr-secret |
Code Engine 에서 애플리케이션 이미지를 가져올 수 있도록 허용하는 레지스트리 자격 증명 IBM Cloud Container Registry. |
IBM Cloud Object Storage 버킷을 다음 주소에 연결 Code Engine
이벤트 구독을 설정하여 Object Storage 버킷 이벤트를 Code Engine 에 연결합니다.
Code Engine 인스턴스에서 Object Storage 인스턴스의 알림을 관리할 수 있도록 권한을 부여합니다. <code_engine_project> 을 4단계에서 생성한 Code Engine 프로젝트로, <your_cos_instance_name> 을 1단계에서 생성한 IBM Cloud Object Storage 인스턴스 이름으로 바꿉니다:
ibmcloud iam authorization-policy-create codeengine cloud-object-storage "Notifications Manager" --source-service-instance-name <code_engine_project> --target-service-instance-name <your_cos_instance_name>
구독을 만들어 Activity Tracker Event Routing 로그 파일을 버킷에 아카이브할 때마다 애플리케이션이 트리거되도록 합니다. <cos_bucket_name> 을 1단계의 버킷 이름으로 바꿉니다:
ibmcloud ce subscription cos create --name cdr-cos-sub \
--bucket <cos_bucket_name> \
--destination sccwp-cdr-app \
--event-type write
워크로드 보호에서 계정에 CDR 사용 설정하기
명령에서 다음 변수를 교체해야 합니다:
<wp_instance_name>를 Workload Protection 인스턴스 이름 또는 GUID와 함께 입력합니다. 여러 인스턴스가 동일한 이름을 공유하는 경우 모호성을 피하려면 GUID를 사용하는 것이 좋습니다.<cos_bucket_region>를 1단계에서 생성한 Object Storage 버킷의 영역으로 설정합니다.<cos_bucket_name>에 1단계에서 만든 Object Storage 버킷 이름을 입력합니다.<trusted_profile_id>3단계에서 저장한 신뢰할 수 있는 프로필 ID로 로그인합니다.<environment_url>해당 지역의 Workload Protection 엔드포인트를 사용합니다.<service_id>에 2단계의 서비스 ID 식별자(ServiceId-xxx값)를 추가합니다.<target_account_id>IBM Cloud 계정 ID로 로그인합니다.
ibmcloud resource service-instance-update "<wp_instance_name>" -p '{"enable_cdr": true, "target_cdr_accounts": [{"cdr_bucket_region": "<cos_bucket_region>","cdr_bucket_name": "<cos_bucket_name>","cdr_trusted_profile_id": "<trusted_profile_id>","cdr_service_id": "<service_id>", "cdr_ingestion_url": "https://<environment_url>/api/cloudingestion/webhooks/ibm/v1/<service_id>", "account_id":"<target_account_id>"}]}' -g Default
오류가 있는 경우 내 IBM Cloud 계정에 감사 이벤트가 수집되지 않는 이유를 검토하세요
IBM Cloud 위협 탐지 정책 만들기
새 위협 탐지 정책을 만들어 IBM Cloud 환경에서 의심스러운 활동을 탐지하고 이에 대응할 수 있습니다. 정책은 규칙을 적용할 위치와 Slack, Microsoft Teams, 이메일 또는 인시던트 관리 도구로 알림을 보내는 등 보안 위반에 대응하는 방법을 지정합니다.
위협 탐지 정책을 만들려면 다음 단계를 따르세요:
위협 탐지 규칙 만들기
다음 콘텐츠를 복사하여 정책 > 탐지 및 대응 정책 > 규칙 편집기의 Custom Rules 에 붙여넣고 Save 을 클릭합니다.
- required_engine_version: 51
- rule: IBM Cloud IAM Policy Deleted
desc: >
Detects successful deletion of an IAM access policy. Removing policies
weakens authorization controls and may indicate an attacker impairing
defenses. Filters to outcome=success since failed deletions do not
change security posture.
condition: >
jevt.value[/action] = "iam-am.policy.delete"
and jevt.value[/outcome] = "success"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
IAM policy %ibm.target.name was deleted by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: WARNING
source: ibm_activitytracker
tags: [ibm, iam, defense-evasion, T1562.001]
- rule: IBM Cloud IAM Service ID Deleted
desc: >
Detects successful deletion of an IAM service ID. Removing a service ID
destroys a non-human identity along with its associated policies and API
keys, denying access to any workloads or users that depended on it.
Filters to outcome=success since failed deletions do not change security
posture.
condition: >
jevt.value[/action] = "iam-identity.account-serviceid.delete"
and jevt.value[/outcome] = "success"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
Service ID %ibm.target.name was deleted by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: NOTICE
source: ibm_activitytracker
tags: [ibm, iam, impact, T1531]
- rule: IBM Cloud IAM Service ID API Key Created
desc: >
Detects creation of an API key on a service ID. Service ID API keys
are a persistence technique -- they are stealthier than user API keys
since service IDs typically receive less scrutiny.
condition: >
jevt.value[/action] = "iam-identity.serviceid-apikey.create"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
An API key %ibm.target.name was created by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: WARNING
source: ibm_activitytracker
tags: [ibm, iam, persistence, T1098.001]
- rule: IBM Cloud IAM User API Key Created
desc: >
Detects creation of a user API key. User API keys grant persistent
access that survives session expiration, making them a common
persistence mechanism for maintaining access to IBM Cloud.
condition: >
jevt.value[/action] = "iam-identity.user-apikey.create"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
A user API key %ibm.target.name was created by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: WARNING
source: ibm_activitytracker
tags: [ibm, iam, persistence, T1098.001]
- rule: IBM Cloud IAM Service ID Created
desc: >
Detects creation of a new IAM service ID. Service IDs are non-human
identities that can hold their own policies and API keys. Creating
one establishes a new identity that can be used for persistent access.
condition: >
jevt.value[/action] = "iam-identity.account-serviceid.create"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
Service ID %ibm.target.name was created by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: NOTICE
source: ibm_activitytracker
tags: [ibm, iam, persistence, T1136.003]
- rule: IBM Cloud IAM Account Settings Updated
desc: >
Detects updates to IAM account-wide security settings. These settings
control MFA policy, session lifetimes, IP restrictions, and allowed
authentication methods for the entire account. Changes weaken the
security posture for every identity in the account.
condition: >
jevt.value[/action] = "iam-identity.account-settings.update"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
IAM account settings were updated by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: WARNING
source: ibm_activitytracker
tags: [ibm, iam, defense-evasion, T1562]
- rule: IBM Cloud IAM Access Group Settings Updated
desc: >
Detects updates to IAM access group settings. These settings control
who can create access groups and whether groups can be made public.
Loosening these restrictions enables broader group membership or
unauthorized group creation, expanding access beyond intended scope.
condition: >
jevt.value[/action] = "iam-groups.account-settings.update"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
IAM access group settings were updated by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: NOTICE
source: ibm_activitytracker
tags: [ibm, iam, persistence, T1098]
- rule: IBM Cloud IAM User API Key Deleted
desc: >
Detects deletion of a user API key. Deleting API keys used during
an attack removes evidence of the credential that was used. Pairs
with the User API Key Created rule to track the full lifecycle of
user credentials.
condition: >
jevt.value[/action] = "iam-identity.user-apikey.delete"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
A user API key was deleted by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: NOTICE
source: ibm_activitytracker
tags: [ibm, iam, defense-evasion, T1070]
- rule: IBM Cloud User Removed
desc: >
Detects removal of a user from the IBM Cloud account. Removing a
user locks out defenders and legitimate admins. This is irreversible
without re-inviting the user. Denies access to legitimate responders
during an incident.
condition: >
jevt.value[/action] = "user-management.user.delete"
and jevt.value[/outcome] = "success"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
A user was removed from the account by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: WARNING
source: ibm_activitytracker
tags: [ibm, user-management, defense-evasion, T1531]
- rule: IBM Cloud User Settings Updated
desc: >
Detects updates to individual user settings. These settings control
a user's IP restrictions and allowed authentication methods. Changing
them weakens security controls at the individual user level, enabling
access from previously restricted locations or methods.
condition: >
jevt.value[/action] = "user-management.user.update"
and jevt.value[/outcome] = "success"
exceptions:
- name: user_action
fields: ["ibm.initiator.id", "ibm.action"]
- name: user_account
fields: ["ibm.initiator.id", "ibm.accountId"]
- name: user_target
fields: ["ibm.initiator.id", "ibm.target.id"]
- name: user_action_contains
fields: ["ibm.initiator.id", "ibm.action"]
comps: [contains, "="]
output: >
User settings were updated by %ibm.initiator.name
(user=%ibm.initiator.name,
user_id=%ibm.initiator.id,
credential=%ibm.initiator.credential.type,
source_ip=%ibm.initiator.host.address,
target=%ibm.target.name,
target_id=%ibm.target.id,
action=%ibm.action,
outcome=%ibm.outcome,
message=%ibm.message,
account=%ibm.accountId,
region=%ibm.region)
priority: NOTICE
source: ibm_activitytracker
tags: [ibm, user-management, defense-evasion, T1562]
이 규칙은 Cloud Identity and Access Management 을 대상으로 의심스러운 활동과 열악한 보안 위생을 탐지하기 위한 예시입니다.
다음에서 모든 규칙 참조 및 세부 정보를 확인하세요. IBM Cloud CDR 위협 탐지 규칙에 대한 참조 라이브러리
위협 탐지 정책 만들기 및 사용 설정
정책 > 탐지 및 응답 정책 > 런타임 정책으로 이동하여 Add Policy 을 클릭합니다. IBM Activity Tracker 정책을 선택합니다.
정책 규칙에서 Managed & Import 을 클릭하여 사용하려는 규칙을 선택합니다.
이메일 또는 Slack 채널 알림과 같이 정책 규칙을 위반한 경우 취할 조치를 정의합니다. 이 단계 전에 알림 채널을 만들어야 합니다.
정책을 활성화하고 저장합니다.