View on GitHub

compare-permissions

Salesforce's profile and permission set settings exporter to Excel and compare

compare-permissions

English
Salesforceのプロファイルと権限セットの設定値をExcelに出力し、比較します。

概要

Salesforceのプロファイルと権限セットの設定値をExcelに出力するCLIツールです。
複数組織を対象とした出力にも対応しており、Excel上で組織間の設定値を比較することができます。
以下の設定種別の出力に対応しています。

出力結果イメージ

インストール

Node.jsをインストールし、以下のファイルを任意のディレクトリに配置します。user_config_ja.yamlについては、user_config.yamlにリネームすると、設定ファイルの指定オプション無しで起動ができます。

※*_jaのファイルはconfigs/ja配下にあります。

以下のコマンドを実行し、必要なライブラリをインストールします。

$ npm ci

設定ファイルの編集

user_config.yamlを開き、組織名、インスタンスURL、コンシューマー鍵、コンシューマーの秘密を環境に合わせて変更します。組織への接続には、外部クライアントアプリケーションでクライアント資格情報フローのOAuth接続定義を作成する必要があります。OAuth設定時のOAuth範囲はapiのみで問題ありません。

org:
  - name: (任意の組織名1)
    instanceUrl: "https://(任意のドメイン名).my.salesforce.com"
    apiVersion : "65.0"
    clientId: "(任意のコンシューマー鍵)"
    clientSecret: "(任意のコンシューマーの秘密)"
#  - name: (任意の組織名2)
#    instanceUrl: "https://(任意のドメイン名).my.salesforce.com"
#    apiVersion : "65.0"
#    clientId: "(任意のコンシューマー鍵)"
#    clientSecret: "(任意のコンシューマーの秘密)"

以下はSOAPログインで接続する場合の設定です。APIバージョン64.0まで、かつSummer’27まで有効です。

org:
  - name: (任意の組織名1)
    loginUrl: "https://test.salesforce.com"
    apiVersion : "64.0"
    userName: "(ユーザ名)"
    password: "(パスワード)"
#  - name: (任意の組織名2)
#    loginUrl: "https://login.salesforce.com"
#    apiVersion : "64.0"
#    userName: "(ユーザ名)"
#    password: "(パスワード)"

出力対象とするプロファイル、権限セットを定義します。権限セットの場合には”ps: true”を付与します。

target:
  - name: "カスタムシステム管理者"
  - name: "カスタム一般ユーザ"
  - name: "営業ユーザ"
    ps: true

出力対象の設定種別、及び出力順を変更したい場合は以下を編集します。

settingType: [
  "ObjectPermission",
  "FieldLevelSecurity",
  "LayoutAssignment",
  "RecordTypeVisibility",
  "UserPermission",
  "ApplicationVisibility",
  "TabVisibility",
  "ApexClassAccess",
  "ApexPageAccess",
  "CustomPermission",
  "CustomMetadataTypeAccess",
  "CustomSettingAccess",
  "LoginIpRange",
  "LoginHour",
  "SessionSetting",
  "PasswordPolicy"
]

出力対象のオブジェクトを定義します。もし、このパラメータが未定義だった場合はプロファイル/権限セットに含まれる全オブジェクトを対象に出力します。

object: [
  Account, 
  Contact, 
  Opportunity, 
  User, 
]

使用方法

ターミナルでNode.jsを使用してcompare-permission.jsを実行します。オプションの指定が無い場合は、設定ファイルはデフォルトのファイルが使用されます。(デフォルトは”./user_config.yaml”)

$ node compare-permissions.js

実行中のログが画面に出力されます。

[Settings]
  AppConfigPath: app_config_ja.yaml
  TemplateFilePath: template_ja.xlsx
  ResultFilePath: result.xlsx
  TargetProfiles/PermissionSets:
    カスタムシステム管理者
    カスタム一般ユーザ
    営業ユーザ(PS)
  TargetSettingTypes:
    ObjectPermission
    FieldLevelSecurity
    :
    PasswordPolicy
  TargetObjects:
    Account
    Contact
    Opportunity
    User

[OrgInfo]
  Name:(YOUR ORG NAME)
  InstanceUrl:https://(任意のドメイン名).my.salesforce.com
  ApiVersion:65.0
[Processing profile: カスタムシステム管理者]
  Retrieving base info...
  Retrieving object permissions...
  Retrieving field-level security...
  Retrieving layout assignments...
  Retrieving record-type visibilities...
  Retrieving apex class accesses...
  Retrieving apex page accesses...
  Retrieving user permissions...
  Retrieving application visibilities...
  Retrieving tab visibilities...
  Retrieving login IP ranges...
  Retrieving login hours...
  Retrieving custom permissions...
  Retrieving custom metadata type accesses...
  Retrieving custom setting accesses...
:
[Exporting to an Excel file: result.xlsx]
Done.

実行が完了すれば、結果のExcelファイルが出力されます。(デフォルトは”./result.xlsx”)

実行時に使用可能なオプションは以下となります。

usage: compare-permissions.js [-options]
    -c <pathname> specifies a config file path (default is ./user_config.yaml)
    -s            don't display logs of the execution
    -h            output usage

注意事項

ライセンス

compare-permissionsはMITライセンスを適用しています。