Bezpečnost v Salesforce

Z jedné věci jsem byl u Lotus Domino nadšen – z bezpečnosti. Těch jeho šest úrovní bezpečnosti – od serveru až po jednotlivá pole. O tom se tak krásně mluví a tak krásně se s tím hraje. A pak dojdete velmi často k „security by obscurity“, prostě k tomu, že ta pole jenom schováte a doufáte, že je uživatel neuvidí a díky tomu nezmění. Pro zápis si můžete pomoci sekcemi s řízeným přístupem, ale pro čtení leda podřízenými dokumenty s jinak nastavenými čtenářskými poli. A kdo je má pořád synchronizovat.

Navíc některé věci se dělaly prostě špatně – ukázkovým příkladem je asi organizační struktura a vzájemné zpřístupňování dokumentů. Nebo kontrola validity dat – probíhá pouze při ukládání formulářů a při zápisu přímo do databáze už to moc neošetříte.

Logo Salesforce Salesforce asi nemá šest úrovní bezpečnosti, spousta věcí v něm udělat nejde ale některé jdou a jsou velmi příjemné.

Je to v cloudu

Řešení v cloudu mají své výhody a nevýhody. Prvním je to, kdo se k vašim datům dostane a časté argumenty jsou – je to bezpečnější než ten server u vás pod stolem a protiargument je zase – vždyť každou chvíli se někdo někam nabourá.

Salesforce na to má vlastní stránku, kde to trochu řeší, a současně umožňují nastavit takové věci jako určení hodin, ve kterých se můžete připojit; IP adres, ze kterých se vám to povede nebo dvoufázovou autentizaci.

Co se smí obecně dělat

Servery jsme vyřešili, co umožňuje aplikace? Asi nejdůležitější nastavení jsou předvolby sdílení dat. Pro každý typ záznamu si tak můžete nastavit, zda bude privátní, uvidí ho všichni, budou ho moci všichni upravovat nebo to bude stejné, jako u nadřízeného záznamu. A také zda umožníte přístup pomocí hierarchie – tedy váš nadřízený může vidět všechny vaše záznamy.

Organization-wide nastavení bezpečnosti v Salesforce

Tak to vypadá pěkně, co ta hierarchie? Ano, Salesforce umožňuje definovat organizační strukturu a každý uživatel může sedět hned na několik židlích. Dokonce to celé umožňuje řešit po teritoriích a to přináší další možnosti (a chaos).

Nastavení hierarchie pozic v Salesforce

Super, ale chceme si to ještě zkomplikovat. Fajn, pak jsou tady ještě pravidla. Pro každý typ záznamu si můžete nastavit pravidla typu „pokud k tomu může ten (tihle) tak přidej přístup ještě těmto“ případně „pokud dokument splňuje tato kritéria přidej přístup ještě těmto„. A přístup můžete přidat konkrétní roli případně i jejím podřízeným nebo skupině osob. A skupinu osob si zase můžete nadefinovat jak chcete – konkrétní lidi nebo lidé s konkrétními pozicemi.

Nastavení pravidel sdílení v Salesforce

Profily

Výše uvedené řešilo viditelnost a možnost úpravy celého záznamu. Profily, kromě spousty dalších hloupostí, řeší konkrétnosti – může vidět dané políčko? A může ho i upravit?

Profily řeší také problematiku tvorby, zobrazení a smazání záznamů – tím doplňuje předvolby sdílení dat nastavené na začátku. Každý člověk totiž může mít přidělen právě jeden profil (případně mít jeho možnosti rozšířené „sadami oprávnění“, které nastavení profilu dále rozšiřují, aby nebylo nutné pro každé specifikum dělat specifický profil). Takže i když člověka posadíte na ředitelskou pozici, můžete mu zakázat, aby směl vytvářet některý typy záznamů.

Možnosti nastavení v profilu

Aby profily nebyly tak geniální, tak jim chlapci ze SF vrazili (minimálně) jeden nůž hezky pod žebra. Pro všechny typy záznamů (kontakt, organizace, příležitost, …) můžete přímo v profilu nastavit, jestli je lidé mohou nebo nemohou vytvářet. S jedinou výjimkou – pokud má mít člověk právo vytvářet kampaně, musí mít ve svém profilu zaškrtnuto políčko „Marketing user“. Pokud to nemá tak nastavujte jak nastavujte, kampaň prostě nevytvoří.

Rozvržení formuláře

V profilu můžete také určit, jaký vzhled formuláře se má použít. Stejně jako v LN tady neřeší bezpečnost ale jenom rozmístění a zpřístupnění polí na formuláři, bylo by tedy možné konkrétní hodnotu zjistit/zapsat přímo do databáze.

Rozvržení formulářů je věc, která je prostě divná. Můžete si jich vytvořit kolik chcete, ale uživatelé mezi nimi nemohou přepínat. Stejně tak mezi nimi nemůžete přepínat programově podle hodnoty polí, aby se formulář měnil podle potřeb. Existují nějaké nepodporované byť fungující finty s JavaScriptem, ale bohužel nic oficiálního. A to je podle mého velká nepříjemnost.

Definice formuláře

Validace dat

Validace dat funguje krásně.

Na formuláři je možné určit, zda je pole povinné nebo ne. Jak je asi zřejmé, projeví se to pouze těm, kteří záznamy vytvářejí/upravují daným formulářem.

Přímo při definici pole můžete určit, zda pole bude povinné nebo ne. Toto se hlídá vždy, ať vytváříte záznam jak chcete. Tedy s tou výjimkou, pokud ho vytváříte přímo z vyhledávacího okna u lookup polí. Což moc nechápu, ale prohlašuji to za chybu aplikace.

Pokud se nespokojíte s (ne)povinností polí, tak můžete určit i validační podmínky, které se kontrolují při ukládání formuláře a které se kontrolují i při přímém zápisu do databáze (jaký rozdíl oproti Dominu). A v těch samozřejmě můžete používat i hodnoty z jiných dokumentů.

Definice validační podmínky

Dashboardy

Bezpečnost se týká i reportů a dashboardů (více reportů seskupených dohromady). Právě u dashboardu si můžete nastavit, zda chcete zobrazovat hodnoty pouze pro přihlášeného uživatele nebo pro konkrétního uživatele. Ta druhá volba je skvělá když chcete, aby každý byl schopen vidět třeba výsledky za celou firmu a přitom nemá přístup ke všem datům. Takto uvidí ta sumární čísla, ale v okamžiku, kdy chce získat detaily, tak už vidí pouze svoje čísla.

Dashboard v Salesforce

To je celé

No a to je celá ta věda s bezpečností v SF. Pár míst, kde ji nastavit, a myslím, že to naprosto dostačuje a řeší ji velice pěkně. Pokud správně nastavíte profily, tak se k datům v konkrétních polích nikdo nedostane – nezíská je z databáze, z pohledů ani z reportů. A o to nakonec jde.

Zajímá mě tvůj názor