작업 영역 신뢰
Visual Studio Code는 보안을 중요하게 생각하며, 소스나 원본 작성자에 관계없이 코드를 안전하게 탐색하고 편집할 수 있도록 지원합니다. 작업 영역 신뢰 기능은 프로젝트 폴더 내의 코드가 명시적인 승인 없이 VS Code 및 확장 프로그램에 의해 실행될 수 있는지 여부를 결정할 수 있게 해줍니다.

안전한 코드 브라우징
공개 저장소 및 파일 공유를 통해 많은 소스 코드를 이용할 수 있다는 점은 매우 좋습니다. 어떤 코딩 작업이나 문제든, 이미 어딘가에 좋은 해결책이 마련되어 있을 가능성이 높습니다. 또한 코드를 이해하고, 디버그하고, 최적화하는 데 도움이 되는 강력한 코딩 도구가 많이 있다는 점도 좋습니다. 그러나 오픈 소스 코드와 도구를 사용하는 것에는 위험이 따르며, 악성 코드 실행 및 취약점에 노출될 수 있습니다.
작업 영역 신뢰는 작업 영역이 "제한 모드"로 열려 있을 때 작업 영역 내의 모든 코드 실행을 자동으로 방지함으로써, 익숙하지 않은 코드 작업 시 추가적인 보안 계층을 제공합니다.
참고: "작업 영역"과 "폴더"라는 용어는 VS Code UI 및 설명서 전반에 걸쳐 널리 사용됩니다. "작업 영역"을 VS Code에서 생성하고 사용하는 추가 메타데이터가 있는 폴더로 생각할 수 있습니다.
제한 모드
작업 영역 신뢰 대화 상자에서 프롬프트가 표시될 때, **아니요, 작성자를 신뢰하지 않습니다**를 선택하면 VS Code는 코드 실행을 방지하기 위해 제한 모드로 전환됩니다.
작업대 상단에 폴더를 작업 영역 신뢰 편집기를 통해 관리할 수 있는 링크가 있는 배너가 표시됩니다. 상태 표시줄에서도 작업 영역이 제한 모드임을 나타내는 배지가 표시됩니다.

제한 모드는 작업, 디버깅, 작업 영역 설정 및 확장 프로그램과 같은 여러 VS Code 기능의 작동을 비활성화하거나 제한하여 자동 코드 실행을 방지하려고 시도합니다.
제한 모드에서 비활성화된 기능의 전체 목록을 보려면 배너의 관리 링크를 클릭하거나 상태 표시줄의 제한 모드 배지를 선택하여 작업 영역 신뢰 편집기를 열 수 있습니다.

중요: 작업 영역 신뢰는 악성 확장 프로그램이 코드를 실행하고 **제한 모드**를 무시하는 것을 막을 수 없습니다. 신뢰할 수 있는 잘 알려진 게시자가 제공하는 확장 프로그램만 설치하고 실행해야 합니다.
작업
VS Code 작업은 스크립트와 도구 바이너리를 실행할 수 있습니다. 작업 정의는 작업 영역의 .vscode 폴더에 정의되므로, 저장소의 커밋된 소스 코드에 포함되어 해당 저장소를 사용하는 모든 사용자에게 공유됩니다. 악의적인 작업을 생성하면 해당 저장소를 클론하는 누구든 자신도 모르게 실행될 수 있습니다.
제한 모드에서 작업을 실행하거나 열거하려고 하면 (작업 > 작업 실행), VS Code는 작업 실행을 계속해도 되는지 폴더를 신뢰하는지 확인하는 프롬프트를 표시합니다. 대화 상자를 취소하면 VS Code는 제한 모드로 유지됩니다.

디버깅
VS Code 작업을 실행하는 것과 유사하게, 디버그 확장 프로그램은 디버그 세션을 시작할 때 디버거 바이너리를 실행할 수 있습니다. 이러한 이유로, 폴더가 제한 모드로 열려 있을 때는 디버깅도 비활성화됩니다.
제한 모드에서 디버그 세션을 시작하려고 하면 (디버그 > 디버그 시작), VS Code는 디버거 시작을 계속해도 되는지 폴더를 신뢰하는지 확인하는 프롬프트를 표시합니다. 대화 상자를 취소하면 VS Code는 제한 모드로 유지되고 디버그 세션은 시작되지 않습니다.

