セキュリティの担保と最適な連携方式の選択
Salesforce運用時によくあるリクエストの1つに外部サイトの連携があります。
多くのデータ資産を集中管理することの多いSalesforce導入企業では、保有しているデータ資産を有効活用するため、SalesforceをフロントエンドのCMSのバックエンドとして利用することで会員システムを構築できないかというようなお話です。
Webサイトからデータを登録する場合には、Web-to-リードやSalesforce サイトという仕組みが用意されていたり、Account Engagement を使えばフォームを使った連携を容易にすることも可能です。しかしながら、UIやバリデーションなどユーザー体験面では独自Webサイトと比べるとさまざまな制限事項があったり、ログイン認証機能をどうするかなどの課題も多く、あくまで会員サイト向けには補助的な役割にとどまることが多いです。
REST API を使った連携機能実装
より密なデータ連携をCMSと行いたい場合の一般的なケースとしては、Salesforce へ REST API で接続してデータ操作を行う方法を選択されるケースがあります。
この方法は各プログラム言語でコーディングすれば手軽にSalesforceとの連携を実現することが可能ですがデータ操作をリクエスト側に保持しているため、もし万が一API接続の認証情報が漏洩した場合にAPIユーザーの権限内で自由に操作を行われるという点には注意が必要です。
処理ロジックをSalesforce側のApexに
もう1つの方法として、当社が外部サイトとSalesforceのデータ連携時によく利用する方法で、Salesforce側にWebサービスとしてリクエストに合わせたデータだけを返答するAPIをApexで実装する方法です。
外部アプリケーションが REST アーキテクチャによってコードとアプリケーションにアクセスできるように、Apex クラスとメソッドを公開することができます。
Salesforce Developers
Salesforceには、外部サイトからのリクエストをRESTやSOAPで受け取って処理を行う機能が用意されていますので、どういうデータを返すかはリクエスト内容をもとにSalesforce側に配置したApexプログラムですべて制御することができます。
例えば、外部サイトからのリクエストにはログイン認証の結果だけを返すAPIを準備すれば、外部サイトからはログイン認証の結果以外のデータはSalesforceから取得することができないように制限をかけることができ、データ連携の安全性が飛躍的に高まります。
WordPressや各種CMSで構築したサイトの認証情報として、Salesforce上のデータ活用をご検討されているかたは、データ取得のロジックをSalesforce側のApexに持たせるWebサービス方式を検討してみてはいかがでしょうか。
※ API用のユーザーには、通常のREST API の権限は付与せず、Apex SOAP Webサービス、Apex REST Webサービスのみの権限を付与させることがポイント。