타입 프로바이더 보안

타입 프로바이더 보안

타입 프로바이더(Type Provider)가 편집기에서 어떻게 실행되는지, 왜 신뢰(Trust) 설정이 중요한지, 그리고 Visual Studio에서 신뢰를 어떻게 관리하는지 하나씩 살펴볼게요. F#의 타입 프로바이더는 외부 데이터에 연결해서 타입 정보를 바로 알려 주는 강력한 기능이지만, 그만큼 코드가 자동으로 실행된다는 점을 꼭 기억해야 해요.

출처

원문: Type Provider Security - F# | Microsoft Learn

본문

타입 프로바이더는 F# 프로젝트나 스크립트에서 참조하는 어셈블리(DLL)예요. 이 어셈블리 안에는 외부 데이터 소스에 연결하고, 그 타입 정보를 F# 타입 환경에 노출하는 코드가 들어 있어요. 보통 참조된 어셈블리의 코드는 컴파일한 뒤 실행할 때(그리고 스크립트라면 F# Interactive에 코드를 보낼 때)만 실행돼요.

하지만 타입 프로바이더 어셈블리는 조금 달라요. 코드를 편집기에서 그냥 탐색만 해도 Visual Studio 내부에서 실행되거든요. 타입 프로바이더가 실행돼야만 편집기에 Quick Info 툴팁이나 IntelliSense 자동 완성 같은 추가 정보를 넣어 줄 수 있기 때문이에요. 그 결과 타입 프로바이더 어셈블리는 Visual Studio 프로세스 안에서 자동으로 실행되기 때문에, 보안에 관한 추가적인 고려 사항이 생겨요.

보안 경고 대화 상자

특정 타입 프로바이더 어셈블리를 처음 사용할 때 Visual Studio는 보안 대화 상자를 표시해서, 이 타입 프로바이더가 곧 실행될 것이라고 경고해요. Visual Studio가 타입 프로바이더를 로드하기 전에, 이 특정 프로바이더를 신뢰할지 결정할 기회를 주는 거예요.

  • 타입 프로바이더의 출처를 신뢰한다면 "I trust this type provider." 를 선택하세요.
  • 출처를 신뢰하지 않는다면 "I do not trust this type provider." 를 선택하세요.

신뢰를 선택하면 그 프로바이더가 Visual Studio 안에서 실행되며 IntelliSense와 빌드 기능을 제공할 수 있게 돼요. 하지만 타입 프로바이더 자체가 악성이라면, 코드를 실행하는 순간 컴퓨터가 손상될 수 있다는 점도 함께 기억해야 해요.

프로젝트에 대화 상자에서 신뢰하지 않기로 선택한 타입 프로바이더를 참조하는 코드가 있다면, 컴파일 시점에 컴파일러가 "이 타입 프로바이더는 신뢰되지 않는다(untrusted)"는 오류를 보고해요. 신뢰되지 않은 타입 프로바이더에 의존하는 타입들은 빨간 물결선(red squiggles)으로 표시돼요. 이 경우에도 편집기에서 코드를 탐색하는 것 자체는 안전해요.

직접 Visual Studio에서 신뢰 설정을 바꾸고 싶다면 아래 단계를 따르세요.

타입 프로바이더 신뢰 설정 변경하기

  1. Tools 메뉴에서 Options 를 선택하고, F# Tools 노드를 펼치세요.
  2. Type Providers 를 선택한 뒤, 목록에 나열된 타입 프로바이더 중 신뢰하는 항목은 체크 표시하고, 신뢰하지 않는 항목은 체크를 해제하세요.

더 알아보기