
データローダーのユーザーはシステム管理者ではなくインテグレーションユーザーを使おう!
インテグレーションユーザーの概要
Spring'23 のリリースノートにあるインテグレーションユーザーを試してみました。
今まで皆さん専用のユーザーを購入していたり、システム管理者を使っていたのではないかと思いますが、現在"Salesforce Integration"というライセンスが1組織に5ライセンス付与されていて、これをAPIユーザーとして利用可能になっています。
もちろん、このユーザーはデータローダーにも利用することができるため、安全にデータローダーを利用することができるようになります。
どういうことかというと、データローダーは当然ながらログインしたユーザーの権限でデータを操作します。
つまり、本来データローダーで使わせたくないデータについてもアクセスできたり、削除が可能となります。
また、作成者や更新者はログインしたユーザーになってしまうので、データローダーで変更したのか、ユーザが直接変更したのか分かりにくく、セキュリティ面であまり良いことではありませんでした。
そこで、このインテグレーションユーザーが登場しました。
インテグレーションユーザーの作成と権限の付与
1. ユーザーの作成
新規でユーザーを作成する際にユーザーライセンスとして"Salesforce Integration"を選択してユーザーを作成します。

設定したメールアドレスにアカウントを確認してくださいというメールが来るのでアカウントを確認をクリックします。

通常のユーザーと同じようにパスワードの設定画面が開くので、パスワードを設定します。

パスワードを変更をクリックすると通常では、ホーム画面が開きますがAPI限定ユーザーなので、アクセスできないため以下のような画面になるので、画面を閉じてください。

2.権限セットライセンスの付与
この権限セットライセンスの付与をしないと標準オブジェクトにアクセスできないので、ご注意ください。
付与したいSalesforce Integration ユーザーを開き、権限セットライセンスの割り当てから Salesforce API Integrationを選択して割り当てします。

3.権限セットの作成と付与
オブジェクトへアクセスを許可するための権限セットを作成します。
標準オブジェクトへアクセスする権限セットを作成するためにはライセンスは"なし"のままで作成します。
Salesforce Integrationを選択すると標準オブジェクトの権限を設定することができないので注意してください。

あとは環境に合わせて、必要なオブジェクトの権限を付与してユーザーに割り当てしてください。
データローダーを試してみる
OAuth認証
表示されるログイン画面にIDとパスワードを入力することで、問題なくインテグレーションユーザーでログインできました。


Password Authentication(セキュリティトークンの利用)
データローダーバッチを利用する際にはこちらの認証が必要になります。
その際に信頼されているIPからのアクセスでは必要ありませんが、それ以外からのアクセスではセキュリティトークンが必要になります。ただし、本ライセンスではWebにアクセスできないので、残念ながらそのままではセキュリティトークンを取得することができません。
以下のようにideaExchangeにもあがっています。
https://ideas.salesforce.com/s/idea/a0B8W00000GdbfuUAB/api-only-profile-users-should-receive-security-token
これでは、データローダーバッチには本ユーザーは利用できないことになってしまうので、色々試したところ、以下の方法でセキュリティトークンを取得することができました。
ライセンスをログインできるライセンス(SalesforceやPlatformに変更)
ログインをしてセキュリティトークンを取得(こちらを参照)
ライセンスを"Salesforce Integration"に戻す
このとき権限セットライセンスや権限セットもリセットされているので合わせて元に戻してください
こちらで取得したセキュリティトークンを利用してPassword Authenticationを利用することで、ログインすることが可能です。
オブジェクト選択画面
権限セットで許可したオブジェクトのみ表示されます。

まとめ
このように、システム管理者で行っている場合は、すべてのオブジェクトが表示されるため、間違えてしまうということもあるかと思います。
インテグレーションユーザーを利用することで、他のオブジェクトにアクセスできないようにすることでのセキュリティを確保するだけでなくヒューマンエラーの防止にも効果的です。
ぜひ、ご活用ください。
# 記事内の日本語表記はWinter'24に合わせてユーザではなくユーザーにしてます。
# https://successjp.salesforce.com/article/NAI-000551