Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

Lightning Web セキュリティの FAQ

公開日: Jan 30, 2025
説明

Lightning Web セキュリティ (LWS) は、Lightning コンポーネント (ライトニング コンポーネント)用の新しいクライアント側セキュリティアーキテクチャです。この新しいアーキテクチャは、少ない制限と多くの機能で定義されていますが、名前空間を強制的に分離する強力な Sandbox(サンドボックス) 化とセキュリティ体制も備えています。これにより、Lightning コンポーネントの柔軟性と利便性の高い強力なセキュリティが実現します LWS は、Lightning コンポーネント用の Lightning Locker (ライトニング ロッカー) の代わりに使用することを目的としています。

解決策

よくある質問


Lightning Web セキュリティの基本


LWS の有効化


詳細情報


*********************************************************************************************************************************

Lightning Web セキュリティの基本


Lightning Web セキュリティとは?
Lightning Web セキュリティ (LWS) は、Lightning コンポーネント用の新しいクライアント側セキュリティアーキテクチャです。この新しいアーキテクチャは、少ない制限と多くの機能で定義されていますが、名前空間を強制的に分離する強力な Sandbox 化とセキュリティ体制も備えています。これにより、Lightning コンポーネントの柔軟性と利便性の高い強力なセキュリティが実現します。

Lightning Locker は、すべての Lightning コンポーネントのデフォルトのセキュリティアーキテクチャとされてきました。Lightning Web セキュリティ (LWS) は当初、Lightning Web コンポーネント用の Lightning Locker からの置き換えとされていましたが、Aura コンポーネントのサポートが複数のリリースにわたって追加されます。

先頭に戻る

Lightning Web セキュリティで解決する問題は?
Lightning Web セキュリティでは、Lightning コンポーネントが他の名前空間のコンポーネントのデータに干渉またはアクセスするには、その名前空間の明示的な許可が必要になります。

Lightning ページには複数の会社が作成したコンポーネントが含まれている可能性があります。組織の開発者チームが作成したコンポーネントは、Salesforce が作成したコンポーネントと共存します。アプリケーションを作成してパッケージで AppExchange に配信すると、コンポーネントは、Salesforce が作成したコンポーネントや、アプリケーションをインストールするお客様のコンポーネントと共存します。

予防策が講じられていない場合、コンポーネントは window グローバルオブジェクトにアクセスし、ページ上の他のコンポーネントから非公開リソースやデータを取得できます。1 つの予防策として、コンポーネントを名前空間で分離する方法があります。これにより、悪意のあるコンポーネントはその名前空間外にあるコンポーネントのリソースにアクセスできなくなります。

名前空間の分離は透過的かつ仮想的なものであり、コンポーネントは、すべてが同一環境で動作しているかのように動作し、他の名前空間からコンポーネントをインポートします。

先頭に戻る

Lightning Web セキュリティのしくみは?
Lightning Web セキュリティでは、コンポーネントはそのコンポーネントの名前空間専用の JavaScript Sandbox に分離されます。この Sandbox 化により、セキュリティの脅威にさらされることなく document、window、および element グローバルオブジェクトを直接公開できます。LWS では、安全でない動作を回避できるように、JavaScript Sandbox で実行されるコードが変更されます。詳細は、「Lightning Web セキュリティのしくみ」を参照してください。

先頭に戻る

