SKILL.md
唯讀
名稱
platform-permission-set-generate
描述
產生正確且可部署的 Salesforce 權限集中繼資料(PermissionSet XML),包含物件、欄位、使用者和應用程式權限。在建立或編輯權限集中繼資料、物件權限、欄位層級安全(FLS)、頁籤可見性或部署權限集時,請使用此技能。
何時使用此技能
在產生或編輯權限集中繼資料,或授予物件、欄位、使用者和應用程式權限時使用。
步驟 1:定義核心屬性
首先定義必要的權限集屬性:
<PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>YourPermissionSetName</fullName>
<label>Display Name for Administrators</label>
<description>Clear description of purpose and intended audience</description>
</PermissionSet>
命名慣例:
- 使用具描述性的 API 名稱(例如
Sales_Manager_Access)
步驟 2:設定物件權限
為標準和自訂物件新增 CRUD 權限:
<objectPermissions>
<allowCreate>true</allowCreate>
<allowRead>true</allowRead>
<allowEdit>true</allowEdit>
<allowDelete>false</allowDelete>
<modifyAllRecords>false</modifyAllRecords>
<viewAllRecords>false</viewAllRecords>
<viewAllFields>false</viewAllFields>
<object>Account</object>
</objectPermissions>
步驟 3:設定欄位層級安全
為敏感或自訂欄位定義欄位權限:
<fieldPermissions>
<editable>true</editable>
<readable>true</readable>
<field>Account.SSN__c</field>
</fieldPermissions>
重要事項:
- 必填欄位絕對不能出現在欄位權限清單中。平台不允許對必填欄位授予欄位層級安全,否則會導致部署失敗。
- 在新增任何欄位之前,請從物件中繼資料確認該欄位存在且非必填。
- 當欄位的中繼資料包含
<required>true</required>時,該欄位即為必填: - 公式欄位不可編輯
- 主從關係欄位在子(詳細資料)物件上是必填欄位
<fields>
<fullName>FieldName__c</fullName>
<required>true</required>
</fields>
- 欄位參考使用
ObjectName.FieldName格式 - 當使用者需要編輯權限時,請將 readable 和 editable 都設為 true;editable 隱含 readable
- 如果所有欄位都應可見,也可以改為啟用 "viewAllFields" 物件權限
步驟 4:授予使用者權限
為功能和能力新增系統層級權限:
<userPermissions>
<enabled>true</enabled>
<name>ApiEnabled</name>
</userPermissions>
<userPermissions>
<enabled>true</enabled>
<name>RunReports</name>
</userPermissions>
常見權限:
ApiEnabled:API 存取ViewSetup:檢視設定選單ManageUsers:使用者管理RunReports:報表執行
需要安全審查的權限:
ViewAllData:讀取所有記錄ModifyAllData:編輯所有記錄ManageUsers:使用者管理
步驟 5:設定應用程式和頁籤可見性
讓應用程式和頁籤對使用者可見:
<applicationVisibilities>
<application>Sales_Console</application>
<visible>true</visible>
</applicationVisibilities>
<tabSettings>
<tab>CustomTab__c</tab>
<visibility>Visible</visibility>
</tabSettings>
應用程式可見性選項:
- <visible> 可為 true 或 false
頁籤可見性選項:
Visible:頁籤可在「所有頁籤」頁面上使用,並顯示在其關聯應用程式的可見頁籤中。可自訂。Available:頁籤可在「所有頁籤」頁面上使用。個別使用者可自訂其顯示,讓頁籤在任何應用程式中可見。None:不可見
重要 - 頁籤命名:
- 自訂物件頁籤:必須包含 __c 後綴(例如 MyCustomObject__c)
- 標準物件頁籤:使用物件名稱並加上 "standard-" 前綴(例如 standard-Account、standard-Contact)
- 頁籤名稱必須與物件的 API 名稱完全相符
步驟 6:新增 Apex 和 Visualforce 存取(選用)
授予自訂程式碼的存取權:
<classAccesses>
<apexClass>CustomController</apexClass>
<enabled>true</enabled>
</classAccesses>
<pageAccesses>
<apexPage>CustomPage</apexPage>
<enabled>true</enabled>
</pageAccesses>
步驟 7:設定授權和記錄類型設定(選用)
指定授權需求和記錄類型可見性:
<license>Salesforce</license>
<hasActivationRequired>false</hasActivationRequired>
<recordTypeVisibilities>
<recordType>Account.Business</recordType>
<visible>true</visible>
<default>true</default>
</recordTypeVisibilities>
步驟 8:設定 Agent 存取(選用)
為指派至此權限集的使用者啟用 Agentforce Employee Agents 的存取權:
<agentAccesses>
<agentName>Sales_Assistant_Agent</agentName>
<enabled>true</enabled>
</agentAccesses>
欄位需求:
- agentName(必填):員工 Agent 的開發人員名稱
- enabled(必填):設為 true 以授予存取權,設為 false 以拒絕
重要事項:
- Agent 名稱必須與現有的 Agentforce Employee Agent 開發人員名稱相符
驗證檢查清單
部署前,請確認:
- [ ] 已設定 fullName、label、description
- [ ] 權限遵循最小權限原則
- [ ]
<fieldPermissions>中沒有必填欄位 - [ ] 沒有重複的權限
- [ ] 沒有冗長的註解
導致部署失敗的原因
- 必填欄位的欄位權限:
<fieldPermissions>中的任何必填欄位都會導致部署失敗。必填欄位不能有 FLS;請完全省略。務必從物件/欄位中繼資料確認欄位存在且非必填,切勿假設。 - 錯誤的 API 名稱: 使用錯誤的名稱或缺少後綴(例如自訂物件、欄位、頁籤缺少
__c)會導致失敗。
部署
使用 Salesforce CLI 部署