작업 영역 설정
작업 영역 설정은 작업 영역의 루트에 있는 .vscode 폴더에 저장되므로, 작업 영역 저장소를 클론하는 모든 사용자와 공유됩니다. 일부 설정에는 실행 파일(예: 린터 바이너리)의 경로가 포함되어 있으며, 이를 악성 코드를 가리키도록 설정하면 손상을 일으킬 수 있습니다. 이러한 이유로 VS Code는 제한 모드에서 실행될 때 특정 작업 영역 설정을 비활성화합니다.

작업 영역 신뢰 편집기에서 적용되지 않는 작업 영역 설정에 대한 링크를 선택하면 @tag:requireTrustedWorkspace 태그로 범위가 지정된 설정 편집기가 열립니다.

확장
VS Code 확장 프로그램 생태계는 매우 풍부하고 다양합니다. 거의 모든 프로그래밍 작업이나 편집기 사용자 정의를 돕는 확장 프로그램을 사람들이 만들었습니다. 일부 확장 프로그램은 전체 프로그래밍 언어 지원(IntelliSense, 디버깅, 코드 분석)을 제공하고, 다른 확장 프로그램은 음악을 재생하거나 가상 애완동물을 키울 수 있게 해줍니다.
대부분의 확장 프로그램은 사용자를 대신하여 코드를 실행하며 잠재적으로 해를 끼칠 수 있습니다. 일부 확장 프로그램은 예상치 못한 실행 파일을 실행하도록 구성된 경우 악의적으로 작동할 수 있는 설정을 가지고 있습니다. 이러한 이유로, 작업 영역 신뢰에 명시적으로 옵트인하지 않은 확장 프로그램은 제한 모드에서 기본적으로 비활성화됩니다.

설치된 확장 프로그램의 상태는 작업 영역 신뢰 편집기에서 확장 프로그램이 비활성화되었거나 기능이 제한되었습니다 링크를 선택하여 확인할 수 있습니다. 이 링크는 @workspaceUnsupported 필터로 범위가 지정된 확장 프로그램 보기를 표시합니다.

작업 영역 신뢰에 옵트인하지 않은 확장 프로그램은 제한 모드에서 비활성화되거나 기능이 제한될 수 있습니다.
제한 모드에서 비활성화됨
제한 모드 실행을 명시적으로 지원한다고 표시하지 않은 확장 프로그램은 제한 모드에서 비활성화됨 섹션에 표시됩니다. 확장 프로그램 작성자는 작업 영역의 수정(설정 또는 파일)으로 인해 확장 프로그램이 오용될 수 있다고 판단하는 경우 제한 모드에서 활성화되지 않도록 표시할 수도 있습니다.
제한 모드에서 제한됨
확장 프로그램 작성자는 가능한 보안 취약점에 대해 확장 프로그램을 평가하고 제한 모드에서 실행될 때 **제한된** 지원을 선언할 수도 있습니다. 이 모드는 확장 프로그램이 가능한 악용을 방지하기 위해 일부 기능이나 기능을 비활성화할 수 있음을 의미합니다.
확장 프로그램은 작업 영역 신뢰 배지에 사용자 지정 텍스트를 추가하여, 신뢰하지 않는 폴더에서 실행될 때의 제한 사항을 설명할 수 있습니다. 예를 들어, VS Code 내장 PHP 확장 프로그램은 php.validate.executablePath 설정의 사용을 신뢰하는 폴더로 제한합니다. 이 설정을 재정의하면 악성 프로그램을 실행할 수 있기 때문입니다.

아래의 확장 프로그램 사용 설정 섹션에 설명된 extensions.supportUntrustedWorkspaces 설정을 사용하여 확장 프로그램의 작업 영역 신뢰 지원 수준을 재정의할 수 있습니다.
제한 모드에서 확장 프로그램을 설치하려고 하면, 작업 영역을 신뢰할 것인지 아니면 확장 프로그램만 설치할 것인지 묻는 프롬프트가 표시됩니다. 확장 프로그램이 작업 영역 신뢰를 지원하지 않으면 설치되지만, 비활성화되거나 기능이 제한적으로 실행됩니다.

