Lightning 웹 보안 시작하기
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- Lightning 웹 보안을 설명할 수 있습니다.
- Lightning 웹 보안의 이점을 나열할 수 있습니다.
Lightning 웹 보안이란 무엇인가요?
관리자와 개발자가 조직에 새로운 기능을 추가할 때 조직 보안은 최우선 순위입니다. 사전 구축된 구성 요소(Salesforce 또는 AppExchange에서 제공)와 사용자 정의로 구축된 구성 요소 모두 위험을 초래하여 조직이 위험한 코드에 의해 손상될 수 있습니다.
그러나 보안은 성능이나 기능 제한에 대한 결과를 초래해서는 안 됩니다. 따라서 Salesforce는 조직의 보안을 유지하기 위해 Lightning 웹 보안(LWS)을 만들었습니다. LWS는 새로운 Lightning 구성 요소 사용 사례를 통해 더욱 더 개선된 기능을 추가합니다. 하지만 LWS에 대해 자세히 알아보기 전에 이전 버전인 Lightning Locker를 간단히 살펴보겠습니다.
Lightning Locker
이미 Lightning 구성 요소를 사용하고 있다면 Lightning Locker에 익숙하실 겁니다. Lightning Locker는 Lightning 구성 요소 네임스페이스를 자체 컨테이너에 격리하고 코딩 모범 사례를 적용하여 Lightning 웹 구성 요소 및 Aura 구성 요소를 안전하게 유지하는 표준이 되었습니다. 예를 들어 c-editor
라는 구성 요소는 c 네임스페이스에서 가져왔으며 ltngmu
네임스페이스의 구성 요소와 격리되어 있습니다.
Lightning Locker는 당분간 유지됩니다. Lightning 웹 구성 요소를 위한 LWS(GA)와 Aura를 위한 LWS(베타)는 사용자 정의 Lightning 웹 구성 요소나 Aura 구성 요소를 포함하고 있지 않은 조직에서 기본적으로 활성화됩니다. 이를 통해 2022년 봄에 발표한 LWS 아키텍처의 점진적인 롤아웃을 계속 진행할 수 있습니다. Lightning 웹 보안은 보안 및 성능 구성 요소의 미래이므로 LWS로 빠르게 이동할수록 조직이 더 안전하고 빨라집니다.
차세대 Lightning 웹 보안
Lightning 웹 보안은 Lightning 구성 요소를 위한 새로운 서비스입니다. Lightning 구성 요소를 사용하는 경우 Salesforce 페이지에는 다른 회사의 구성 요소가 포함될 수 있습니다. 또한 사용자 정의 구성 요소는 Salesforce에서 생성한 구성 요소 및 개발자가 개발하거나 사용하는 AppExchange의 앱과 혼합됩니다.
정적 리소스에서 로드된 타사 라이브러리를 포함하여 사용 환경의 다양한 소스에서 여러 구성 요소를 사용하면 잠재적인 위협을 방지할 수 있습니다. 구성 요소의 악성 코드는 창, 문서 또는 요소와 같은 전역 개체에 액세스하여 해당 리소스 또는 데이터를 얻어 조직 전반에 걸쳐 피해를 줄 수 있습니다.
JavaScript 샌드박스를 통한 보안
Lightning 웹 보안의 아키텍처는 네임스페이스 전용 JavaScript sandbox에서 각 구성 요소를 분리하여 사용자 환경에서 작동합니다. 한 구성 요소의 위험 코드는 네임스페이스 외부의 다른 구성 요소의 리소스에 액세스할 수 없습니다.
Lightning 웹 보안 사용 사례
Lightning Locker와 Lightning 웹 보안은 안전하지 않은 API의 동작을 차단하거나 수정하지만, LWS는 성능과 보안을 향상시키는 이러한 추가 사용 사례를 제공합니다.
크로스 네임스페이스 구성 요소 사용
Lightning 웹 구성 요소는 다른 네임스페이스에서 구성 요소 또는 모듈을 가져와 구성 또는 확장을 통해 사용할 수 있습니다. 구성 요소는 자체 네임스페이스 JavaScript sandbox에 투명하게 격리됩니다. 이 과정은 사용자 모르게 조용히 진행됩니다.
전역 개체와 상호 작용
Lightning Locker는 구성 요소를 격리하고 성능을 제한하며 일부 타사 라이브러리의 사용을 금지하는 보안 래퍼가 필요합니다. Lightning 웹 보안은 안전하지 않은 코드를 탐지하는 구성 요소의 동작을 차단하거나 수정하여 안전한 래퍼의 필요성을 제거합니다. 코드가 있는 sandbox에서 이 작업을 수행하므로 문제를 야기하지 않습니다. 이를 통해 구성 요소에서 타사 라이브러리를 사용할 수 있는 더 많은 자유와 유연성을 얻을 수 있습니다.
iFrame 컨텐츠 및 Identity Lightning 웹 보안에 액세스
Lightning Web 구성 요소가 iFrame 요소의 컨텐츠에 액세스할 수 있으므로 Lightning Locker에서 차단한 다른 웹 개발 기능을 사용할 수 있습니다.
성능 향상
안전한 래퍼가 없어도 네임스페이스 JavaScript sandbox의 코드는 더 빠르게 실행됩니다.
타사 JavaScript 라이브러리의 지원 향상
LWS에서 라이브러리는 자체 네임스페이스 JavaScript sandbox에서 실행되므로 전역 개체 조작과 같은 작업을 수행할 수 있습니다. 전역 개체에 대한 이러한 변경 사항은 다른 네임스페이스의 구성 요소에는 영향을 주지 않습니다.
JavaScript가 진화함에 따라 진화하는 Lightning 웹 보안
LWS는 브라우저 플랫폼과 함께 발전하는 최신 TC39 표준을 모델로 하고 있습니다. 즉, 기술이 변화함에 따라 시대에 뒤떨어지지 않습니다.
다음 유닛에서는 Lightning 웹 보안이 어떻게 작동하는지, LWS의 영향을 받는 구성 요소가 있는지, 조직에서 LWS를 활성화하는 방법을 자세히 살펴보겠습니다.