Lightning Web セキュリティと Lightning Locker の違いは?
Lightning Web セキュリティは次の点で Lightning Locker とは異なります。

  • クロス名前空間コンポーネントの使用。Lightning コンポーネントでは、他の名前空間からコンポーネントまたはモジュールをインポートし、composition または extension を介して使用できます。コンポーネントは各自の名前空間の JavaScript Sandbox で分離されますが、LWS で仮想通信がバックグラウンドで実行されるため透過的になります。
  • グローバルオブジェクトとのセキュアなインタラクション。各名前空間には独自の JavaScript Sandbox があるため、document、window、element グローバルオブジェクトを直接公開できます。ラッパーを使用してコンポーネントを保護する必要はありません。Lightning Web セキュリティは、これらのオブジェクトの動作を変更して、コンポーネントが、別の名前空間のコンポーネントで使用されるグローバルオブジェクトにアクセスしないようにします。
  • iframe コンテンツおよび ID へのアクセス。Lightning コンポーネントは、コンテンツが別のオリジンからのものであっても、iframe 要素のコンテンツにアクセスできます。iframe の ID は、postMessage イベントオリジンの ID の確認が通常どおりに機能するように、Sandbox 境界を越えても維持されます。Lightning Locker によって iframe のコンテンツへのアクセスがブロックされます。
  • カスタム要素とサードパーティの Lightning 以外の Web コンポーネントの使用。Lightning コンポーネントでは、カスタム要素を作成し、サードパーティの Web コンポーネントを使用することができます。お客様が作成した要素やサードパーティの Web コンポーネントの使用は、Lightning Locker によってブロックされます。
  • パフォーマンスの向上。Lightning Web セキュリティでは、パフォーマンスを低下させるセキュアなラッパーが使用されないため、この名前空間の JavaScript Sandbox では、Lightning Locker よりも迅速にコードを実行できます
  • サードパーティの JavaScript のサポートの改善。ライブラリは JavaScript Sandbox で実行され、グローバルな変更が他の名前空間のコンポーネントに影響しないため、ライブラリでは、グローバルオブジェクトを操作するなどの手法を使用できます。Lightning Locker では、window、document、および element オブジェクトのセキュアなラッパーバージョンが提供され、それらのグローバルオブジェクトの一部の API へのアクセスが防止されます。ラッパーにより、それらの保護された API にアクセスする一部のサードパーティライブラリの使用が防止されます。
  • 進化に合わせた標準 JavaScript との互換性の確保。Lightning Web セキュリティは、ブラウザのプラットフォームに合わせて進化する最新の TC39 標準を手本にしています。


先頭に戻る

Lightning Web セキュリティは Lightning Locker よりも安全ですか?
現在、Lightning Web セキュリティと Lightning Locker では同等のセキュリティレベルが提供されます。主な違いは、Lightning Web セキュリティでは、より多くの JavaScript 機能を使用でき、コードをより高速に実行できることです。

LWS のアーキテクチャでは、安全でない動作をきめ細かくブロックできるため、LWS では Lightning Locker で防止される機能を安全に有効化できます。たとえば、LWS では、API の使用を完全に防止するのではなく、コンポーネントで API のプロパティを設定することを防止できます。

詳細は、「Lightning Web セキュリティと Lightning Locker の比較」を参照してください。

先頭に戻る

Locker の安全性が劣らないのであれば、LWS に移行する理由は何ですか?
Lightning Web セキュリティは Lightning Experience プラットフォームに統合されているため、Lightning Locker と同じセキュリティ保護機能が提供され、2 つのアーキテクチャ間で簡単に移行できます。Lightning コンポーネントは当初、いずれかのアーキテクチャで実行できることが想定されていました。ただし、これらのアーキテクチャには根本的な違いがあります。

LWS では活発な開発が行われている新しい Web 標準が採り入れられているのに対して、Lightning Locker は十分な Web 標準がまだ存在していなかった時期に Salesforce によって実装されたユニークなソリューションです。LWS は将来の Lightning コンポーネントセキュリティであり、Lightning Locker は従来の Lightning コンポーネントセキュリティの実装と考えることができます。Salesforce は、LWS で実装される Web 標準の開発に参加しています。その開発プロジェクトでは現在、LWS を推進しており、Lightning Locker は維持されてはいますが、拡張されてはいません。

LWS のほうが Lightning Locker よりも全体的なパフォーマンスが優れているため、LWS を採用するメリットはあります。LWS アーキテクチャでは安全でないすべての API に関してラッパーではなく Sandbox の視覚化の概念を使用しています。この手法により、データの安全性を確保するうえで常に足枷となるパフォーマンスの低下が少なくなります。最初のページ読み込みの後で、LWS では Lightning Locker の場合よりもコンポーネントの実行が速くなります。

すべてのコンポーネントを LWS で実行でき、Lightning Locker に戻す必要がなくなれば、コンポーネントを拡張して「Lightning Web セキュリティと Lightning Locker の比較」で説明されている他の利点を活用できるようになります。

Lightning Web セキュリティで Aura コンポーネントのサポートを追加できるよう、バックグラウンドで開発が行われてきました。最初の LWC のみ正式リリースという制限は、Lightning Web セキュリティの進化の過程における一時的なものでした。Summer '23 リリースで、Aura 用 LWS が正式リリースされました。

