
Salesforce-Objektzugriffs-Auditor
Von NCC Group Plc als Open Source veröffentlicht - https://www.nccgroup.com/
Entwickelt von Jerome Smith @exploresecurity (mit Dank an Viktor Gazdag @wucpi)
https://www.github.com/nccgroup/raccoon
Veröffentlicht unter AGPL - weitere Informationen siehe LICENSE.
Dieses Tool ermittelt, welche Profile und Berechtigungssätze (mit aktiven Benutzern) über eine Kombination aus Lese-/Bearbeitungs-/Löschberechtigungen für ALLE Datensätze einer bestimmten Objektmenge verfügen, basierend auf ihren effektiven Freigabe- und Objekteinstellungen. Anhand dieser Ausgabe können Fehlkonfigurationen untersucht werden, die möglicherweise übermäßigen Zugriff auf Objekte mit sensiblen Daten ermöglichen. Hintergrundinformationen finden Sie im begleitenden Blogbeitrag unter https://research.nccgroup.com/2021/06/28/are-you-oversharing-in-salesforce.
Es wird empfohlen, die Ergebnisse manuell unter direkter Bezugnahme auf die Salesforce-Konfiguration und/oder durch Testen der betroffenen Profile und Berechtigungssätze zu verifizieren. Sollten Abweichungen festgestellt werden, reichen Sie bitte ein Issue mit möglichst vielen Details ein.
Voraussetzungen:
requests (durch requirements.txt abgedeckt)username + password + (optional) token ODER sessionId angeben (weitere Details im Abschnitt Authentifizierung).Erstellen Sie eine JSON-Konfigurationsdatei (oder verwenden Sie config.json als Vorlage) und füllen Sie sie wie erforderlich aus:
{
"hostname": "somewhere.my.salesforce.com",
"username": "",
"password": "",
"token": "<optional token>",
"sessionId": "",
"objects": ["Account", "Contact"],
"checkLimits": true,
"debug": <optional debug level (0, 1 or 2)>
}
objects ist eine Liste der Salesforce-Objekte von Interesse (d. h. der Daten, die Ihnen am wichtigsten sind). Die Verwendung der formalen API-Namen ist die zuverlässigste Methode; sollte jedoch keine Übereinstimmung gefunden werden, versucht Raccoon einige einfache Übereinstimmungen, beispielsweise basierend auf der Anzeigebezeichnung. Falls Raccoon weiterhin keine Übereinstimmung findet, läuft das Programm weiter, weist aber in der Ausgabe darauf hin.
Mit checkLimits können Sie das verbleibende Kontingent an API-Aufrufen für die untersuchte Instanz innerhalb des 24-Stunden-Zeitraums prüfen. Raccoon tätigt relativ wenige Aufrufe pro Objekt (zusätzlich zu einer festen Anzahl pro Lauf); dieser Parameter ermöglicht es Ihnen jedoch, vor dem Fortfahren Ihre Limits zu prüfen. Der Standardwert ist true. Die Gesamtzahl der möglicherweise noch verbleibenden Anfragen am Prüfpunkt ist nicht sicher, da die Anzahl der Aufrufe davon abhängt, wie viele Objekte ein Freigabemodell 'Controlled by Parent' aufweisen. Die angegebene Zahl geht davon aus, dass alle dieses Modell verwenden, und ist daher ein Maximum.
Ausführen:
git clone https://github.com/nccgroup/raccoon
pip3 install -r requirements.txt
python3 raccoon.py <config_file>
Wenn ein Benutzername und ein Passwort verwendet werden, beachten Sie, dass möglicherweise auch ein Sicherheits-Token erforderlich ist (wenn die Verbindung von einer IP-Adresse außerhalb definierter Netzwerkzugriffsbereiche hergestellt wird). Weitere Informationen finden Sie in diesem Artikel.
Die Verwendung der Session-ID-Alternative ist in vielen Fällen nützlich:
So erhalten Sie die Session-ID:
sid-Cookies: Stellen Sie sicher, dass Sie dasjenige verwenden, dessen Domain-Attribut my.salesforce.com oder cloudforce.com enthältBeispielausgabe (gekürzt und anonymisiert):
Raccoon - Salesforce object access auditor
- version 1.0
- https://www.github.com/nccgroup/raccoon
* Refer to README for usage notes including important limitations *
Target instance: somewhere.my.salesforce.com
- Login successful
4,969,529 API requests can be sent to this instance from a 24-hour limit of 5,000,000
- Up to 33 further requests are required to complete (3 requests sent so far)
- Do you want to continue? Enter 'y' to proceed: y
Validating objects
- Found object 'Accounts' with API name 'Account'
- Found object 'Contact' with API name 'Contact'
- Found object 'Quotes' with API name 'Quote__c'
- Found object 'Quote Lines' with API name 'QuoteLine__c'
Evaluating 28 Profiles and 104 Permission Sets
- Profiles with active users: 15
- Permission Sets with active users: 67
- Ignoring 50 unused Profiles and Permission Sets
Global Sharing Overrides (ALL records for ALL objects)
------------------------------------------------------
READ/EDIT/DELETE [C]ustom Active/Total [G]uest[E]xt[I]nt
Profiles
- System Administrator 61/91 [I]
READ
Profiles
- Integration User [C] 1/1 [I]
- Analytics Cloud Integration User 1/1 [I]
Object Sharing (ALL records for EACH object)
--------------------------------------------
Account:
Organization-wide default sharing
- Internal: Public Read Only
- External: <Undefined>
READ/EDIT/DELETE [C]ustom Active/Total [G]uest[E]xt[I]nt
Profiles
- Integration User [C] 1/1 [I]
Permission Sets (* Groups)
- Mulesoft Integration [C] 2/2 [I]
READ
Profiles
- Read Only [C] 192/199 [I]
- Sales User [C] 192/248 [I]
- Finance User [C] 16/20 [I]
- Standard User 6/3075 [I]
Permission Sets (* Groups)
* Accounts PS Group [C] 36/39 [I]
- Sales Operations [C] 24/26 [I]
- SharePoint User [C] 3/4 [I]
Sharing Rules (manual check required):
- Criteria-based rules configured
- Ownership-based rules configured
Contact:
Organization-wide default sharing
- Internal: Controlled by Parent
- External: <Undefined>
Parent object: 'Account'
- Internal: Public Read Only
- External: <Undefined>
READ/EDIT/DELETE [C]ustom Active/Total [G]uest[E]xt[I]nt
Profiles
- Integration User 1/1 [I]
Permission Sets (* Groups)
- Mulesoft Integration [C] 2/2 [I]