platform-permission-set-generate について
Salesforceの権限セットメタデータを作成・編集するスキルです。オブジェクト、項目、ユーザー、アプリ、タブ、および任意のコードやエージェントへのアクセスを設定し、よくあるデプロイ失敗も確認します。
主な機能
- 01権限セットの名前と目的の定義
- 02オブジェクト権限と項目権限の設定
- 03ユーザー権限とアプリ表示の設定
- 04任意のコードおよびエージェントアクセスの付与
- 05メタデータ名とデプロイリスクの確認
活用シーン
- 01特定のユーザーグループ向け権限セットの作成
- 02指定されたオブジェクトや項目へのアクセス編集
- 03Salesforce CLIでのデプロイ前にメタデータを確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill platform-permission-set-generateインストール後、Claude Code で/platform-permission-set-generateを入力して読み込まれたか確認します。
詳細
このスキルを使用する場面
権限セットのメタデータを生成または編集する場合、あるいはオブジェクト、項目、ユーザー、アプリの権限を付与する場合に使用します。
ステップ 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」を有効にできます。
- 項目権限を付与するのは、リクエストで明示的に指定された項目だけです。リクエストで指定された項目と同じパターンに基づいて、別の項目を推測して追加してはいけません(例:
BillingAddress/BillingCityが指定されていても、対応するShipping*項目を追加してよいことにはなりません)。推測で追加した項目は、パターンから見て正当な名前に思えても、デプロイに失敗する場合があります。
ステップ 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>
アプリの表示オプション:
- は 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:エージェントへのアクセスを設定する(任意)
この権限セットを割り当てられたユーザーに、Agentforce Employee Agents へのアクセスを有効にします。
Sales_Assistant_Agent true項目の要件:
- agentName(必須):Employee Agent の開発者名
- enabled(必須):アクセスを許可する場合は true、拒否する場合は false に設定します。
重要:
- エージェント名は、既存の Agentforce Employee Agent の開発者名と一致している必要があります。
検証チェックリスト
デプロイする前に、以下を確認します。
- fullName、label、description が設定されている
- 権限が最小権限の原則に従っている
-
<fieldPermissions>に必須項目が含まれていない - 権限が重複していない
- 長すぎるコメントがない
デプロイが失敗する原因
- 必須項目に対する項目権限:
<fieldPermissions>内に必須項目があると、デプロイは失敗します。必須項目には FLS を設定できないため、完全に省略してください。必ずオブジェクト/項目のメタデータで、項目が存在し、必須ではないことを確認してください。決して推測しないでください。 - API 名の誤り: 誤った名前を使用したり、サフィックス(例:カスタムオブジェクト、項目、タブの
__c)を付け忘れたりすると、失敗します。 - 存在しない項目: オブジェクトに存在しない項目に対する項目権限(リクエスト内の別の項目からパターンマッチして作成した、もっともらしい名前の項目を含む)を設定すると、デプロイは失敗します。項目権限を付与するのは、リクエストで実際に指定された項目だけにしてください。
- 権限の依存関係の不足: 一部のユーザー権限(例:
ModifyAllData)は、依存する権限も有効になっていないとデプロイに失敗します。依存関係のエラーを回避するために、リクエストされていないユーザー権限を追加しないでください。代わりに、組織全体または管理者に関するリクエストは、セキュリティレビューにエスカレーションしてください。
デプロイ
Salesforce CLI を使用してデプロイします
コメント
Markdown 対応