組織やコンポーネントを LWS に移行する意思決定に関する問題は、いつ移行するかであって、移行するかどうかではありません。最終的に、Lightning Locker は Lightning コンポーネントセキュリティのソリューションとして利用できなくなる予定です。LWS への移行が早ければ早いほど、コンポーネントのセキュリティやパフォーマンスは向上します。

先頭に戻る

Lightning Web セキュリティが正式リリースされるタイミングは?
Lightning Web セキュリティは、Summer '23 で LWC および Aura コンポーネント用に正式リリースされます。

いずれは、Lightning Locker は LWS に完全に置き換えられる予定です。

先頭に戻る

お客様は Lightning Web セキュリティを有効化する必要がありますか?
お客様には、まず Sandbox 環境で LWS を有効化してテストし、その後、本番環境で有効化することをお勧めします。LWS は、パッケージを介してインストールされるコンポーネントを含め、すべての Lightning コンポーネントに影響を及ぼします。詳細は、「When to Enable Lightning Web Security (Lightning Web セキュリティを有効にするタイミング)」を参照してください。

LWS は段階的アプローチを使用して自動的に有効化されます。詳細は、「LWS の有効化」セクションを参照してください。

先頭に戻る

ISV パートナーにとってのパッケージ化への影響は?
ISV パートナーのパッケージ化戦略は、ISV ソリューションで使用されるコンポーネントの種別、顧客組織で有効になっているセキュリティアーキテクチャなど、いくつかの要因によって異なります。

次の表に、ISV パートナーにとってのパッケージ化への影響がまとめられています。

ISV パッケージ内の
コンポーネント
Lightning Locker で
サポート
Lightning Web セキュリティでサポート必要なパッケージ顧客組織の
LWS 設定
Aura コンポーネントのみ。はいはい1有効または無効
LWS 専用の機能を使用しない*
Aura コンポーネントと Lightning Web コンポーネント。
はいはい1有効または無効
Aura コンポーネントなし。LWS 専用の機能を使用しない
Lightning Web コンポーネント。
はいはい1有効または無効
Aura コンポーネントなし。
LWS 専用の機能を使用するLightning Web コンポーネント。
いいえ。

Locker では、LWS 専用の機能を使用しないコンポーネント
が含まれる個別のパッケージが必要です。
はい2LWS 専用の機能を使用する
パッケージの場合は有効。

LWS 専用の機能を使用しない
パッケージの場合は無効。

* LWS のみの機能として、グローバルオブジェクトの操作、他の名前空間からのコンポーネントやモジュールのインポートまたは拡張、iframe 要素のコンテンツへのアクセスなどがあります。

詳細は、「What ISV Partners Need to Know About Lightning Web Security (Lightning Web セキュリティについて ISV パートナーが知っておくべきこと)」ブログを参照してください。

パートナーは、LWS が有効になっている最新リリースの Sandbox 組織またはテスト組織で製品をテストし、正しい動作を確認できます。「Workflow to Try Your Components with Lightning Web Security (Lightning Web セキュリティでコンポーネントを試すワークフロー)」を参照してください。

製品が Lightning Web セキュリティを使用して期待どおりに動作することを確認した後に、パートナーは顧客と協力して、顧客組織で Lightning Web セキュリティを有効化できるかどうかを判断できます。本番で LWS を有効化できる条件が示されている「When to Enable Lightning Web Security (Lightning Web セキュリティを有効にするタイミング)」を参照してください。

パートナーが新しい Lightning Web セキュリティ機能を利用していない場合は、2 つのバージョンのパッケージを維持する必要はありません。Lightning Locker で機能しているパッケージは LWS でも機能します。

別の名前空間からのコンポーネントのインポートなど、LWS によって有効化された機能を利用するためにパートナーが新しいパッケージをリリースする場合、次のことを行います。


Lightning Web セキュリティを有効化できない顧客もパートナーがサポートする場合、パートナーは、Salesforce によってすべての組織で Lightning Web セキュリティが 100% 有効化されるまで、Lightning Locker で機能する別パッケージを提供する必要があります。

