11 AugSalesforce 2-Faktor Authentifizierung abschalten – Gewusst wie und wann

Es ist mir wieder passiert: Vor kurzem habe ich meinen Arbeitgeber gewechselt und damit habe ich keinen Zugriff mehr auf meine alte Handynummer und Email-Adresse. Zudem nervt es mich sowieso immer wenn ich mich in reinen Developer-Editionen authentifizieren muss. In diesen Umgebungen hab ich nichts zu verheimlichen, da reicht mir auch eine reine Username und Passwort-Abfrage. Reichlich genervt habe ich die Funktion recherchiert wie man das umgehen kann, hier mein Blogpost dazu:

Gewusst wie

Die Funktion die 2-Faktor-Authentifizierung zu umgehen ist mit guter Absicht etwas im Administrationsmenü versteckt. Ausschalten kann man sie nicht, wohl aber umgehen!

Das Profil bietet die Möglichkeit eine sog. “Login IP Range” einzutragen. Alle Logins die von innerhalb dieses IP Bereiches kommen werden dann ohne weitere Authentifizierungen durchgeroutet, Ihr könnt Euch beim Benutzen von externen Tools zudem die Eingabe des Security Tokens sparen.

Seid Euch bitte bewusst was Ihr hier tut, das hat in einer Produktions-Umgebung meiner Meinung nach nichts verloren. Das ist etwas für Developer-Orgs, nicht mal für Sandboxen.

Login IP Range

 

Gewusst Wann

Eine Möglichkeit die 2-Faktor-Authentifizierung für alle Profile abzuschalten gibt es nicht, sollte es auch nicht geben.

Denn in einer Produktivumgebung werdet Ihr eventuell den umgekehrten Weg gehen wollen:

Hier könnt Ihr die Funktion so nutzen wie sie gedacht ist, nämlich die User gänzlich auszusperren wenn sie nicht innerhalb des IP Bereiches auf die Salesforce-Umgebung zugreifen. Unter anderem ist das für den Einsatz mit VPN gedacht. Hier geht der User über eine VPN-Verbindung ins Netz und hat damit einen festgelegten IP-Bereich.

 

Ich jedenfalls lasse alle Produktiv-Umgebungen unberührt, füge aber in jede Test und Demo-Umgebung seit ein paar Tagen den Bereich von 0.0.0.0 bis 255.255.255.255 – und bin damit auf der sicheren Seite, denn das sind alle IP Adressen, die es weltweit gibt.

 

22 FebSalesforce Freigaberegeln mit APEX

In einem vergangenen Blogpost habe ich zusammengestellt wie man sich in Salesforce die Freigaberegeln definieren kann und habe darauf viele Rückfragen bezüglich APEX bekommen, daher will ich diesem Thema mal hier näher auf den Grund gehen:

Wie funktionieren die Freigaben im Detail – und wie kann man auf die Regeln per APEX zugreifen bzw. diese erstellen?

Das Prinzip ist so einfach wie genial. Um das zu verstehen müssen wir einen kurzen (sehr kurzen!) Ausflug in die Datenbank von Salesforce machen:

Für jedes Objekt für das die Unternehmensweiten Standardeinstellungen NICHT “öffentlicher Lese-/Schreibzugriff” ist, wird eine weiteres Objekt angelegt in dem die Freigaben abgelegt werden. Über die Admin-Bedienoberfläche ist das aber nicht sichtbar. Um darauf zuzugreifen bedient man sich Admin-Tool (z.B. Eclipse, Develpper Konsole, SoqlXplorer etc.) und findet dort das entsprechende Objekt.

Ich habe für Euch die Account-Sicherheitseinstellungen auf privat gesetzt und EINE einzige Freigaberegel erstellt und Euch mit dem SoqlXplorer einen Screenshot gemacht:

AccountSharing

 

Was dann in der Datenbank abgelegt wird ist nicht etwa die Regel selbst, sondern es wird für jeden (!) Account für den eine Freigaberegel erstellt wurde diese in die Sharing-Tabelle eingetragen. In diesem Beispiel wurde also aus einer Regel 12 Einträge.

Das ist auch der Grund weshalb man immer die Meldung bekommt, dass die Regeln “berechnet” werden und das etwas dauern kann nach dem Speichern. Denn Salesforce übersetzt die von Euch erstellten Freigaberegeln auf die Accounts und trägt diese dann in die Tabelle ein. Bei riesigen Datenmengen und entsprechend vielen Usern kann das schon mal richtig viel werden und entsprechend lange dauern.

So, und wie greift man jetzt auf die Tabelle per APEX zu? Ganz einfach: Ihr habt die Chance selbst dort Einträge vorzunehmen bzw. diese auch wieder zu löschen. In der Praxis sieht das dann so aus, dass man (bleiben wir beim Beispiel Account) bei jedem Speichern/Erstellen/Löschen einen Trigger startet, der die Sharing-Regeln in der Tabelle überarbeitet bzw. einträgt.

Ihr legt dort fest welcher User oder welche Gruppe (Vorsicht, das sind keine Chatter-Gruppen, sondern öffentliche Gruppen!) welchen Zugriff auf den Datensatz bekommt.

Mein Tip war und bleibt: Man kommt fast immer mit den Standard-Regeln aus. Erst wenn diese zu 100% ausgenutzt worden sind und Ihr Freigaben braucht, die man einfach nicht anders machen kann, solltet Ihr die APEX-Regeln nutzen.

Was ist Eure Best-Practice?