検出と対応を可能にする IBM Cloud

Cloud Detection and Response (CDR)は、クラウド・ アカウント不審なアクティビティをほぼリアルタイムで調査するのに役立ちます。 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 検出と応答のアーキテクチャ

CDR for IBM Cloud アーキテクチャ図
CDR for IBM Cloud アーキテクチャ図

IBM Cloud、CDRインテグレーションは以下のデータフローを使用する:

  1. ユーザーとアプリケーションは、 IBM Cloud アカウントアクションで監査イベントを生成します。 すべての作成、削除、更新は記録され、追跡されます。

  2. Activity Tracker Event RoutingIBM Cloud アカウント全体で生成された監査イベントをキャプチャし、設定されたターゲットとルートを通じて IBM Cloud Object Storage バケットにルーティングします。

  3. IBM Cloud Object StorageActivity Tracker Event Routing からの監査イベントを保存します。 IBM Cloud Object Storage イベントサブスクリプションはバケットを監視し、新しいイベントファイルが書き込まれるたびに Code Engine アプリケーションをトリガーする。

  4. Code Engine CDR通知アプリケーションは、認証のために信頼できるプロファイルを使用して Object Storage バケットからイベントファイルを読み取り、 Workload Protection インジェスト・エンドポイントにイベントを転送する。

  5. Workload Protection 転送されたイベントをほぼリアルタイムで受信・分析し、検知ルールを適用して特権の昇格、横移動、不審なAPIアクティビティなどの脅威を特定します。

コンポーネント間の接続は、2つのIAMオブジェクトを使用して保護される。 Workload Protection インスタンスIDに、 Object Storage バケットから読み込むためのアクセス権を付与するTrusted Profileと、 Workload Protection インジェストエンドポイントにイベントを転送する際に Code Engine アプリケーションを認証する、APIキーを持つ Service ID である。

前提条件

作業を始める前に、 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 Identity アカウント管理): サービスID、APIキー、信頼されたプロファイルを作成 する管理者ロール。
    • IAMアクセス管理アカウント管理):IAMポリシーとサービス間権限を作成する管理者ロール。
    • Code Engine:編集者またはマネージャー
    • Container Registry:リーダー・サービスの役割 - Code Engine が CDR アプリケーション・イメージをプルするために必要。
    • Workload Protection:インスタンスのEditorまたはAdministratorプラットフォームのロール。

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 キーの作成

Code Engine アプリケーションが Workload Protection インスタンスにイベントを送信するための Service 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 アプリケーション・イメージを引き出せるように、Service ID Reader に 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

次の表は、コマンドで使用される主なパラメーターを説明したものである:

Code Engine アプリケーションパラメータ
パラメーター 説明
--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で作成された信頼できるtrofile IDで、アプリが長期間の認証情報を持たない Object Storage に対して認証するために使用されます。
FORWARD_URL Workload Protection インジェストエンドポイント URL、IDトークンとしてサービス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、電子メール、インシデント管理ツールへの通知など、ルールの適用先やセキュリティ違反への対応方法を指定する。

脅威検出ポリシーを作成するには、以下の手順に従ってください:

脅威検知ルールの作成

以下の内容をコピーし、「Policies」 > 「Detection & Response Policies」 > 「Rules Editor」の「 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 脅威検出ルールのリファレンスライブラリで、すべてのルールのリファレンスと詳細をご覧ください

脅威検出ポリシーを作成し、有効にする

Policies > Detection & Response Policies > Runtime Policies に進み、 Add Policy をクリックする。 IBM Activity Tracker ポリシーを選択します。

Policy Rulesの下にある Managed & Import をクリックして、使用するルールを選択します。

メールやSlackチャンネルへの通知など、ポリシールールに違反した場合のアクションを定義します。 通知チャネルは、このステップの前に作成する必要があります。

ポリシーを有効にして保存します。