両方のアーキテクチャでの顧客のサポートには、パートナーが Lightning Locker でブロックされる機能を使用する場合にのみ、Lightning Locker と Lightning Web セキュリティに固有の別パッケージが必要になります。

先頭に戻る

現在お客様で LWS が有効かどうかを ISV パートナーが知る方法は?
お客様に依頼して [設定] の LWS 設定を確認するか、プログラムでメタデータ API を使用して lockerServiceNext 設定の値を確認します。この値が true である場合、LWS は有効になっています。『メタデータ API 開発者ガイド』の「SecuritySettings」セクションを参照してください。

エクスペリエンスビルダーサイトの場合、LWS と Locker は組織の LWS 設定とは別に設定されます。お客様に依頼してエクスペリエンスビルダーで Lightning Locker の設定を確認するか、プログラムでメタデータ API を使用して isLockerServiceEnabled 設定の値を確認します。この値が true である場合、LWS は有効になっています。『メタデータ API 開発者ガイド』の「ExperienceBundle」セクションを参照してください。

先頭に戻る

LWS が Experience Cloud サイトに与える影響は?
Experience Cloud には複数の種別のサイトがあります。それぞれについて説明は、「Experience Cloud 用語集」を参照してください。

Aura サイトには LWC コンポーネントと Aura コンポーネントを含めることができます。Summer '23 で組織の LWS 設定が有効になった場合、LWS により Aura サイトの両方の種類のコンポーネントが保護されます。組織の LWS が有効化されない場合、Lightning Locker により Aura サイトのコンポーネントが保護されます。Aura サイトの設定で Lightning Locker を無効にすると、現在有効なセキュリティアーキテクチャが無効になります。LWS が組織レベルで有効化されている場合、Aura サイトで Lightning Locker を無効にすると、実際には Aura サイト用の LWS が無効になります。

LWR サイトの実行では Lightning Web Runtime (LWR) が使用され、提供される独自の LWS のインスタンスでサイトの LWC コンポーネントが保護されます。LWS インスタンスは別に存在するため、組織の LWS 設定は LWR サイトには無効です。LWR サイトで Lightning Locker を無効にすると、組織で LWS が有効になっていたとしても、そのサイトの LWS のインスタンスが無効になります。「Lightning Locker」という名前が使用されているのは、新しいセキュリティアーキテクチャが LWR に追加されたのが、「Lightning Web セキュリティ」という名前が決まる前だったからです。エクスペリエンスビルダーでの名前は更新される予定です。関連情報については、Salesforce ヘルプの「LWR Template Limitations (LWR テンプレートの制限事項)」を参照してください。

Salesforce タブ + Visualforce サイトは LWS と Lightning Locker のどちらでも保護されません。異なるセキュリティアーキテクチャを使用します。組織の LWS 設定は無効です。

詳細は、『Experience Cloud 開発者ガイド』の「Develop Secure Sites: CSP, LWS, and Lightning Locker (セキュアなサイトの開発: CSP、LWS、Lightning Locker)」を参照してください。

先頭に戻る

Field Service では LWS を使用しますか?
Field Service では Lightning Web Runtime を使用しており、それによって LWS の独自のインスタンスが提供されます。組織の LWS 設定は、Field Service で使用されるインスタンスに影響を与えません。開発者が Field Service を拡張するために作成するカスタム Lightning Web コンポーネントは、LWR の LWS インスタンスによって保護されます。組織の LWS の有効化と無効化に関する情報を除き、LWS のドキュメントのほとんどは、Field Service のコンポーネントを扱う開発者にとっても関連性があります。

先頭に戻る
 

LWS の有効化


お客様の Lightning Web セキュリティは Salesforce によって有効化されるのですか?
はい、いずれ有効化されます。Salesforce では、LWS が成熟し、組織における Lightning Locker から LWS へのスムーズな移行を保証できるようになったら、今後のリリースで段階的に、LWS を継続的に有効化することを計画しています。Winter '24 から自動有効化を再開することを想定しています (セーフハーバー)。


先頭に戻る

Summer '23 では、Salesforce で LWS が自動的に有効になりますか?
いいえ。Summer '23 では、既存の組織で LWS は自動的に有効化されることはありません。  Sandbox 組織で LWS を使用して LWC および Aura コンポーネントをテストし、コンポーネントが期待どおりに動作することを確認してから、本番組織で LWS を有効にすることを強くお勧めします。

