状態チェックの実行
学習の目的
この単元を完了すると、次のことができるようになります。
- 状態チェックを使用して組織の安全をどのように確保できるかを説明する。
- 状態チェックの設定を使用して、Salesforce 組織内で実行しているアプリケーションのセキュリティを強化する。
Salesforce Platform セキュリティとカスタムアプリケーション
Salesforce 組織で実行するカスタムアプリケーションを作成するときに重要なのは、アプリケーション自体を保護するだけでなく、Salesforce インスタンスが安全であることです。大半のカスタムアプリケーションはビジネスに固有なため、開発者が作成するアプリケーションも各自の Salesforce 組織に固有のものになると思われます。
Salesforce は、プラットフォームをできるだけ安全にしようと常に努力しており、第三者が開発するアプリケーションのセキュリティも共有責任であると考えています。この取り組みの一環として、組織のビジネス要件に柔軟に対応できるように、セキュリティコントロールの一部を開発者に提供しています。
Salesforce のセキュリティ機能を使用すると、ユーザーはジョブを安全に効率的に実行できます。このモジュールでは、カスタムアプリケーションの開発時と実行時に Salesforce 組織のセキュリティを確保する重要な 2 つの方法について説明します。まず最初は状態チェックです。
状態チェックとは
状態チェックとは、組織のセキュリティ設定が、Salesforce が推奨する設定とどの程度一致しているかを確認できるダッシュボードです。0 ~ 100 のスコアで示され、100 は最も安全な設定を表します。このダッシュボードページから 1 回クリックするだけで、組織に組み込まれたセキュリティメカニズムの堅牢度を調整し、脆弱な設定を修正できます。1 つのページにすべてのセキュリティ設定が表示されるため、組織全体のセキュリティを一目で把握できます。概要スコアには、Salesforce の推奨事項、ベースライン、基準に組織がどの程度適合しているかが示されます。
状態チェックを使用する理由
状態チェックにより、組織のセキュリティ設定の無効な、または間違って設定されたセキュリティメカニズムが明らかになるため、カスタムアプリケーションをリリースするときにこの情報に基づいて組織のセキュリティを強化できます。この組み込み機能を使用することが大切な理由は、カスタムアプリケーションを作成してリリースするたびに組織全体のセキュリティに影響するためです。
Salesforce Platform で作成されたアプリケーションのほとんどは、所有者の組織にリリースされます。つまり、カスタムコードがどのように実行されるかは、組織のセキュリティをどのように設定するかに左右されます。
Salesforce アプリケーションの保護
Salesforce にリリースされたときにアプリケーションを安全に動作させるために重要なのは、適切なセキュリティ権限の有効化です。Lightning コンポーネントは、Lightning Web コンポーネント (LWC) と Aura コンポーネント (元のモデル) の 2 つのプログラミングモデルを使用して作成できます。ただし、Salesforce は概して Aura コンポーネントの使用を控えつつあり、代わりに LWC の使用を強く推奨しています。
LWC とは、HTML と JavaScript を使用して作成されるカスタム HTML 要素です。LWC と Aura コンポーネントは、1 つのページで共存と相互運用が可能です。どちらも Lightning コンポーネントとしてシステム管理者やエンドユーザーに表示されます。LWC はコア Web コンポーネント標準を使用し、Salesforce がサポートするブラウザーで適切に動作するために必要な機能のみを提供します。LWC はブラウザーでネイティブに実行されるコード上に構築されるため、軽量で卓越したパフォーマンスを発揮します。開発者が記述するコードの大部分は、標準の JavaScript と HTML です。
LWC のセッションの設定の保護
通常、Salesforce を基盤とするアプリケーションを実行するには次のすべてが必要です。
- Salesforce 組織
- LWC でのブラウザー側コード
- Apex でのサーバー側コード
適切なセキュリティ権限を有効化することで、Salesforce にリリースされたときに、アプリケーションがどう動作するかを変更できます。セキュリティ権限にアクセスするには、[Setup (設定)] | [Security (セキュリティ)] に移動します。または [Setup (設定)] の検索ボックスを使用して目的の設定を見つけてください。ほとんどのセキュリティ設定は、単純なオンとオフの切り替えです。以下のセキュリティ設定を有効にすることをお勧めします。
- HttpOnly
- ユーザー証明書
- クリックジャック保護
- HTTPS
- セッションタイムアウト
- クロスサイトスクリプティング (XSS) 保護
HttpOnly 属性が必要
HttpOnly 属性を設定すると、アプリケーションから送信される各 Cookie のセキュリティが厳格になり、アプリケーションと Salesforce サーバーの通信方法が変更されます。HttpOnly は、JavaScript による Cookie の読み取りを防止するため、ブラウザーは Cookie を受信できますが、ブラウザーで実行中のスクリプトで Cookie にアクセスまたは変更することはできません。
HttpOnly は Set-Cookie HTTP 応答ヘッダーに含まれる追加のフラグです。Cookie を生成するときに HttpOnly フラグを使用すると、クライアント側のスクリプトが保護された Cookie にアクセスするリスクを軽減できます。
ユーザー証明書を有効化
この設定を使用すると、組織で個々のユーザーを認証するときに、証明書ベースの認証で PEM エンコード X.509 デジタル証明書を使用できるようなります。
クリックジャック保護を有効化
サイトのクリックジャック保護は、次のいずれかのレベルに設定できます。
- すべてのページでフレーム化を許可 (保護なし)
- 公開元が同じページでのみフレーム化を許可 (推奨)
- すべてのページでフレーム化を許可しない (最大保護)
Salesforce コミュニティには 2 つのクリックジャック保護があります。両方を同じレベルに設定することをお勧めします。
- Force.com コミュニティサイト (Force.com サイトの詳細ページから設定)
- Site.com コミュニティサイト (Site.com 設定ページから設定)
HTTPS が必要
この設定は 2 か所で有効にする必要があります。
- [セッションの設定] の [サイトおよびコミュニティの HSTS] を有効にする。
- コミュニティまたは Salesforce サイトのセキュリティ設定で [セキュアな接続 (HTTPS) が必要] を有効にする。
セッションタイムアウトを設定する
組織に機密情報が保存されており、厳格なセキュリティを適用する必要がある場合は、タイムアウト期間を短く設定することをお勧めします。
次の値を設定できます。
- タイムアウト値
- セッションタイムアウト時に強制的にログアウト
- セッションタイムアウト時の警告ポップアップを無効にする
クロスサイトスクリプティング (XSS) 保護を有効化
反射型クロスサイトスクリプティング攻撃から保護する XSS 保護を有効にします。反射型クロスサイトスクリプティング攻撃が検出されると、コンテンツのない空白のページがブラウザーに表示されます。コンテンツがなければ、攻撃の挿入にスクリプトを利用できません。
これで、LWC の組み込み機能で組織を保護する方法がわかりました。次の単元では、アプリケーションの保護に Shield がどのように役立つか詳しく見ていきます。
リソース
- Trailhead: セキュリティの基本
- ナレッジ記事: Salesforce CRM サービスプラットフォームのセキュリティに関する FAQ
- 外部リンク: Open Web Application Security Project (OWASP) - HttpOnly (オープン Web アプリケーションセキュリティプロジェクト (OWASP) - HttpOnly)
- ナレッジ記事: 基本コンポーネント: Aura コンポーネントと Lightning Web コンポーネント
- Salesforce ヘルプ: Salesforce サイトの作成と編集
- Salesforce ヘルプ: Site.com でのクリックジャック保護の有効化
- Salesforce ヘルプ: セッションセキュリティ設定の変更