Permettre la détection et l'intervention en cas de IBM Cloud
Cloud Detection and Response (CDR) vous aide à enquêter en temps quasi réel sur les activités suspectes dans vos comptes cloud. Workload Protection peut ingérer et analyser les journaux d'audit de IBM Cloud pour détecter les menaces potentielles.
Le module de détection et de réponse Workload Protection prend en charge IBM Cloud, les environnements multicloud ( Amazon Web Services, Azure et Google Cloud ), les hôtes internes, les machines virtuelles (VSI pour VPC, VMware, PowerVS et IBM Z avec Linux ), Kubernetes, et OpenShift.
CDR surveille en temps réel les charges de travail et l'activité dans les nuages, détecte les menaces à l'aide de règles éprouvées et de techniques comportementales afin d'identifier un large éventail d'attaques telles que l'escalade des privilèges et les mouvements latéraux.
Grâce au CDR, les entreprises peuvent détecter les menaces et y répondre plus rapidement, ce qui permet de réduire l'impact des incidents de sécurité et de minimiser les temps d'arrêt.
Après avoir activé la détection et la réponse pour votre compte IBM Cloud, consultez la rubrique Création d'une politique de détection des menaces IBM Cloud pour définir les détections que vous souhaitez pour votre environnement.
IBM Cloud Architecture de détection et de réponse
L'intégration CDR pour IBM Cloud utilise le flux de données suivant :
-
Les utilisateurs et les applications génèrent des événements d'audit avec les actions du compte IBM Cloud. Toutes les créations, suppressions ou mises à jour sont enregistrées et suivies.
-
Activity Tracker Event Routing capture les événements d'audit générés par votre compte IBM Cloud et les achemine vers un seau IBM Cloud Object Storage par le biais d'une cible et d'un itinéraire configurés.
-
IBM Cloud Object Storage stocke les événements d'audit sur Activity Tracker Event Routing. Un abonnement aux événements IBM Cloud Object Storage surveille le seau et déclenche une application Code Engine chaque fois qu'un nouveau fichier d'événement est écrit.
-
Code Engine exécute l'application de notification CDR, qui lit les fichiers d'événements à partir du panier Object Storage en utilisant un profil de confiance pour l'authentification, et transmet les événements au point final d'ingestion Workload Protection.
-
Workload Protection reçoit et analyse les événements transmis en temps quasi réel, en appliquant des règles de détection pour identifier les menaces telles que l'escalade des privilèges, les mouvements latéraux et les activités API suspectes.
La connexion entre les composants est sécurisée à l'aide de deux objets IAM : un profil de confiance, qui accorde à l'identité de l'instance Workload Protection l'accès à la lecture du seau Object Storage; et un identifiant de service avec une clé API, qui authentifie l'application Code Engine lors de la transmission d'événements au point de terminaison d'ingestion Workload Protection.
Prérequis
Avant de commencer, assurez-vous que les services et autorisations suivants sont disponibles dans votre compte IBM Cloud.
- Une instance Workload Protection existante et son CRN. Il sera référencé plus loin sous le nom de
<workload-protection-instance-crn>. Pour plus d'informations, consultez la section « Configuration d' Workload Protection ». - Votre Workload Protection doit avoir activé la GPSC pour votre compte IBM Cloud. Pour plus d'informations, voir Mise en œuvre de la GPSC pour IBM Cloud
- Permissions de gérer les services suivants dans votre compte IBM Cloud:
- Activity Tracker Event Routing: Rédacteur ou Administrateur rôle de la plateforme.
- IBM Cloud Object Storage: Rôle de service du gestionnaire sur l'instance.
- IAM Identity (gestion des comptes): Rôle d'administrateur permettant de créer des identifiants de service, des clés API et des profils de confiance.
- Gestion des accès IAM (gestion des comptes): Rôle d'administrateur pour créer des politiques IAM et des autorisations de service à service.
- Code Engine: Rôle de service du rédacteur ou du gestionnaire.
- Container Registry: Rôle de service de lecture - nécessaire pour que Code Engine puisse extraire l'image de l'application CDR.
- Workload Protection: Rôle d'éditeur ou d'administrateur sur l'instance.
Configurer l'intégration d' Activity Tracker Event Routing
Le flux de travail envoie des événements d'audit de Activity Tracker Event Routing à Object Storage, ce qui déclenche une application Code Engine qui transmet les événements à Workload Protection pour ingestion et analyse.
Configurer une cible IBM Cloud Object Storage
IBM Cloud Object Storage est utilisé comme cible pour les événements Activity Tracker Event Routing. Ces événements seront ensuite collectés par Workload Protection afin d'analyser les activités suspectes potentielles.
Suivez les instructions pour la configuration d'une cible Cloud Object Storage.
Après avoir configuré la cible, enregistrez les valeurs suivantes qui seront utilisées dans les étapes suivantes :
-
Le nom de l'instance Object Storage. Il sera référencé comme
<your_cos_instance_name>. -
Le nom du seau Object Storage. Il sera référencé comme
<cos_bucket_name>. -
La région du seau Object Storage. Il sera référencé comme
<cos_bucket_region>.Lorsque vous configurez l'itinéraire Activity Tracker Event Routing, assurez-vous que la règle d'itinéraire inclut l'emplacement
globalen plus de votre région de déploiement. Les événements IAM tels que les modifications de paramètres de compte, les modifications MFA, les suppressions de politiques et les modifications de restrictions basées sur le contexte sont générés en tant qu'événements globaux et ne sont pas acheminés à moins queglobalne soit explicitement inclus.Sans l'emplacement
global, les événements de mutation IAM n'atteindront pas le seau Object Storage et ne seront pas analysés par Workload Protection.
Créer un ID de service et une clé d'API
Créez l'identifiant de service et une clé API pour que l'application Code Engine envoie des événements à votre instance 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"
Enregistrez la clé API générée et l'identifiant Service ID (la valeur ServiceId-xxx renvoyée par la première commande). Les deux seront utilisés dans les étapes suivantes.
Autoriser le lecteur d'identifiant de service à accéder au site IBM Cloud® Container Registry afin que Code Engine puisse extraire l'image de l'application CDR :
ibmcloud iam service-policy-create send-cdr-events-id --roles Reader --service-name container-registry
Créer le profil de confiance pour lire les événements Object Storage
Créez le profil de confiance (vous pouvez modifier le nom). Enregistrez le site ID pour l'utiliser ultérieurement. Il sera référencé plus loin sous le nom de <trusted_profile_id>:
ibmcloud iam trusted-profile-create ibmcdr-wp-cos --description "Trusted profile for Workload Protection interaction with Cloud Object Storage bucket"
Attribuer la relation de confiance pour l'instance Workload Protection. Remplacez <workload-protection-instance-crn> par votre CRN Workload Protection:
ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <workload-protection-instance-crn> --id-type CRN
Attribuer la relation de confiance pour l'ID de service créé à l'étape 2. Remplacer <service_id> par l'identifiant du Service ID (ServiceId-xxx):
ibmcloud iam trusted-profile-identity-create ibmcdr-wp-cos --id <service_id> --id-type serviceid
Créez la politique du profil de confiance pour le lecteur IBM Cloud Object Storage. Remplacez <cos_bucket_name> par le nom du seau créé à l'étape 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>
Créez la politique du profil de confiance pour l'accès à l'ID de service CDR. Remplacez <service_id> par l'identifiant de service créé à l'étape 2 :
ibmcloud iam trusted-profile-policy-create ibmcdr-wp-cos -r Viewer --service-name iam-identity --resource-type serviceid --resource <service_id>
Créer Code Engine Projet et secrets
Créez un secret dans Code Engine pour injecter la clé d'api en toute sécurité
Créez votre projet Code Engine :
ibmcloud ce project create --name <code_engine_project>
Créez le secret de l'application (il sera utilisé comme variable). Remplacez <your_api_key> par la clé générée à l'étape précédente :
ibmcloud ce secret create --name cdr-secrets --from-literal API_KEY=<your_api_key>
Créer le secret pour extraire les images de Container Registry. Remplacez <your_api_key> par la clé générée à l'étape précédente :
ibmcloud ce secret create --name icr-secret --format registry --server icr.io --username iamapikey --password <your_api_key> --email noreply@cdr-app.ibm.cloud
Créer une application Code Engine
Veillez à remplacer les variables suivantes dans la commande :
<target_account_id>avec l'identifiant du compte IBM Cloud.<trusted_profile_id>avec le profil de confiance créé à l'étape 3.<environment_url>avec l'adresse Workload Protection pour votre région. Par exemple, si votre instance se trouve à Dallas, remplacez<environment_url>parus-south.security-compliance-secure.cloud.ibm.com.<service_id>avec l'identifiant de service créé à l'étape 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
Le tableau suivant décrit les paramètres clés utilisés dans la commande :
| Paramètre | Description |
|---|---|
--name |
Nom de l'application Code Engine. |
--image |
L'image de l'application de notification du PCEM est hébergée sur IBM Cloud Container Registry. Il devrait toujours être icr.io/ext/sysdig/cdr-notification-app:latest |
--min-scale |
Nombre minimum d'instances en cours d'exécution. La valeur 1 permet de s'assurer que l'application est toujours prête à recevoir les événements Object Storage. |
--max-scale |
Nombre maximum d'instances que l'application peut prendre en charge. |
--cpu / --memory |
Ressources informatiques allouées par instance. |
--request-timeout |
Temps maximum en secondes dont dispose l'application pour traiter une demande entrante avant qu'elle ne se termine. |
TARGET_ACCOUNT_ID |
L'ID du compte IBM Cloud dont les événements d'audit sont transmis via Activity Tracker Event Routing. |
TRUSTED_PROFILE_ID |
L'ID du fichier de confiance créé à l'étape 3, utilisé par l'application pour s'authentifier auprès de Object Storage en l'absence d'informations d'identification à long terme. |
FORWARD_URL |
Le point final d'ingestion Workload Protection URL, y compris l'identifiant du service en tant que jeton d'identité. |
--env-from-secret cdr-secrets |
Injecte la clé API Service ID dans l'application en tant que variable d'environnement à partir du secret Code Engine créé à l'étape 4. |
--registry-secret icr-secret |
Informations d'identification du registre permettant à Code Engine d'obtenir l'image de l'application à partir de IBM Cloud Container Registry. |
Connectez IBM Cloud Object Storage Bucket à Code Engine
Créez un abonnement aux événements pour connecter les événements du seau Object Storage à Code Engine.
Accordez des autorisations pour que Code Engine puisse gérer les notifications sur l'instance Object Storage. Remplacez <code_engine_project> par le projet Code Engine créé à l'étape 4 et <your_cos_instance_name> par le nom de l'instance IBM Cloud Object Storage créée à l'étape 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>
Créer un abonnement pour s'assurer qu'à chaque fois que Activity Tracker Event Routing archive un fichier journal dans le seau, l'application est déclenchée. Remplacez <cos_bucket_name> par le nom du seau de l'étape 1 :
ibmcloud ce subscription cos create --name cdr-cos-sub \
--bucket <cos_bucket_name> \
--destination sccwp-cdr-app \
--event-type write
Activer le CDR pour votre compte dans la protection de la charge de travail
Veillez à remplacer les variables suivantes dans la commande :
<wp_instance_name>avec votre nom d'instance Workload Protection ou votre GUID. L'utilisation du GUID est recommandée pour éviter toute ambiguïté si plusieurs instances partagent le même nom.<cos_bucket_region>avec la région du seau Object Storage créée à l'étape 1.<cos_bucket_name>avec le nom du seau Object Storage créé à l'étape 1.<trusted_profile_id>avec l'identifiant du profil de confiance enregistré à l'étape 3.<environment_url>avec l'adresse Workload Protection pour votre région.<service_id>avec l'identifiant Service ID (la valeurServiceId-xxx) de l'étape 2.<target_account_id>avec l'identifiant du compte 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
En cas d'erreur, consultez la rubrique Pourquoi mon compte IBM Cloud n'a-t-il pas intégré les événements d'audit?
Création de la politique de détection des menaces IBM Cloud
Vous pouvez créer une nouvelle politique de détection des menaces pour détecter et répondre aux activités suspectes dans vos environnements IBM Cloud. Les politiques précisent où appliquer les règles et comment répondre aux violations de sécurité, par exemple en envoyant des notifications à Slack, Microsoft Teams, par courriel ou à un outil de gestion des incidents.
Pour créer une politique de détection des menaces, procédez comme suit :
Créer les règles de détection des menaces
Copiez le contenu suivant et collez-le sous Custom Rules sous Politiques > Politiques de détection et de réponse > Éditeur de règles et cliquez sur 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]
Ces règles sont des exemples de détection d'activités suspectes et d'une mauvaise hygiène de sécurité ciblant Cloud Identity and Access Management.
Retrouvez toutes les références et les détails des règles dans la Bibliothèque de référence pour les règles de détection des menaces du CDR IBM Cloud
Créer et activer la politique de détection des menaces
Allez dans Politiques > Politiques de détection et de réponse > Politiques d'exécution et cliquez sur Add Policy. Sélectionnez la politique IBM Activity Tracker.
Choisissez les règles que vous souhaitez utiliser en cliquant sur Managed & Import sous Policy Rules.
Définir les actions à entreprendre en cas de violation des règles de la politique, par exemple notifier un courriel ou un canal Slack. Le canal de notification doit être créé avant cette étape.
Activer et enregistrer la politique.