Sandbox 組織でのテストで LWC または Aura コンポーネントの問題が判明した場合、本番組織では LWS を有効にしないでください。  サポートケースを登録してください。

先頭に戻る



新しい組織で LWS がデフォルトで有効化されている場合、どのような影響が考えられますか?
Winter '23 リリースノートで、Lightning Web コンポーネント用の LWS が新しい Salesforce 組織ではデフォルトで有効になることが発表されました。Spring '23 リリース以降、新しい Salesforce 組織では Aura コンポーネント用 LWS (ベータ) もデフォルトで有効化されました。Aura コンポーネント用 LWS は Summer '23 で正式リリースされ、新しい組織でも引き続きデフォルトで有効になります。

新しい組織へのマージや分割を予定しているカスタマイズ済みの組織の場合、既存の組織でLightning コンポーネントが使用されているかどうかを判断します。同様に、複数組織のお客様の場合は、新しい組織のブートストラップに使用するメタデータテンプレートおよびコードリポジトリで Lightning コンポーネントが使用されているかどうかを判断します。LWS が有効化されていない組織で使用していた独自の Lightning コンポーネントやパッケージ済み Lightning コンポーネントを新しい組織で使用する場合は、新しい組織で LWS を有効化して実行するよう注意してください。必ず、Lightning コンポーネントまたは Lightning コンポーネントが含まれる管理パッケージを [Lightning Web コンポーネント用および Aura コンポーネント用 Lightning Web セキュリティの使用] 設定が有効化された Sandbox 環境でテストしてください。

パッケージが LWS に対応しているかどうかは、管理パッケージベンダーにお問い合わせください。LWS は必要に応じて無効にできますが、最初に LWS に関する問題を解決できるようにサポートケースを登録することをお勧めします。

先頭に戻る

LWS がデフォルトで有効になるのはどこですか?
LWS は Lightning Web コンポーネントと Aura コンポーネントに影響を及ぼすようになり、次の種類の組織で有効になります。

  • 新しい組織
  • スクラッチ組織
  • LWC コンポーネントと Aura コンポーネントのどちらも含まれていない本番組織
  • Spring '23 で LWC 用 LWS が有効化されなかった場合、LWC コンポーネントは含まれているが Aura コンポーネントは含まれていない本番組織

先頭に戻る

LWS を有効にしている一部の組織は、Aura コンポーネント用 LWS の使用から除外されますか?
はい。Aura コンポーネントが含まれている本番組織では、知らない間に Aura 用 LWS のベータプログラムに参加することがないよう、内部設定によって Aura 用 LWS が除外されています。該当する組織では、Summer '23 でもこの設定が引き続き有効です。

Salesforce に Aura 用 LWS の除外設定をオフにするようリクエストする前に、Sandbox 組織で LWS を有効にして Aura コンポーネントをテストしてください。

先頭に戻る

本番組織で Aura コンポーネント用 LWS を使用しているかどうかはどのようにして判断できますか?
『Lightning Web コンポーネント開発者ガイド』の「Determine if LWS is Enabled (LWS が有効かどうかの判断)」を参照してください。

先頭に戻る

組織で Aura コンポーネント用 LWS から除外されている場合、どうすれば有効化できますか?
本番組織が Aura 用 LWS から除外されていると判断した場合は、サポートに連絡して、Aura 用 LWS の除外の削除をリクエストしてください。最初に、LWS が有効になっている Sandbox 組織で Aura コンポーネントをテストすることを強くお勧めします。テストで使用するために、Aura 用 LWS は本番組織で除外されている場合でも Sandbox 組織では除外されません。

先頭に戻る
Salesforce によって有効化された Lightning Web セキュリティを無効化できますか?
はい。[セッション設定] ページで [Lightning Web コンポーネント用および Aura コンポーネント用 Lightning Web セキュリティの使用] をオフにすれば、簡単に Lightning コンポーネント用 Lightning Locker を再度使用できます。Lightning コンポーネントが適切に動作しないことが確認された場合は、サポートケースを登録してください。

Lightning Web セキュリティは今後のリリースですべてのお客様に対して徐々に有効化される予定です。これを無効化する設定は一時的なものであり、最終的に削除される予定です。(セーフハーバー)

先頭に戻る

本番組織で Lightning Web セキュリティが有効化された後にコンポーネントレベルで例外を指定するメカニズムがありますか?
いいえ。Lightning Web セキュリティが有効化されると、組織のすべての Lightning コンポーネントが影響を受けます。LWS を個々のコンポーネントで無効化することはできません。また、LWS は API バージョンに関わらず有効化されます。

本番組織で LWS を有効化する前に、すべての Lightning コンポーネントが LWS で実行できる状態であることを確認します。詳細は、「Workflow to Try Your Components with Lightning Web Security (Lightning Web セキュリティでコンポーネントを試すワークフロー)」を参照してください。

先頭に戻る

LWS のロールアウトのスケジュールは?
段階的な LWS のロールアウトの目標は、LWS の影響を受けないと想定される組織から開始し、最終的にはすべての組織で LWS を有効にすることです。ロールアウトの完了予定を明確にお答えすることはできません。リリースごとに、LWS のセキュリティ保護を微調整しながら、お客様の組織やコンポーネントへの悪影響を予測し、これを排除するように努めています。

これまでの経緯の概要は下記のとおりです。

Spring '22
  • Lightning Web セキュリティは、Lightning Web コンポーネントに対して正式リリースされましたが、Aura コンポーネントに対しては正式リリースされていません。Spring '22 リリースノート「Lightning Web セキュリティによるコンポーネントのセキュリティの改善、強化、迅速化」を参照してください。
  • Salesforce では、組織に Lightning Web コンポーネントのみが含まれていた数千のお客様を対象に、メールによる事前通知の後、Lightning Web コンポーネント用の Lightning Web セキュリティを段階的に有効化しました。

Summer '22

Winter '23

  • 新しい組織とスクラッチ組織では、Lightning Web コンポーネント用 LWS がデフォルトで有効になります。Winter '23 リリースノート「新規 Salesforce 組織でのデフォルトでの Lightning Web セキュリティの使用」を参照してください。
  • 一部のお客様が Aura コンポーネント用 LWS のクローズドパイロットプログラムに参加しました。
  • 有効になっているお客様の組織はありませんでした。

Spring '23

  • Aura コンポーネント用 LWS が、同じ [設定] を使用して制御されるベータ機能として使用可能になりました。Spring '23 リリースノート「Lightning Web コンポーネント (正式リリース) と Aura コンポーネント (ベータ) での Lightning Web セキュリティの使用」を参照してください。
  • 設定名は [Lightning Web コンポーネント (正式リリース) と Aura コンポーネント (ベータ) での Lightning Web セキュリティの使用] に変更されました。 
  • カスタムコンポーネントがない組織で [Lightning Web コンポーネント (正式リリース) と Aura コンポーネント (ベータ) での Lightning Web セキュリティの使用] が有効になりました。Spring '23 リリースノート「カスタムコンポーネントがない組織での Lightning Web セキュリティの有効化」を参照してください。
  • Spring '23 より前に組織で LWC 用 LWS が有効になっていた本番組織では、組織に Aura コンポーネントがない場合、[Lightning Web コンポーネント (正式リリース) と Aura コンポーネント (ベータ) での Lightning Web セキュリティの使用] が有効になっていました。Aura コンポーネントが含まれている本番組織では、知らない間に Aura 用 LWS のベータプログラムに参加することがないよう、内部設定によって Aura 用 LWS が除外されています。ただし、それらの本番組織に関連付けられていた Sandbox 組織は、Aura 用 LWS (ベータ) から除外されていません。

Summer '23

先頭に戻る


詳細情報


LWS の詳細を確認する場所は?
お客様とパートナーは、次のリソースで LWS についての詳細を確認することができます。

先頭に戻る
 
LWS について質問がある場合は、どこに問い合わせればよいですか?

  • サポートを受けたり問題を報告したりするには、「開発者サポート」トピックでサポートケースを登録して、コードまたはフレームワークにバグがあるかどうかを判断します。

  • 使用事例が現在サポートされていない場合は、アイデアを登録します。

  • 質問がある場合は、Trailblazer Community の「Lightning Components Development」グループにアクセスしてください。


先頭に戻る

 

ナレッジ記事番号

000392327

 
読み込み中
Salesforce Help | Article