참고: 확장 프로그램 작성자는 작업 영역 신뢰 확장 프로그램 가이드를 읽고 확장 프로그램을 업데이트하여 작업 영역 신뢰를 지원하는 방법을 배울 수 있습니다.
작업 영역 신뢰
프로젝트의 작성자와 유지 관리자를 신뢰하는 경우, 로컬 컴퓨터에서 프로젝트의 폴더를 신뢰할 수 있습니다. 예를 들어, github.com/microsoft 또는 github.com/docker와 같이 잘 알려진 GitHub 조직의 저장소를 신뢰하는 것이 일반적으로 안전합니다.
새 폴더를 열 때, 초기 작업 영역 신뢰 프롬프트는 해당 폴더와 하위 폴더를 신뢰할 수 있는 옵션을 제공합니다.

작업 영역 편집기를 열고 신뢰 또는 상위 폴더 신뢰 버튼을 선택하여 폴더의 신뢰 상태를 빠르게 전환할 수도 있습니다.

작업 영역 신뢰 편집기 대화 상자를 여는 몇 가지 방법이 있습니다.
제한 모드일 때
- 제한 모드 배너의 관리 링크
- 제한 모드 상태 표시줄 항목
언제든지 다음을 사용할 수도 있습니다.
- 작업 영역: 작업 영역 신뢰 관리 명령을 명령 팔레트에서 실행 (⇧⌘P (Windows, Linux Ctrl+Shift+P))
폴더 선택
폴더를 신뢰하면 작업 영역 신뢰 편집기에 표시되는 신뢰하는 폴더 및 작업 영역 목록에 추가됩니다.

이 목록에서 폴더를 수동으로 추가, 편집 및 제거하여 작업 영역 신뢰를 사용하거나 사용 중지할 수 있습니다. 활성 폴더는 이 목록에서 굵게 표시됩니다.
상위 폴더 선택
작업 영역 신뢰 편집기를 통해 폴더를 신뢰할 때, 상위 폴더도 신뢰할 수 있는 옵션이 있습니다. 이는 상위 폴더와 모든 하위 폴더에 신뢰를 적용합니다.

상위 폴더를 신뢰하는 것은 신뢰할 수 있는 콘텐츠가 많은 폴더를 하나의 폴더 아래에 함께 배치할 때 유용할 수 있습니다.
신뢰하는 상위 폴더 아래의 하위 폴더를 열면, 제한 모드로 돌아가는 신뢰 안 함 버튼이 일반적으로 표시되지 않습니다. 대신, 다른 폴더 때문에 폴더가 신뢰된다는 내용이 표시됩니다.
신뢰하는 폴더 및 작업 영역 목록에서 상위 폴더 항목을 추가, 수정 및 제거할 수 있습니다.
폴더 구성
상위 폴더를 신뢰하면 모든 하위 폴더가 신뢰되므로, 디스크상의 저장소 위치를 통해 작업 영역 신뢰를 제어할 수 있습니다.
예를 들어, 모든 신뢰하는 저장소를 "TrustedRepos"라는 상위 폴더 아래에 두고, 익숙하지 않은 저장소는 "ForEvaluation"과 같은 다른 상위 폴더 아래에 둘 수 있습니다. "TrustedRepos" 폴더를 신뢰하고 "ForEvaluation" 아래의 폴더를 선택적으로 신뢰하게 됩니다.
├── TrustedRepos - Clone trusted repositories under this parent folder
└── ForEvaluation - Clone experimental or unfamiliar repositories under this parent folder
조직별 상위 폴더 아래에 저장소를 그룹화하고 신뢰를 설정할 수도 있습니다.
├── github/microsoft - Clone a specific organization's repositories under this parent folder
├── github/{myforks} - Place your forked repositories under this parent folder
└── local - Local un-published repositories
확장 프로그램 사용 설정
만약 제한 모드를 사용하고 싶은데 즐겨 사용하는 확장 프로그램이 작업 영역 신뢰를 지원하지 않으면 어떻게 될까요? 이는 확장 프로그램이 유용하고 기능적이지만, 적극적으로 유지 관리되지 않아 작업 영역 신뢰 지원을 선언하지 않은 경우 발생할 수 있습니다. 이 시나리오를 처리하기 위해 extensions.supportUntrustedWorkspaces 설정을 사용하여 확장 프로그램의 신뢰 상태를 재정의할 수 있습니다.
중요: 확장 프로그램의 작업 영역 신뢰 지원을 재정의할 때는 주의하십시오. 확장 프로그램 작성자가 제한 모드에서 확장 프로그램을 비활성화하는 데는 타당한 이유가 있을 수 있습니다. 의심스러운 경우, 확장 프로그램 작성자에게 문의하거나 최신 변경 로그를 검토하여 더 많은 맥락을 얻으십시오.
설정 편집기(⌘, (Windows, Linux Ctrl+,))에서 확장 프로그램: 신뢰하지 않는 작업 영역 지원 설정(extensions.supportUntrustedWorkspaces)을 사용하여 개별 확장 프로그램의 작업 영역 신뢰를 재정의할 수 있습니다.

