Skip to content

セキュリティ

セキュリティメカニズム、権限モデル、CRUD/FLS実施。

権限モデル

Permission Sets

PERMISSION SETS FTS_App_Access (管理者) アプリ: FlexibleTeamShare タブ: すべて表示 Apex: すべてのクラス オブジェクト: 完全な CRUD + MAR Team_Sharing_Config: CRUD FTS_Data_Access (エンドユーザー) ObjectTeamMember__c: CRUD Team_Sharing_Config__c: Read Apex: コントローラーのみ View/Modify All Records なし
Permission Set対象者機能
FTS_App_Access管理者完全なアプリアクセス、すべてのタブ、すべてのApexクラス、オブジェクトへの完全なCRUD + Modify All Records、Team_Sharing_ConfigのCRUD
FTS_Data_AccessエンドユーザーObjectTeamMember__cのCRUD、Team_Sharing_Config__cの読み取り、コントローラーApexクラスのみ、View/Modify All Recordsなし

アクセス制御ロジック

チームメンバーを管理できるのは? いいえ いいえ いいえ はい はい はい システム管理者? レコードの所有者? ロールが Managerまたは Owner のチームメンバー? 許可 拒否

isCurrentUserManager()メソッドは、誰がチームメンバーを管理できるかを決定します:

  1. System Administrators — 常に許可
  2. Record Owners — 常に許可
  3. Manager/Ownerロールのチームメンバー — 許可
  4. その他全員 — 拒否

CRUD/FLS実施

CRUD/FLS チェック Create isCreateable() Update isUpdateable() +isCurrentUserManager() Delete isDeletable() +isCurrentUserManager() Read WITH USER_MODE 実行モード コントローラーで強制 昇格アクセス(without sharing) OWD/共有を尊重
操作セキュリティチェック実装
チームメンバー作成Schema.sObjectType.ObjectTeamMember__c.isCreateable()コントローラーで実施
チームメンバー更新isUpdateable() + isCurrentUserManager()認証後に昇格されたアクセス(without sharing)
チームメンバー削除isDeletable() + isCurrentUserManager()認証後に昇格されたアクセス(without sharing)
チームメンバー読み取りWITH USER_MODE / 共有モデルOWD/共有を尊重

入力検証

入力検証場所
recordId空白でない、有効なSalesforce ID形式Controller
userId空白でない、有効なUser IDController
accessLevel空白でない、有効なピックリスト値Controller + Picklist
role空白でない、有効なピックリスト値Controller + Picklist
endDate将来の日付またはnullである必要があるController + Validation Rule
objectApiNameSalesforce IDから導出(ユーザー入力ではない)Controller

検証ルール

ルールオブジェクト説明
End_Date_Cannot_Be_PastObjectTeamMember__c過去の終了日の設定を防止

アクセスレベルマッピング

ObjectTeamMember__cAccess_Level__c Read Only Read/Write [Object]ShareAccessLevel Read Edit

完全なセキュリティ概要

PERMISSION SETS FTS_App_Access管理者 FTS_Data_Accessエンドユーザー アクセス制御 System Admin Record Owner Manager/Owner ロール 共有モデル ObjectTeamMember__Share [Object]Share アクセスレベル Read Only → Read Read/Write → Edit

実装されたセキュリティベストプラクティス

制御ステータス実装
コントローラーでのCRUDチェック実装済みisAccessible()isCreateable()isUpdateable()isDeletable()
FLS実施実装済みPermission Setsがフィールドアクセスを制御
SOQLインジェクション防止実装済みユーザー入力にはバインド変数、オブジェクト名にはホワイトリスト
共有モデル実装済みコントローラーでwith sharing、文書化された場所でのみwithout sharing
入力検証実装済みNullチェック、形式検証、ビジネスルール
XSS防止実装済みLWCフレームワークが出力エンコーディングを処理

外部統合セキュリティ

チェック結果
HTTPコールアウトなし — パッケージは外部呼び出しを行いません
Named Credentials使用していません
External Objects使用していません
Remote Site Settings不要
CSP違反合格 — Content-Security-Policy違反なし