Okta-Nutzerkontext-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Okta-Logs zum Nutzerkontext erfassen, indem Sie einen Google Security Operations-Feed mit der Drittanbieter-API einrichten.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Privilegierter Zugriff auf den Okta-Mandanten oder die Admin-Konsole
- Berechtigungen zum Erstellen von API-Tokens in Okta
IP-Zulassungsliste konfigurieren
Bevor Sie den Feed erstellen, müssen Sie die Google SecOps-IP-Bereiche in Ihrer Okta-Firewall oder Ihren Netzwerkeinstellungen auf die Zulassungsliste setzen.
Google SecOps-IP-Bereiche abrufen
- Rufen Sie IP-Bereiche aus der JSON-Datei mit den IP-Adressbereichen von Google ab.
IP-Bereiche zum Okta-Nutzerkontext hinzufügen
- Melden Sie sich in der Okta Admin-Konsole an.
- Rufen Sie Sicherheit > Netzwerke auf.
- Klicken Sie unter IP-Adresseneinschränkungen auf Bearbeiten.
- Fügen Sie jede Google SecOps-IP-Adresse in CIDR-Notation den vertrauenswürdigen IP-Adressen hinzu.
- Klicken Sie auf Speichern.
Zugriff auf die Okta User Context API konfigurieren
Damit Google SecOps Nutzerkontextdaten abrufen kann, müssen Sie ein API-Token mit Leseberechtigungen erstellen.
API-Token erstellen
- Melden Sie sich in der Okta Admin-Konsole an.
- Klicken Sie auf Sicherheit > API.
- Wählen Sie den Tab Tokens aus.
- Klicken Sie auf Token erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Google SecOps Integration. - Beschreibung (optional): Geben Sie eine Beschreibung ein.
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
- Klicken Sie auf Token erstellen.
API-Anmeldedaten aufzeichnen
Nachdem Sie das API-Token erstellt haben, erhalten Sie die folgenden Anmeldedaten:
- API-Token: Ihr API-Tokenwert (z. B.
00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1)
Erforderliche API-Berechtigungen
Für das API-Token sind die folgenden Berechtigungen in Okta erforderlich:
| Berechtigung/Rolle | Zugriffsebene | Zweck |
|---|---|---|
| Administrator mit Lesezugriff | Lesen | Auf Nutzerprofildaten zugreifen |
| Super Admin | Lesen | Vollständiger Zugriff auf alle Nutzerdaten |
Feeds einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Okta User Context. - Wählen Sie Drittanbieter-API als Quelltyp aus.
- Wählen Sie Okta-Nutzerkontext als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Authentifizierungs-HTTP-Header: Geben Sie die Anmeldedaten für die Authentifizierung im folgenden Format ein:
Authorization:SSWS your-api-token- Beispiel:
Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
- Beispiel:
API-Hostname: Der vollqualifizierte Domainname Ihrer Okta-Instanz (z.B. example.okta.com, nicht eine benutzerdefinierte Domain, die möglicherweise konfiguriert ist).
- Beispiel:
company.okta.com
- Beispiel:
Referenzfeld für Manager-ID: ID, die erforderlich ist, wenn Sie eine Nicht-Okta-ID verwenden, um auf Manager zu verweisen (optional).
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Nach der Einrichtung werden die Logs chronologisch aus der Okta User Context-Instanz abgerufen.
Regionale Endpunkte
Okta verwendet je nach Region Ihrer Organisation unterschiedliche API-Endpunkte:
| Region | Basis-URL / Hostname |
|---|---|
| USA (Standard) | {org-name}.okta.com |
| EU (EMEA) | {org-name}.okta-emea.com |
| Asien/Pazifik (APAC) | {org-name}.okta.com.au |
| Vorschau (Test) | {org-name}.oktapreview.com |
Verwenden Sie den Hostnamen, der der Region Ihrer Okta-Instanz entspricht.
API-Ratenbegrenzungen
Für die Okta API gelten die folgenden Ratenbegrenzungen:
- Standardmäßige Ratenbegrenzung: 600 Anfragen pro Minute für die meisten Endpunkte
- System Log API: 60 Anfragen pro Minute
- Nutzerendpunkte: 600 Anfragen pro Minute
Google SecOps verarbeitet die Ratenbegrenzung automatisch mit exponentiellem Backoff. Wenn Probleme auftreten, wenden Sie sich an den Okta-Support, um Ihre API-Limits zu erhöhen.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
activated |
event.idm.entity.entity.labels |
Wenn activated vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „activated“ hinzugefügt. |
created |
event.idm.entity.entity.labels |
Wenn created vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „created“ hinzugefügt. |
profile.costCenter |
event.idm.entity.entity.labels |
Wenn profile.costCenter vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „costCenter“ hinzugefügt. |
profile.Function |
event.idm.entity.entity.labels |
Wenn profile.Function vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Function“ hinzugefügt. |
statusChanged |
event.idm.entity.entity.labels |
Wenn statusChanged vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „statusChanged“ hinzugefügt. |
type.id |
event.idm.entity.entity.labels |
Wenn type.id vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „type_id“ hinzugefügt. |
profile.location |
event.idm.entity.entity.location.name |
Wert aus profile.location. |
profile.AD_ObjectGUID |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.AD_ObjectGUID vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „AD_ObjectGUID“ hinzugefügt. |
profile.ADpwdLastSet |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.ADpwdLastSet vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „ADpwdLastSet“ hinzugefügt. |
profile.AFF_Code |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.AFF_Code vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „AFF_Code“ hinzugefügt. |
profile.Desk_Location_WD |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Desk_Location_WD vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Desk_Location_WD“ hinzugefügt. |
profile.Mailing_Address_WD |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Mailing_Address_WD vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Mailing_Address_WD“ hinzugefügt. |
profile.Manager_UPN |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Manager_UPN vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Manager_UPN“ hinzugefügt. |
profile.PRIVATE_CONF_Profile |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.PRIVATE_CONF_Profile vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „PRIVATE_CONF_Profile“ hinzugefügt. |
profile.Region_WD |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Region_WD vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Region_WD“ hinzugefügt. |
profile.Subsidiary_Company |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Subsidiary_Company vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Subsidiary_Company“ hinzugefügt. |
profile.Telephone_Work |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Telephone_Work vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Telephone_Work“ hinzugefügt. |
profile.Temp_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Temp_WD_Primary_Email vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Temp_WD_Primary_Email“ hinzugefügt. |
profile.VMware_WS1_Username |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.VMware_WS1_Username vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „VMware_WS1_Username“ hinzugefügt. |
profile.Work_Street_Address_WD |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Work_Street_Address_WD vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Work_Street_Address_WD“ hinzugefügt. |
profile.Workato_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Workato_WD_Primary_Email vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Workato_WD_Primary_Email“ hinzugefügt. |
profile.Workday_ID |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Workday_ID vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Workday_ID“ hinzugefügt. |
profile.Worker_Type_WD |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.Worker_Type_WD vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „Worker_Type_WD“ hinzugefügt. |
profile.businessUnit |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.businessUnit vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „businessUnit“ hinzugefügt. |
profile.companyName |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.companyName vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „companyName“ hinzugefügt. |
profile.contingentSupplierName |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.contingentSupplierName vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „contingentSupplierName“ hinzugefügt. |
profile.conversationId |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.conversationId vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „conversationId“ hinzugefügt. |
profile.distinguishedName |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.distinguishedName vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „distinguishedName“ hinzugefügt. |
profile.division |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.division vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „division“ hinzugefügt. |
profile.emailPrefix |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.emailPrefix vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „emailPrefix“ hinzugefügt. |
profile.employeeType |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.employeeType vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „employeeType“ hinzugefügt. |
profile.homePostalAddress |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.homePostalAddress vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „homePostalAddress“ hinzugefügt. |
profile.isManager |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.isManager vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „isManager“ hinzugefügt. |
lastLogin |
event.idm.entity.entity.user.attribute.labels |
Wenn lastLogin vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „lastLogin“ hinzugefügt. |
profile.leaveOfAbsence |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.leaveOfAbsence vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „leaveOfAbsence“ hinzugefügt. |
profile.managerDn |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.managerDn vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „managerDn“ hinzugefügt. |
profile.payGroup |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.payGroup vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „payGroup“ hinzugefügt. |
profile.wdemployeeID |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.wdemployeeID vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „wdemployeeID“ hinzugefügt. |
profile.zipCode |
event.idm.entity.entity.user.attribute.labels |
Wenn profile.zipCode vorhanden ist, wird sein Wert als Schlüssel/Wert-Paar mit dem Schlüssel „zipCode“ hinzugefügt. |
profile.userType |
event.idm.entity.entity.user.attribute.roles |
Wenn profile.userType vorhanden ist, wird sein Wert einem Array von Rollen hinzugefügt. |
profile.organization, profile.company |
event.idm.entity.entity.user.company_name |
Der Wert stammt aus profile.organization oder aus profile.company, falls profile.organization nicht vorhanden ist. |
profile.department |
event.idm.entity.entity.user.department |
Wert aus profile.department. |
profile.email, profile.secondEmail, profile.login |
event.idm.entity.entity.user.email_addresses |
Werte aus profile.email, profile.secondEmail und profile.login (sofern es sich um eine E-Mail-Adresse und nicht um ein Duplikat handelt) werden in dieses Feld zusammengeführt. |
profile.employeeNumber |
event.idm.entity.entity.user.employee_id |
Wert aus profile.employeeNumber. |
profile.firstName, profile.Preferred_First_Name |
event.idm.entity.entity.user.first_name |
Der Wert stammt aus profile.firstName oder aus profile.Preferred_First_Name, falls profile.firstName nicht vorhanden ist. |
profile.EmployeeWorkGroup |
event.idm.entity.entity.user.group_identifiers |
Wert aus profile.EmployeeWorkGroup. |
profile.HireDate, profile.hiredate |
event.idm.entity.entity.user.hire_date |
Der Wert wird aus profile.HireDate oder aus profile.hiredate geparst, wenn profile.HireDate nicht vorhanden ist. |
profile.lastName, profile.preferred_Last_Name |
event.idm.entity.entity.user.last_name |
Der Wert wird aus profile.lastName übernommen, wenn entweder profile.lastName oder profile.preferred_Last_Name vorhanden ist. |
lastLogin |
event.idm.entity.entity.user.last_login_time |
Der Wert wird aus lastLogin geparst. |
passwordChanged |
event.idm.entity.entity.user.last_password_change_time |
Der Wert wird aus passwordChanged geparst. |
profile.manager, profile.managerEmail, profile.managerId |
event.idm.entity.entity.user.managers |
Wird mit einem Objekt gefüllt, das user_display_name aus profile.manager, email_addresses aus profile.managerEmail und employee_id aus profile.managerId enthält. |
profile.city, profile.firstBaseCity |
event.idm.entity.entity.user.office_address.city |
Der Wert stammt aus profile.city oder aus profile.firstBaseCity, falls profile.city nicht vorhanden ist. |
profile.countryCode, profile.country |
event.idm.entity.entity.user.office_address.country_or_region |
Der Wert stammt aus profile.countryCode oder aus profile.country, falls profile.countryCode nicht vorhanden ist. |
profile.streetAddress |
event.idm.entity.entity.user.personal_address.name |
Wert aus profile.streetAddress. |
profile.state |
event.idm.entity.entity.user.personal_address.state |
Wert aus profile.state. |
profile.primaryPhone, profile.mobilePhone, profile.mobile |
event.idm.entity.entity.user.phone_numbers |
Werte aus profile.primaryPhone, profile.mobilePhone und profile.mobile werden in diesem Feld zusammengeführt. |
profile.terminationDate, profile.terminationdate |
event.idm.entity.entity.user.termination_date |
Der Wert wird aus profile.terminationDate oder aus profile.terminationdate geparst, wenn profile.terminationDate nicht vorhanden ist. |
profile.title |
event.idm.entity.entity.user.title |
Wert aus profile.title. |
status |
event.idm.entity.entity.user.user_authentication_status |
Zugeordnet aus status: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED –> ACTIVE; SUSPENDED –> SUSPENDED; DEPROVISIONED –> DELETED; andernfalls UNKNOWN_AUTHENTICATION_STATUS. |
profile.displayName |
event.idm.entity.entity.user.user_display_name |
Wert aus profile.displayName. |
profile.samAccountName, profile.samaccountname, profile.login, profile.ldapUid |
event.idm.entity.entity.user.userid |
Wird in der folgenden Reihenfolge ausgefüllt: profile.samAccountName, profile.samaccountname, profile.login (falls keine E-Mail-Adresse), profile.ldapUid (falls profile.login keine E-Mail-Adresse ist). |
event.idm.entity.metadata.entity_type |
Legen Sie USER fest. |
|
id |
event.idm.entity.metadata.product_entity_id |
Wert aus id. |
event.idm.entity.metadata.product_name |
Legen Sie Identity Cloud fest. |
|
event.idm.entity.metadata.vendor_name |
Legen Sie Okta fest. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten