Collecter les journaux SecureAuth Identity Platform
Ce document explique comment ingérer les journaux SecureAuth Identity Platform dans Google Security Operations à l'aide de l'agent Bindplane.
SecureAuth Identity Platform est une solution d'authentification unique et de gestion des identités qui génère des messages syslog pour les événements d'authentification, l'activité des sessions, les décisions de contrôle des accès et les journaux d'audit. L'analyseur extrait les champs des journaux au format syslog et XML à l'aide de modèles Grok, puis les mappe au modèle de données unifié (UDM).
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Windows Server 2016 ou version ultérieure, ou hôte Linux avec
systemd - Connectivité réseau entre l'agent Bindplane et SecureAuth Identity Platform
- Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
- Accès privilégié à SecureAuth
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sc query observiq-otel-collectorLe service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe service doit être indiqué comme actif (en cours d'exécution).
Ressources d'installation supplémentaires
Pour obtenir d'autres options d'installation et des conseils de dépannage, consultez le guide d'installation de l'agent Bindplane.
Configurer le syslog et l'envoyer à Google SecOps
Localiser le fichier de configuration
Linux :
sudo nano /opt/observiq-otel-collector/config.yamlWindows :
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifiez le fichier de configuration
Remplacez l'intégralité du contenu de
config.yamlpar la configuration suivante :receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/secureauth_sso: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SECUREAUTH_SSO raw_log_field: body service: pipelines: logs/secureauth_sso_to_chronicle: receivers: - udplog exporters: - chronicle/secureauth_sso
Paramètres de configuration
Remplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port à écouter :0.0.0.0pour écouter sur toutes les interfaces (recommandé)- Le port
514est le port syslog standard (nécessite la racine sous Linux ; utilisez1514pour les utilisateurs non root).
Configuration de l'exportateur :
creds_file_path: chemin d'accès complet au fichier d'authentification de l'ingestion :- Linux :
/etc/bindplane-agent/ingestion-auth.json - Windows :
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux :
customer_id: ID client copié depuis la console Google SecOpsendpoint: URL du point de terminaison régional :- États-Unis :
malachiteingestion-pa.googleapis.com - Europe :
europe-malachiteingestion-pa.googleapis.com - Asie :
asia-southeast1-malachiteingestion-pa.googleapis.com - Pour obtenir la liste complète, consultez Points de terminaison régionaux.
- États-Unis :
Enregistrez le fichier de configuration.
- Après avoir modifié le fichier, enregistrez-le :
- Linux : appuyez sur
Ctrl+O, puis surEnter, puis surCtrl+X. - Windows : cliquez sur Fichier > Enregistrer.
- Linux : appuyez sur
Redémarrez l'agent Bindplane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart observiq-otel-collectorVérifiez que le service est en cours d'exécution :
sudo systemctl status observiq-otel-collectorRecherchez les erreurs dans les journaux :
sudo journalctl -u observiq-otel-collector -f
Pour redémarrer l'agent Bindplane dans Windows, choisissez l'une des options suivantes :
Invite de commande ou PowerShell en tant qu'administrateur :
net stop observiq-otel-collector && net start observiq-otel-collectorConsole Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Localisez le collecteur observIQ OpenTelemetry.
- Effectuez un clic droit, puis sélectionnez Redémarrer.
Vérifiez que le service est en cours d'exécution :
sc query observiq-otel-collectorRecherchez les erreurs dans les journaux :
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Appuyez sur
Configurer SecureAuth Identity Platform
- Connectez-vous à la console SecureAuth Identity en tant qu'administrateur.
- Sélectionnez Journaux.
- Dans la section Options de journalisation, fournissez les informations de configuration suivantes :
- ID d'instance du journal : saisissez l'ID d'instance du journal, le nom de l'application ou le nom du domaine (par exemple,
SecureAuth1). - Journaux d'audit : cochez la case Syslog.
- Journaux d'erreurs : cochez la case Syslog.
- Serveur Syslog : saisissez l'adresse IP de votre agent Bindplane.
- Port Syslog : saisissez le numéro de port de l'agent Bindplane (par exemple,
514). - Spécification RFC Syslog : sélectionnez RFC 5424.
- ID d'instance du journal : saisissez l'ID d'instance du journal, le nom de l'application ou le nom du domaine (par exemple,
- Cliquez sur Enregistrer.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| action_msg | read_only_udm.target.process.command_line | Valeur du champ action_msg |
| Appareil | read_only_udm.principal.domain.name | Valeur du champ Appliance |
| Appareil | read_only_udm.target.administrative_domain | Valeur du champ Appliance |
| BrowserSession | read_only_udm.network.session_id | Valeur du champ BrowserSession |
| cat | read_only_udm.metadata.product_event_type | Valeur du champ cat |
| Catégorie | read_only_udm.metadata.product_event_type | Valeur du champ Category |
| cn1 | security_result.severity | Mappé en fonction de la valeur de cn1 lorsque cn1Label est défini sur "Priority" (Priorité) : 1 = ÉLEVÉE, 2 = MOYENNE, 3 ou 4 = FAIBLE |
| Entreprise | read_only_udm.additional.fields.value.string_value | Valeur du champ Company |
| cs1 | read_only_udm.network.session_id | Valeur du champ cs1 lorsque cs1Label est défini sur "BrowserSession" |
| cs3 | read_only_udm.additional.fields.value.string_value | Valeur du champ cs3 lorsque cs3Label est "CompanyName" |
| dst | read_only_udm.target.ip | Valeur du champ dst |
| domaine | read_only_udm.principal.domain.name | Valeur du champ domain |
| dvc | read_only_udm.intermediary.ip | Valeur du champ dvc |
| EventID | read_only_udm.metadata.product_log_id | Valeur du champ EventID |
| HostName | read_only_udm.principal.hostname | Valeur du champ HostName lorsque grok ne parvient pas à faire correspondre l'adresse IP |
| HostName | read_only_udm.principal.ip | Valeur du champ HostName lorsque grok correspond à une adresse IP |
| ip | read_only_udm.principal.ip | Valeur du champ ip |
| Message | read_only_udm.metadata.description | Valeur du champ Message |
| Message | security_result.description | Valeur du champ Message |
| nat_ip | read_only_udm.principal.nat_ip | Valeur du champ nat_ip |
| Priorité | security_result.severity | Mappé en fonction de la valeur de Priority : 1 = ÉLEVÉ, 2 = MOYEN, 3 ou 4 = FAIBLE |
| SAMLConsumerURL | read_only_udm.target.url | Valeur du champ SAMLConsumerURL |
| sec_msg | security_result.description | Valeur du champ sec_msg |
| SecureAuthIdPAppliance | read_only_udm.target.administrative_domain | Valeur du champ SecureAuthIdPAppliance |
| SecureAuthIdPApplianceMachineName | read_only_udm.target.hostname | Valeur du champ SecureAuthIdPApplianceMachineName |
| SecureAuthIdPDestinationSiteUrl | read_only_udm.target.url | Valeur du champ SecureAuthIdPDestinationSiteUrl |
| SecureAuthIdPProductType | read_only_udm.additional.fields.value.string_value | Valeur du champ SecureAuthIdPProductType |
| session | read_only_udm.network.session_id | Valeur du champ session |
| spid | read_only_udm.target.process.pid | Valeur du champ spid |
| src | read_only_udm.principal.ip | Valeur du champ src |
| suser | read_only_udm.target.user.userid | Valeur du champ suser |
| UserAgent | read_only_udm.network.http.user_agent | Valeur du champ UserAgent |
| UserHostAddress | read_only_udm.principal.nat_ip | Valeur du champ UserHostAddress |
| UserHostAddress | read_only_udm.target.ip | Valeur du champ UserHostAddress |
| UserID | read_only_udm.principal.user.userid | Valeur du champ UserID |
| Version | read_only_udm.metadata.product_version | Valeur du champ Version |
| read_only_udm.additional.fields.key | Valeur codée en dur : "CompanyName" | |
| read_only_udm.additional.fields.key | Valeur codée en dur : "Company" | |
| read_only_udm.additional.fields.key | Valeur codée en dur : "SecureAuthIdPProductType" | |
| read_only_udm.extensions.auth.type | Valeur codée en dur : "SSO" | |
| read_only_udm.metadata.event_type | 'USER_LOGIN' si SecureAuthIdPAuthGuiMode == 0 et auth_result == Success, 'USER_CHANGE_PERMISSIONS' si SecureAuthIdPAuthGuiMode == 0 et auth_result ==WS-Trust success., 'USER_LOGOUT' si SecureAuthIdPAuthGuiMode == 0 et auth_result == Session Aborted, 'NETWORK_CONNECTION' si UserHostAddress != and `HostName` !=, 'STATUS_UPDATE' si ip != or `HostName` !=, 'USER_UNCATEGORIZED' si UserHostAddress != and `HostName` == et UserID != ``, sinon 'GENERIC_EVENT' |
|
| read_only_udm.metadata.log_type | Valeur codée en dur : "SECUREAUTH_SSO" | |
| read_only_udm.metadata.product_name | Valeur codée en dur : "SECUREAUTH_SSO" | |
| read_only_udm.metadata.vendor_name | Valeur codée en dur : "SECUREAUTH_SSO" | |
| read_only_udm.target.user.email_addresses | Valeur du champ user_email lorsque not_email est défini sur "false" |
|
| security_result.severity | 'HIGH' si cn1Label == Priority et cn1 == 1, 'MEDIUM' si cn1Label == Priority et cn1 == 2, 'LOW' si cn1Label == Priority et cn1 dans [3, 4], 'HIGH' si Priority == 1, 'MEDIUM' si Priority == 2, 'LOW' si Priority dans [3, 4] |
|
_timestamp |
event.idm.read_only_udm.metadata.collected_timestamp |
Mappé à partir du journal des modifications |
i_ip |
event.idm.read_only_udm.intermediary.ip |
Mappé à partir du journal des modifications |
i_port |
event.idm.read_only_udm.intermediary.port |
Mappé à partir du journal des modifications |
parsed.LogChannel |
event.idm.read_only_udm.metadata.product_event_type |
Mappé à partir du journal des modifications |
parsed.FormatVersion |
event.idm.read_only_udm.metadata.product_version |
Mappé à partir du journal des modifications |
parsed.EventID |
event.idm.read_only_udm.metadata.product_log_id |
Mappé à partir du journal des modifications |
parsed.CompanyID |
event.idm.read_only_udm.principal.resource.product_object_id |
Mappé à partir du journal des modifications |
parsed.Realm |
event.idm.read_only_udm.principal.resource.name |
Mappé à partir du journal des modifications |
parsed.UserHostAddress |
event.idm.read_only_udm.principal.ip |
Mappé à partir du journal des modifications |
parsed.UserHostAddress |
event.idm.read_only_udm.principal.asset.ip |
Mappé à partir du journal des modifications |
host.name |
event.idm.read_only_udm.principal.hostname |
Mappé à partir du journal des modifications |
host.name |
event.idm.read_only_udm.principal.asset.hostname |
Mappé à partir du journal des modifications |
parsed.RequestID |
event.idm.read_only_udm.metadata.id |
Mappé à partir du journal des modifications |
meta.cloud.availability_zone |
event.idm.read_only_udm.principal.location.name |
Mappé à partir du journal des modifications |
meta.cloud.region |
event.idm.read_only_udm.principal.location.country_or_region |
Mappé à partir du journal des modifications |
host.id |
event.idm.read_only_udm.principal.resource.id |
Mappé à partir du journal des modifications |
LogstashPod |
event.idm.read_only_udm.observer.hostname |
Mappé à partir du journal des modifications |
fields.ApplianceID |
event.idm.read_only_udm.principal.asset.asset_id |
Mappé à partir du journal des modifications |
LogChannel |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
FormatVersion |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
EventID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
Version |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
parsed.UserAgent |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
parsed.ApplianceID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
beat.name |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
beat.hostname |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
beat.version |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
fields.CompanyID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
derived.CompanyIndex |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
_version |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
derived.EventType |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
prospector.type |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
input.type |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
parsed_Message |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
meta.cloud.machine_type |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
ApplianceType |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
parsed.Version |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.architecture |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.os.platform |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.os.version |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.os.build |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.os.family |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
host.os.name |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
meta.cloud.provider |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
derived.LogChannelIndex |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
document_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
meta.cloud.instance_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
tags |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappé à partir du journal des modifications |
Realm |
event.idm.read_only_udm.target.resource.name |
Mappé à partir du journal des modifications |
CompanyID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
PEN |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
ApplianceID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
ApplianceMachineName |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
RequestID |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
UseJava |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
Journal des modifications
Afficher le journal des modifications pour ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.