generating-permission-set について
権限セットメタデータを作成・編集する Salesforce 管理者や開発者向けのスキルです。オブジェクト、項目、ユーザー、アプリ、タブ、および任意のエージェントアクセスを設定し、よくあるデプロイエラーを確認します。
主な機能
- 01権限セットの基本プロパティ設定
- 02オブジェクトの CRUD 権限設定
- 03項目レベルセキュリティの設定
- 04ユーザー権限の付与
- 05アプリとタブの表示設定
- 06任意のコードおよびエージェントアクセス追加
活用シーン
- 01役割に応じた権限セットの作成
- 02指定したオブジェクトや項目へのアクセス付与
- 03アプリとタブの利用可否設定
- 04デプロイ前のメタデータ確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill generating-permission-setインストール後、Claude Code で/generating-permission-setを入力して読み込まれたか確認します。
詳細
このスキルを使用するタイミング
権限セットのメタデータを生成または編集する場合、あるいはオブジェクト、項目、ユーザー、アプリの権限を付与する場合に使用します。
ステップ 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の形式を使用します。 - ユーザーに編集アクセスが必要な場合は、閲覧可能と編集可能の両方をtrueに設定します。編集可能にすると閲覧可能になります。
- すべての項目を表示する必要がある場合は、代わりにオブジェクト権限の「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>
アプリの表示オプション:
- は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(必須):従業員エージェントの開発者名
- enabled(必須):アクセスを許可するにはtrue、拒否するにはfalseを設定します。
重要:
- エージェント名は、既存の Agentforce Employee Agent の開発者名と一致する必要があります。
検証チェックリスト
デプロイ前に、次の項目を確認してください。
- fullName、label、descriptionが設定されている
- 権限が最小権限の原則に従っている
-
<fieldPermissions>に必須項目が含まれていない - 権限が重複していない
- 長いコメントがない
デプロイに失敗する原因
- 必須項目に対する項目権限:
<fieldPermissions>に必須項目が含まれていると、デプロイは失敗します。必須項目にはFLSを設定できないため、完全に省略してください。項目を追加する際は、必ずオブジェクト/項目のメタデータを確認して、その項目が存在し、必須ではないことを確かめてください。決して推測しないでください。 - API 名が正しくない: 名前を間違えたり、サフィックス(カスタムオブジェクト、項目、タブの
__cなど)を省略したりすると、失敗します。
デプロイ
Salesforce CLIを使用してデプロイします。
コメント
Markdown 対応