本ブログ内でも以前取り上げましたが、Salesforceは、顧客情報保護の観点から全ての自社製品に対し、多要素認証(MFA:Multi-Factor Authentication)の対応を必須化すると発表しており、今後も段階的にMFAの適用が進んでいくとのことです。
そこで本記事では、SalesforceへのMFA必須化に対して、クライアント証明書を使用した場合の対応方法について、実際の設定画面も交えて解説します。(対象:Windows 10、iOS 16.3.1)
なお、Salesforceの仕様では、クライアント証明書は指定のCAから発行されている必要があります。弊社「マネージドPKI Lite byGMO」で発行可能なクライアント証明書は、問題なくご利用いただけます。
※今回のテストでは、Salesforce社が無償で提供されているSalesforce Develop Editionを利用しています。
まずは①~④の設定を行っていきます。
証明書ベース認証の有効化
[設定] から、[ID 検証]メニューを選択します。
[ユーザが証明書を使用して認証できるようにする]にチェックをします。
ユーザ認証証明書のアップロード
- [設定] から [ユーザ認証証明書] を選択
- [新しい証明書をアップロード] をクリック
- [表示ラベル] にはSalesforceでの識別名を入力
- [ファイルを選択] をクリックして、ユーザ用にアップロードするクライアント証明書を指定※
- この証明書を使用して認証するユーザIDを選択
- [保存] をクリック
※アップロードする証明書はGSパネルから入手可能です。
上記データをテキストファイルに保存することで、証明書データとして利用できます。また、CSV出力やWeb APIを使うことで複数証明書データを一括取得することも可能です。
ログインページを証明書認証ベースに変更
- [設定] から、 [私のドメイン] を選択
- [認証設定] で [編集] をクリック
- [認証サービス] で、[証明書] を選択
- 「iOSでのユーザ認証にネイティブブラウザを使用」にチェック(iPhoneでの証明書認証を行う場合)
- [保存] をクリック
以上の操作で、ログイン認証がクライアント証明書のみとなります。
iPhoneの場合は、インストールされているクライアント証明書が1つの場合はバックグラウンドで証明書認証が行われます(複数ある場合は選択ダイアログが出現するので、Salesforceで設定した証明書を選択します)。
これでWindowsブラウザやiPhone専用アプリでのSalesforceの認証を証明書にすることができました。また、ログインIDと証明書の紐づけを解除するとログイン不可になります。ただし、これではまだID/パスワードでの認証を証明書に置き換えただけで1要素認証であることに変わりはないため、もう1つ認証要素を加えます。
多要素認証(MFA)の設定
管理者操作
管理者ログインし、 [設定] から、 [ID 検証]メニューを選択します。
[ユーザが Touch ID や Windows Hello などの組み込み Authenticator を使用して ID を検証できるようにする]にチェックをします。
利用者ごとの操作
Windowsの場合は、ブラウザでログインし[設定]から、[ユーザ]メニューを選択します。 自分を選び、[組み込みAuthenticator]欄で[追加]をクリックします。
画面の指示に従い、Windows Helloを組み込みAuthenticatorとして登録します。
本検証ではWindows Helloでのサインイン認証にPINを使用します。
iPhoneでも同様にsafariからアクセスして組み込みAuthenticatorを登録します。
管理者ログインし[設定] から[ID 検証]メニューを選択します。[Salesforce 組織へのすべての直接 UI ログインに多要素認証 (MFA) が必要]にチェックをします。
設定は以上となります。それでは、アクセスを試してみましょう。
SFへのログイン
Windows PC
ブラウザでSalesforceにアクセスします。証明書認証が成功すると次にWindows HelloでのPIN(暗証番号)認証が行われます。
iPhone
Salesforceアプリを起動します。証明書認証が成功すると次にFace ID (機種によってはTouch ID)による認証が行われます。
(生体認証に連続して失敗するとデバイスパスコードの入力を求められます)
なお、iOSの場合は他に「モバイルロック」というSFの機能があり、ログイン時、および設定した時間が経過した場合にFaceID(TouchID)もしくはパスコードの入力が求められるようになります。こちらはPCブラウザでは利用できませんが、管理者設定のみなのでシンプルです。
以上のように証明書(デバイス所有)に加え、生体(或いは記憶)といった2要素での認証が可能になります。
まとめ
Salesforceでは、パスワード認証の代わりとしての証明書認証ということで、これまで多要素認証の実現が難しかった側面がありますが、今回の検証のようにクライアント証明書を用いることでパスワードレスでの2要素認証の実現が可能となっております。クライアント証明書での認証に変えることで、ログイン時のID/パスワードの入力や、煩雑なパスワードの管理などの手間が無くなるため、Salesforceの要件をクリアすると同時にログイン時の利便性を向上させることにもつながります。
弊社ではテスト用の証明書を提供しております。無料でご利用いただけますので、本記事の設定をお試しされたい場合は、お気軽に弊社宛にお問い合わせください。