settings.json에서 편집 링크를 선택하여 확장 프로그램 ID 목록과 해당 지원 상태 및 버전을 관리합니다. IntelliSense 제안을 통해 설치된 확장 프로그램을 선택할 수 있습니다.
아래는 Prettier 확장 프로그램에 대한 settings.json 항목입니다.
"extensions.supportUntrustedWorkspaces": {
"esbenp.prettier-vscode": {
"supported": true,
"version": "6.4.0"
},
},
supported 속성을 사용하여 작업 영역 신뢰 지원을 사용하거나 사용 중지할 수 있습니다. version 속성은 적용 가능한 정확한 확장 프로그램 버전을 지정하며, 모든 버전에 대해 상태를 설정하려면 버전 필드를 제거할 수 있습니다.
확장 프로그램 작성자가 제한 모드에서 어떤 기능을 제한할지 평가하고 결정하는 방법에 대해 더 알고 싶으시면, 작업 영역 신뢰 확장 프로그램 가이드를 읽어보십시오.
신뢰하지 않는 파일 열기
신뢰하는 폴더 외부에 있는 파일을 열면, VS Code는 파일이 폴더 루트 외부에서 온 것을 감지하고 파일을 계속 열거나 제한 모드에서 새 창으로 열 수 있는 옵션을 제공합니다. 제한 모드에서 여는 것이 가장 안전한 옵션이며, 파일이 신뢰할 수 있다고 판단되면 원래 VS Code 창에서 언제든지 파일을 다시 열 수 있습니다.

신뢰하지 않는 작업 영역에서 파일을 열 때 프롬프트가 표시되는 것을 원하지 않으면, security.workspace.trust.untrustedFiles을 open으로 설정할 수 있습니다. 또한 security.workspace.trust.untrustedFiles을 newWindow로 설정하여 항상 제한 모드에서 새 창을 만들 수 있습니다. 신뢰하지 않는 파일 대화 상자에서 모든 작업 영역에 대한 내 결정 기억 옵션을 선택하면 선택 사항이 security.workspace.trust.untrustedFiles 사용자 설정에 적용됩니다.
신뢰하지 않는 폴더 열기
여러 폴더가 있는 다중 루트 작업 영역으로 작업할 때, 신뢰하는 다중 루트 작업 영역에 새 폴더를 추가하려고 하면 해당 폴더의 파일을 신뢰할지, 아니면 신뢰하지 않을 경우 전체 작업 영역이 제한 모드로 전환될지 결정하는 프롬프트가 표시됩니다.

