Consentire il rilevamento e la risposta per IBM Cloud

Cloud Detection and Response (CDR) vi aiuta a indagare quasi in tempo reale sulle attività sospette nei vostri account cloud. Workload Protection è in grado di ingerire e analizzare i log di audit di IBM Cloud per individuare potenziali minacce.

Il modulo di rilevamento e risposta di Workload Protection supporta IBM Cloud, ambienti multi-cloud ( Amazon Web Services, Azure e Google Cloud ), host interni, macchine virtuali (VSI per VPC, VMware, PowerVS e IBM Z con Linux ), Kubernetes e OpenShift.

Il CDR monitora i carichi di lavoro e le attività del cloud in tempo reale, rileva le minacce utilizzando regole curate e tecniche comportamentali per identificare un'ampia gamma di attacchi come l'escalation dei privilegi e il movimento laterale.

Con il CDR, le organizzazioni possono rilevare e rispondere alle minacce più rapidamente, riducendo l'impatto degli incidenti di sicurezza e minimizzando i tempi di inattività.

Dopo aver completato l'abilitazione del rilevamento e della risposta per l'account IBM Cloud, vedere Creazione del criterio di rilevamento delle minacce IBM Cloud per definire i rilevamenti desiderati per l'ambiente.

IBM Cloud Architettura di rilevamento e risposta

CDR per il diagramma dell'architettura IBM Cloud
CDR per l'architettura IBM Cloud

L'integrazione del CDR per IBM Cloud utilizza il seguente flusso di dati:

  1. Gli utenti e le applicazioni generano eventi di audit con le azioni dell'account IBM Cloud. Tutte le creazioni, le rimozioni o gli aggiornamenti sono registrati e tracciati.

  2. Activity Tracker Event Routing cattura gli eventi di audit generati dall'account IBM Cloud e li indirizza a un bucket IBM Cloud Object Storage attraverso una destinazione e un percorso configurati.

  3. IBM Cloud Object Storage memorizza gli eventi di auditing da Activity Tracker Event Routing. Un abbonamento agli eventi IBM Cloud Object Storage monitora il bucket e attiva un'applicazione Code Engine ogni volta che viene scritto un nuovo file di eventi.

  4. Code Engine esegue l'applicazione di notifica CDR, che legge i file di eventi dal bucket Object Storage utilizzando un profilo di fiducia per l'autenticazione e inoltra gli eventi all'endpoint di ingestione Workload Protection.

  5. Workload Protection riceve e analizza gli eventi inoltrati in tempo quasi reale, applicando regole di rilevamento per identificare minacce come l'escalation dei privilegi, il movimento laterale e l'attività API sospetta.

La connessione tra i componenti è protetta da due oggetti IAM: un profilo fidato, che garantisce all'identità dell'istanza Workload Protection l'accesso alla lettura del bucket Object Storage; e un Service ID con una chiave API, che autentica l'applicazione Code Engine quando inoltra gli eventi all'endpoint di ingestione Workload Protection.

Prerequisiti

Prima di iniziare, assicurarsi che i seguenti servizi e permessi siano disponibili nell'account IBM Cloud.

  • Un'istanza Workload Protection esistente e il suo CRN. In seguito si farà riferimento a <workload-protection-instance-crn>. Per ulteriori informazioni, consultare la sezione " Configurazione di Workload Protection ".
  • Il vostro Workload Protection deve avere il CSPM abilitato per il vostro account IBM Cloud. Per ulteriori informazioni, vedere Implementazione del CSPM per IBM Cloud
  • Permessi per gestire i seguenti servizi nell'account IBM Cloud:
    • Activity Tracker Event Routing: Ruolo della piattaforma Editor o Amministratore.
    • IBM Cloud Object Storage: Ruolo del servizio Manager sull'istanza.
    • Identità IAM (gestione degli account): Ruolo di amministratore per creare ID servizio, chiavi API e profili affidabili.
    • Gestione degli accessi IAM (gestione degli account): Ruolo di amministratore per creare politiche IAM e autorizzazioni da servizio a servizio.
    • Code Engine: Ruolo di servizio dell'editore o del manager.
    • Container Registry: Ruolo del servizio di lettura - necessario per consentire a Code Engine di estrarre l'immagine dell'applicazione CDR.
    • Workload Protection: Ruolo di piattaforma Editor o Amministratore sull'istanza.

Configurare l'integrazione c Activity Tracker Event Routing

Il flusso di lavoro invia eventi di auditing da Activity Tracker Event Routing a Object Storage, che attiva un'applicazione Code Engine per inoltrare gli eventi a Workload Protection per l'ingestione e l'analisi.

Configurare una destinazione IBM Cloud Object Storage

