Salesforce學習之路-admin篇(三)role hierarchy & sharing
- 2019 年 10 月 3 日
- 筆記
1. Role Hierarchy
在私有或者混合模型中,如果在organization-wide defaults設置某個對象為Private,那麼對象的記錄只有擁有者可以查看。但是,role hierarchy可以讓該條記錄擁有者的上司有許可權訪問該條記錄。

前提:Case在Organization-wide Defaults中被設為Private.
如圖片中所說,如果US Sales Rep為Case A的擁有者,則US Sales Director,VP of Global Sales以及CEO都擁有訪問Case A的許可權。
注意,這裡的許可權繼承是單向的。例如:US Sales Director為Case B的擁有者,那麼VP Sales Director和CEO擁有Case B的訪問許可權,而US Sales Rep沒有。
2. Orgnazation-Wide Defaults
相當於全局範圍內,sObject的訪問許可權設置,一般分為:Private, Public Read Only, Public Read/Write
- Private: 除了該條記錄的擁有者,其他人無法訪問(可通過其他的手段增加訪問許可權)。
- Public Read Only: 除了該條記錄的擁有者,其他人只有查看許可權,沒有修改許可權(可通過其他手段增加修改許可權)。
- Public Read/Write: 所有的用戶都可以訪問該對象的所有記錄。

3. Sharing Rules
除了設置全局範圍內默認的許可權外,還可針對某個Object,自定義設置Sharing Rules以滿足業務需求。

首先,選擇需要設置規則的對象,點擊New。

由圖可見,Rule Type有兩種:
- Based on record owner:當記錄擁有者為某個用戶或某個角色等時,滿足分享條件。
- Based on criteria:當達到設計的過濾準則時,滿足分享條件
3.1 Based on record owner
當記錄的擁有者的條件:Public groups == Account Share-BALTI 為真時,將該條記錄分享給NGCC-CC Site Manager這個Role以及屬於該Role下的所有用戶。

注意:這裡擁有者和被分享者有多種選擇,可以是Group(用戶組), Role(某個用戶或某類用戶),Roles, Internal and Portal Subordinates(某個用戶及該用戶下屬所有用戶)等,這些都可以自定義創建。
3.2 Based on criteria

這裡的Criteria便是規則,具體內容如下:
- Field,選擇Lead Record Type欄位。
- Operator,判斷的條件,equal(==),not equal(!=), start with(字元串以什麼開始), contains(字元串中包含該字元), does not contain(字元串不包含), less than(<), greater than(>), less or equal(<=), greater or equal(>=), includes(包括), excludes(不包括), within(在什麼里)。注意,這裡是全量操作,而實際情況下,不同欄位屬不同類型,只有部分操作可選擇。例如:less than/greater than則適用於Number類型,start with適用於Text(可理解為String)類型。
- Value,判斷的值,多個值之間用逗號隔開。
Filter Logic, 不同過濾條件之間的邏輯關係,上述圖中,有三條過濾條件,其過濾邏輯為1 AND (2 OR 3),即(第一個條件為真)並且(第二個條件或第三個條件為真)時,該條規則滿足。
Share with, 當滿足該條規則時,便將該條記錄分享給NGCC-CC Site Manager這個Role以及屬於該Role下的所有用戶。
** Access, 被分享用戶對於該條記錄的許可權設置,分為Read Only和Read/Write兩種。
4. Teams
顧名思義,創建一個team,在其中添加多個用戶,然後將記錄分享給整個team成員。
注意:對於Salesfroce來講,目前只有兩個標準對象擁有team概念:Account, Case.
Step 1: Enable Account Team

Step 2: 選擇在哪些Page layout中可以看到Team,並將其添加到用戶的自定義相關列表中,點擊save。

Step 3: 【Setup】–>【Object Manager】–>【Account】–>【Page Layouts】–>【***】(自定義page layout)
選擇Related Lists,在右側找到Account Team後,將其拖至下方,點擊Save按鈕–> Yes,如下圖所示。

Step 4: 點擊九宮格
,在All Items下面選擇Account,進入Account導航頁面。

Step 5: Account Team列中添加Team成員,點擊Add Team Members。當然,你也可以創建一個Team,然後在此處直接Add Default Team。

點擊Save按鈕,分享該條記錄至RestrieveCode SP和wu kai用戶。

PS:點擊用戶旁邊的倒三角,可以對該用戶進行編輯和刪除操作。
5. Manual Sharing
手動分享,通過sharing按鈕,手動分享該條記錄至指定用戶(群)。但是,該功能目前還沒有合入Lighnting Experience版本,若想使用,可切換至Classic版本。
點擊右上角頭像,選擇Switch to Salesforce Classic

切換至Classic版本,介面如下。

從Recent Items下找到Account Team Sample用戶,點擊Sharing,添加要分享的用戶。

6. 許可權控制
對於Salesforce來說,許可權是不斷累加的,多種規則許可權間表現為並集關係,但對於Salesfroce來說,搜尋不同規則是有先後順序的,具體表現如下圖所示。

用戶訪問某記錄依次查詢:
1)Organization-Wide Default: Public Read/Write,讀寫許可權;Public Read/Only,只讀許可權,若想修改,往下查看;Private, 無訪問許可權,往下查看。
2)Role Hierarchy: 用戶為記錄擁有者的領導,有許可權訪問(讀寫許可權)。
3)Sharing Rules: 滿足規則,並且屬於被分享者之一,則有訪問許可權(讀寫許可權可配置)。
4)Teams and Manual Sharing: 屬於Team成員之一或者屬於Sharing成員之一,則擁有訪問許可權(讀寫許可權可配置)
上述四條規則依次查詢,滿足操作許可權則退出,如不滿足,繼續往下,若皆不滿足則無許可權訪問。
Okay,上述內容是我對於Data Security的一點理解,如有誤之處,望大佬斧正。