빈 창 (폴더 없음)
기본적으로, 폴더나 작업 영역을 열지 않고 새 VS Code 창(인스턴스)을 열면, VS Code는 창을 전체 신뢰 모드로 실행합니다. 설치된 모든 확장 프로그램이 활성화되며 제한 없이 빈 창을 사용할 수 있습니다.
파일을 열 때, 부모 폴더가 없기 때문에 신뢰하지 않는 파일을 열 것인지 묻는 프롬프트가 표시됩니다.
작업 영역 신뢰 편집기(명령 팔레트에서 작업 영역: 작업 영역 신뢰 관리 선택)를 사용하여 빈 창을 제한 모드로 전환하고 신뢰 안 함을 선택할 수 있습니다. 빈 창은 현재 세션 동안 제한 모드로 유지되지만, 다시 시작하거나 새 창을 만들면 신뢰 모드로 돌아갑니다.
모든 빈 창을 제한 모드로 하려면, security.workspace.trust.emptyWindow를 false로 설정할 수 있습니다.
설정
다음은 사용 가능한 작업 영역 신뢰 설정입니다.
- security.workspace.trust.enabled - 작업 영역 신뢰 기능 사용. 기본값은 true입니다.
- security.workspace.trust.startupPrompt - 시작 시 작업 영역 신뢰 대화 상자 표시 여부. 기본값은 각 고유 폴더 또는 작업 영역당 한 번만 표시됩니다.
- security.workspace.trust.emptyWindow - 빈 창 (폴더 없음)을 항상 신뢰할지 여부. 기본값은 true입니다.
- security.workspace.trust.untrustedFiles - 작업 영역의 독립 실행 파일 처리를 제어합니다. 기본값은 프롬프트입니다.
- extensions.supportUntrustedWorkspaces - 확장 프로그램 작업 영역 신뢰 선언 재정의. true 또는 false.
- security.workspace.trust.banner - 제한 모드 배너가 표시되는 시기를 제어합니다. 기본값은
untilDismissed입니다.
명령줄 스위치
VS Code 명령줄에서 --disable-workspace-trust를 전달하여 작업 영역 신뢰를 비활성화할 수 있습니다. 이 스위치는 현재 세션에만 영향을 미칩니다.
다음 단계
자세히 알아보기
- 작업 영역 신뢰 확장 프로그램 가이드 - 확장 프로그램 작성자가 작업 영역 신뢰를 지원하는 방법을 알아봅니다.
- VS Code "작업 영역"이란 무엇인가? - VS Code "작업 영역" 개념에 대한 자세한 내용을 확인합니다.
- GitHub Repositories 확장 프로그램 - 소스 코드를 로컬 컴퓨터로 클론하지 않고 저장소에서 직접 작업합니다.
자주 묻는 질문
제한 모드에서도 소스 코드를 편집할 수 있습니까?
예, 제한 모드에서도 소스 코드를 탐색하고 편집할 수 있습니다. 일부 언어 기능이 비활성화될 수 있지만, 텍스트 편집은 항상 지원됩니다.
설치된 확장 프로그램이 어디로 갔나요?
제한 모드에서는 작업 영역 신뢰를 지원하지 않는 모든 확장 프로그램이 비활성화되며, 활동 표시줄 아이콘 및 명령과 같은 모든 UI 요소가 표시되지 않습니다.
주의해서 extensions.supportUntrustedWorkspaces 설정을 사용하여 확장 프로그램의 작업 영역 신뢰 지원 수준을 재정의할 수 있습니다. 확장 프로그램 사용 설정에서 더 자세한 내용을 확인할 수 있습니다.
작업 영역 신뢰 기능을 비활성화할 수 있습니까?
하지만 권장하지 않습니다. 새 폴더나 저장소를 열 때 VS Code가 작업 영역 신뢰를 확인하지 않도록 하려면, security.workspace.trust.enabled를 false로 설정할 수 있습니다. 그러면 VS Code는 1.57 릴리스 이전과 같이 작동합니다.
폴더/작업 영역의 신뢰를 해제하려면 어떻게 해야 하나요?
작업 영역 신뢰 편집기(명령 팔레트에서 작업 영역: 작업 영역 신뢰 관리)를 열고 신뢰 안 함 버튼을 선택합니다. 신뢰하는 폴더 및 작업 영역 목록에서 폴더를 제거할 수도 있습니다.
"신뢰 안 함" 버튼이 보이지 않는 이유는 무엇인가요?
작업 영역 신뢰 대화 상자에서 신뢰 안 함 버튼이 보이지 않는다면, 폴더의 신뢰 수준이 상위 폴더로부터 상속된 것일 수 있습니다. 신뢰하는 폴더 및 작업 영역 목록을 검토하여 상위 폴더가 작업 영역 신뢰를 사용 설정했는지 확인하십시오.
GitHub Codespace에 연결하거나 실행 중인 Docker 컨테이너에 연결하는 것과 같은 일부 워크플로는 자동으로 신뢰됩니다. 이들은 이미 높은 수준의 신뢰를 가져야 하는 관리 환경이기 때문입니다.
작업 영역 신뢰는 무엇을 방지합니까?
VS Code의 많은 기능은 린팅 또는 저장 시 서식 지정, 코드 컴파일 또는 디버깅과 같은 특정 작업을 수행할 때와 같이 타사 도구 및 확장 프로그램이 자동으로 실행되도록 합니다. 비윤리적인 사람은 악성 코드가 실행되어 로컬 컴퓨터를 손상시키는 악의적인 코드를 실행하는 죄가 없는 프로젝트를 만들 수 있습니다. 작업 영역 신뢰는 익숙하지 않은 소스 코드의 안전성과 무결성을 평가하는 동안 코드 실행을 방지하려고 함으로써 추가적인 보안 계층을 제공합니다.