IBM Cloud Object Storage è utilizzato come target per gli eventi di Activity Tracker Event Routing. Questi eventi saranno successivamente raccolti da Workload Protection per analizzare potenziali attività sospette.

Seguire le istruzioni per la configurazione di un target Cloud Object Storage.

Dopo aver configurato il target, salvare i seguenti valori che verranno utilizzati nelle fasi successive:

  • Il sito Object Storage nome dell'istanza. Il riferimento è a <your_cos_instance_name>.

  • Il nome del bucket " Object Storage ". Il riferimento è a <cos_bucket_name>.

  • La regione del secchio Object Storage. Il riferimento è a <cos_bucket_region>.

    Quando si configura il percorso Activity Tracker Event Routing, assicurarsi che la regola di percorso includa la posizione global oltre alla regione di distribuzione. Gli eventi IAM, come le modifiche alle impostazioni dell'account, le modifiche MFA, le eliminazioni di criteri e le modifiche alle restrizioni basate sul contesto, vengono generati come eventi globali e non vengono instradati a meno che non si includa esplicitamente global.

    Senza la posizione global, gli eventi di mutazione IAM non raggiungeranno il bucket Object Storage e non saranno analizzati da Workload Protection.

Crea un ID servizio e una chiave API

Creare l'ID del servizio e una chiave API per l'applicazione Code Engine per inviare eventi all'istanza Workload Protection.

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"

Salvare la chiave API generata e l'identificativo del Service ID (il valore ServiceId-xxx restituito dal primo comando). Entrambi saranno utilizzati nelle fasi successive.

Concedere al Service ID Reader l'accesso a IBM Cloud® Container Registry in modo che Code Engine possa estrarre l'immagine dell'applicazione CDR:

ibmcloud iam service-policy-create send-cdr-events-id --roles Reader --service-name container-registry

Creare il profilo di fiducia per la lettura degli eventi Object Storage

Creare il profilo di fiducia (è possibile modificare il nome). Salvare il sito ID per utilizzarlo in seguito. In seguito si farà riferimento a <trusted_profile_id>:

ibmcloud iam trusted-profile-create ibmcdr-wp-cos --description "Trusted profile for Workload Protection interaction with Cloud Object Storage bucket"

Assegnare la relazione di fiducia per l'istanza Workload Protection. Sostituire <workload-protection-instance-crn> con il proprio CRN Workload Protection:

ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <workload-protection-instance-crn> --id-type CRN

Assegnare la relazione di fiducia per l'ID servizio creato nel passaggio 2. Sostituire <service_id> con l'identificativo del Service ID (ServiceId-xxx):

ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <service_id> --id-type serviceid

Creare il criterio per il profilo attendibile del lettore IBM Cloud Object Storage. Sostituite <cos_bucket_name> con il nome del bucket creato al punto 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>

Creare il criterio per il profilo di fiducia per l'accesso all'ID servizio CDR. Sostituire <service_id> con l'ID del servizio creato al punto 2:

ibmcloud iam trusted-profile-policy-create ibmcdr-wp-cos -r Viewer --service-name iam-identity --resource-type serviceid --resource <service_id>

Creare il progetto Code Engine e i segreti

Creare un segreto in Code Engine per iniettare la chiave api in modo sicuro

Crea il tuo progetto " Code Engine ":

ibmcloud ce project create --name <code_engine_project>

Creare il Segreto per l'applicazione (sarà usato come variabile). Sostituire <your_api_key> con la chiave generata nel passaggio precedente:

ibmcloud ce secret create --name cdr-secrets --from-literal API_KEY=<your_api_key>

Creare il segreto per estrarre le immagini da Container Registry. Sostituire <your_api_key> con la chiave generata nel passaggio precedente:

ibmcloud ce secret create --name icr-secret --format registry --server icr.io --username iamapikey --password <your_api_key> --email noreply@cdr-app.ibm.cloud

Creare l'applicazione Code Engine

Assicuratevi di sostituire le seguenti variabili nel comando:

  • <target_account_id> con l'ID dell'account IBM Cloud.
  • <trusted_profile_id> con il profilo di fiducia creato al punto 3.
  • <environment_url> con l'endpoint Workload Protection per la vostra regione. Ad esempio, se l'istanza è a Dallas, sostituire <environment_url> con us-south.security-compliance-secure.cloud.ibm.com.
  • <service_id> con l'ID servizio creato al punto 2.
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

La tabella seguente descrive i parametri chiave utilizzati nel comando:

Code Engine parametri di applicazione
Parametro Descrizione
--name Nome dell'applicazione Code Engine.
--image L'immagine dell'applicazione di notifica del CDR è ospitata su IBM Cloud Container Registry. Dovrebbe essere sempre icr.io/ext/sysdig/cdr-notification-app:latest
--min-scale Numero minimo di istanze attive. Impostare su 1 per garantire che l'applicazione sia sempre pronta a ricevere gli eventi di Object Storage.
--max-scale Numero massimo di istanze che l'applicazione può scalare sotto carico.
--cpu / --memory Risorse di calcolo allocate per istanza.
--request-timeout Tempo massimo in secondi in cui l'applicazione deve elaborare una richiesta in arrivo prima di andare in timeout.
TARGET_ACCOUNT_ID L'ID del conto IBM Cloud i cui eventi di auditing vengono inoltrati tramite Activity Tracker Event Routing.
TRUSTED_PROFILE_ID L'ID di trofeo fidato creato al punto 3, utilizzato dall'applicazione per autenticarsi su Object Storage senza credenziali a lunga durata.
FORWARD_URL L'endpoint di ingestione Workload Protection URL, compreso l'ID del servizio come token di identità.
--env-from-secret cdr-secrets Inietta la chiave API di Service ID nell'applicazione come variabile d'ambiente dal segreto Code Engine creato nel passaggio 4.
--registry-secret icr-secret Credenziali di registro che consentono a Code Engine di prelevare l'immagine dell'applicazione da IBM Cloud Container Registry.

Collegare il secchio IBM Cloud Object Storage a Code Engine

Impostare una sottoscrizione agli eventi per collegare gli eventi del bucket Object Storage a Code Engine.

Concedere le autorizzazioni per garantire che Code Engine possa gestire le notifiche sull'istanza Object Storage. Sostituite <code_engine_project> con il progetto Code Engine creato al punto 4 e <your_cos_instance_name> con il nome dell'istanza IBM Cloud Object Storage creata al punto 1:

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>

Creare una sottoscrizione per garantire che ogni volta che Activity Tracker Event Routing archivia un file di log nel bucket, l'applicazione venga attivata. Sostituire <cos_bucket_name> con il nome del secchio del punto 1:

ibmcloud ce subscription cos create --name cdr-cos-sub \
   --bucket <cos_bucket_name> \
   --destination sccwp-cdr-app \
   --event-type write

Abilitare il CDR per il proprio account in Protezione del carico di lavoro

Assicuratevi di sostituire le seguenti variabili nel comando:

  • <wp_instance_name> con il nome dell'istanza Workload Protection o il GUID. L'uso del GUID è consigliato per evitare ambiguità se più istanze condividono lo stesso nome.
  • <cos_bucket_region> con la regione del secchio Object Storage creata al punto 1.
  • <cos_bucket_name> con il nome del bucket Object Storage creato al passo 1.
  • <trusted_profile_id> con l'ID del profilo di fiducia salvato al punto 3.
  • <environment_url> con l'endpoint Workload Protection per la vostra regione.
  • <service_id> con l'identificativo dell'ID servizio (il valore ServiceId-xxx ) dal passaggio 2.
  • <target_account_id> con l'ID dell'account IBM Cloud.
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

Se si verifica un errore, rivedere Perché il mio account IBM Cloud non ingerisce gli eventi di audit.

Creazione del criterio IBM Cloud Threat Detection

È possibile creare un nuovo criterio di rilevamento delle minacce per rilevare e rispondere alle attività sospette negli ambienti IBM Cloud. Le policy specificano dove applicare le regole e come rispondere alle violazioni della sicurezza, ad esempio inviando notifiche a Slack, Microsoft Teams, e-mail o a uno strumento di gestione degli incidenti.

Per creare un criterio di rilevamento delle minacce, procedere come segue:

Creare le regole di rilevamento delle minacce

Copiare il seguente contenuto e incollarlo in Custom Rules in Criteri > Criteri di rilevamento e risposta > Editor regole e fare clic su 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]

Queste regole sono un esempio di rilevamento di attività sospette e di scarsa igiene della sicurezza, che hanno come obiettivo Cloud Identity and Access Management.

Trovate tutti i riferimenti e i dettagli delle regole nella Libreria di riferimento per le regole di rilevamento delle minacce CDR di IBM Cloud.

Creare e attivare il criterio di rilevamento delle minacce

Accedere a Criteri > Criteri di rilevamento e risposta > Criteri di runtime e fare clic su Add Policy. Selezionare il criterio IBM Activity Tracker.

Scegliere le regole da utilizzare facendo clic su Managed & Import sotto Regole dei criteri.

Definire le azioni da intraprendere in caso di violazione delle regole del criterio, ad esempio notificare un'e-mail o un canale Slack. Il canale di notifica deve essere creato prima di questo passaggio.

Attivare e salvare il criterio.