네트워크 접근 권한 값을 설정하는 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

이 항목에서는 네트워크 격리 개념 및 Windows 런타임 앱에 대한 네트워크 액세스를 완전히 제어하기 위해 네트워크 접근 권한 값을 설정하는 방법을 설명합니다. 네트워크 접근 권한 값은 Windows 런타임 앱에 필요한 네트워크 리소스에 대한 액세스 권한이 있고, 최종 사용자에게 액세스 수준과 관련한 정확한 기대치가 제공되도록 합니다. 이 항목을 이해하면 Windows 런타임 앱이 네트워크 리소스에 적절히 연결하도록 할 수 있습니다. 네트워크 격리를 구성하면 Windows 런타임 앱이 정확한 접근 권한 값을 구체적으로 요청해야만 네트워크 리소스에 액세스할 수 있게 됩니다.

알아야 할 사항

기술

사전 요구 사항

  • 다음 정보는 네트워크 연결을 필요로 하는 모든 연결된 Windows 런타임 앱 또는 네트워크 인식 Windows 런타임 앱에 적용됩니다. 이는 JavaScript로 개발된 앱에 적용됩니다. 또한 C#, VB.NET 및 C++에서 .NET Framework 4.5를 사용하여 개발된 앱에도 적용됩니다.

네트워크 격리 검사 목록

앱에 대해 네트워크 격리가 구성되었는지 확인할 때 이 검사 목록을 사용합니다.

  • 앱에 필요한 네트워크 액세스의 방향을 결정합니다. 이는 클라이언트에서 시작한 아웃바운드 요청 또는 원치 않는 인바운드 요청이거나 이 두 네트워크 요청 유형의 조합일 수 있습니다.
  • 앱에서 통신할 네트워크 리소스의 유형을 결정합니다. 앱은 홈 또는 회사 네트워크에 있는 신뢰할 수 있는 리소스와 통신해야 합니다. 앱에서 인터넷의 리소스와 통신해야 합니다. 앱에서 네트워크 리소스의 두 가지 유형 모두에 액세스할 수 있어야 합니다.
  • 앱 매니페스트에서 필요한 최소 네트워킹 격리 접근 권한 값을 구성합니다. 일반적으로 이 접근 권한 값은 앱을 개발할 때 Microsoft Visual Studio 2013을 사용하여 구성합니다.
  • 앱을 배포하고 실행하여 문제 해결을 위해 제공된 네트워크 격리 도구를 사용하여 테스트하세요.

네트워크 격리에 대한 추가 정보

모든 앱에서 네트워크 액세스가 필요한 것은 아니지만, Windows 8.1은 네트워크 액세스가 필요한 앱을 위해 여러 수준의 네트워크 액세스를 제공하며, 이는 알맞은 접근 권한 값을 선택하여 사용할 수 있습니다.

네트워크 격리를 사용하면 각 앱에 필요한 네트워크 액세스의 범위를 정의할 수 있습니다. 네트워크 액세스 요청은 두 범주로 나뉩니다.

  • 클라이언트에서 시작한 아웃바운드 요청
    앱이 클라이언트의 역할을 하면서 원격 컴퓨터, 주로 서버에 최초 네트워크 요청을 보내는 방법으로 네트워크 액세스를 시작합니다. 클라이언트 앱이 서버에 하나 이상의 요청을 보내고 서버가 클라이언트 앱에 단일 응답 또는 여러 응답을 보냅니다. 웹 클라이언트 앱에서 웹 서버로 가는 모든 트래픽이 이 범주에 속합니다.

  • 원치 않는 인바운드 요청
    앱이 네트워크 서버의 역할을 하면서 원격 컴퓨터가 보내는 인바운드 네트워크 요청을 수신합니다. 원격 컴퓨터가 서버의 역할을 하는 앱에 최초 요청을 보내 네트워크 액세스를 시작합니다. 원격 컴퓨터가 앱에 하나 이상의 요청을 보내고, 앱에서 원격 컴퓨터에 하나 이상의 응답을 보냅니다. 미디어 서버의 역할을 하는 앱이 이 범주에 속합니다.

범위가 정의되지 않은 앱은 지정된 유형의 네트워크 연결에 액세스할 수 없습니다. 네트워크 격리를 설정하고 적용하는 기능 덕분에 어떤 앱에 문제가 생기더라도 그 앱은 명시적으로 액세스 권한을 받은 네트워크에만 액세스할 수 있습니다. 즉 다른 응용 프로그램과 시스템에 영향을 미치는 범위가 크게 한정됩니다.

네트워크 격리는 다음 네임스페이스에서 네트워크에 액세스하려는 모든 메서드 및 속성에 영향을 줍니다.

Windows에서는 적극적으로 네트워크 격리가 적용됩니다. 알맞은 네트워크 접근 권한 값을 사용하도록 설정하지 않은 상태에서 네트워크에 액세스할 목적으로 이 네임스페이스의 메서드를 호출하거나 속성에 액세스할 경우 네트워크 격리 때문에 실패할 수 있습니다. 다른 네임스페이스의 클래스가 위 네임스페이스의 메서드를 호출하거나 속성에 액세스할 경우에도 영향을 받습니다.

앱의 네트워크 접근 권한 값은 앱이 빌드될 때 앱 매니페스트에 구성됩니다. 일반적으로 앱을 개발할 때 Visual Studio를 사용하여 네트워크 접근 권한 값을 추가합니다. 텍스트 편집기를 사용하여 앱 매니페스트에서 네트워크 접근 권한 값을 수동으로 설정할 수 있습니다.

네트워크 격리 및 접근 권한 값

네트워크 격리는 Windows 8에서 사용하는 응용 프로그램 보안 모델의 일부입니다. Windows에서는 적극적으로 네트워크 경계를 검색하고 네트워크 격리를 위한 네트워크 액세스 제한을 적용합니다. 다음은 시스템에서 검색될 네트워크 경계입니다.

  • 홈\회사 네트워크
    이는 로컬 홈 또는 회사 네트워크입니다. 컴퓨터가 연결된 로컬 서브넷 및 네트워크의 일부로 구성된 로컬 프록시로 구성됩니다. 인터넷 프록시는 이 경계에서 제외됩니다. 도메인 환경의 경우 여기에 Active Directory 사이트 및 서브넷에서 정의한 범위가 포함됩니다.

  • 인터넷
    홈 또는 회사 네트워크를 제외한 인터넷. 인터넷 액세스를 제공하는 모든 프록시로 구성됩니다. 홈/회사 네트워크에 속하지 않은 모든 네트워크 액세스를 인터넷으로 간주합니다.

Windows 8에서는 모든 원격 네트워크를 이러한 두 범주 중 하나로 분류합니다. 앱이 통신할 호스트에 적용 가능한 방향과 범주를 이해하면 앱에 적합한 접근 권한 값을 선택할 수 있습니다.

앱 매니페스트에서 네트워킹과 관련된 일부 접근 권한 값을 사용하도록 설정해야 앱에 네트워크 액세스 권한이 부여될 수 있습니다. 이 접근 권한 값은 Windows 8에서 경계를 적용할 때 사용하는 SID(보안 식별자)로 정의됩니다.

다음 네트워킹 격리 접근 권한 값이 정의됩니다.

Visual Studio에서 사용하는 용어 설명

인터넷(클라이언트)

인터넷 및 공공 장소(예: 공항, 커피숍)의 네트워크에 대한 아웃바운드 액세스를 제공합니다. 인터넷 액세스가 필요한 대부분의 앱은 이 접근 권한 값을 사용해야 합니다.

이는 앱 매니페스트에서 internetClient 접근 권한 값입니다.

인터넷(클라이언트 및 서버)

앱에 인터넷 및 공공 장소(예: 공항, 커피숍)의 네트워크로부터의 인바운드 및 아웃바운드 액세스를 제공합니다.

이는 앱 매니페스트에서 internetClientServer 접근 권한 값입니다.

개인 네트워크(클라이언트 및 서버)

앱에 사용자가 신뢰하는 장소(예: 집, 회사)에서의 인바운드 및 아웃바운드 네트워크 액세스를 제공합니다.

이는 앱 매니페스트에서 privateNetworkClientServer 접근 권한 값입니다.

 

참고  

Windows Phone 스토어 앱에는 앱에 대한 모든 네트워크 액세스를 가능하게 하는 단일 네트워크 접근 권한 값이 있습니다. 인터넷(클라이언트 및 서버) 접근 권한 값을 사용하면 클라이언트 작업(아웃바운드 액세스) 및 서버 작업(인바운드 액세스)을 위해 네트워크에 전체 권한으로 액세스할 수 있습니다. 그러나 네트워크 접근 권한 값(internetClient, internetClientServer 또는 privateNetworkClientServer) 중 하나라도 Package.appxmanifest 파일에 지정되면 Windows Phone 스토어 앱이 클라이언트 작업 및 서버 작업을 위해 런타임에 네트워크에 전체 권한으로 액세스할 수 있습니다.

Visual Studio에서 Windows Phone 스토어 앱을 개발하고 테스트하는 동안 앱을 실행할 때 네트워킹 접근 권한 값(인터넷(클라이언트 및 서버))을 가져옵니다. 이는 앱 매니페스트 파일에서 이 접근 권한 값을 지정하지 않은 경우에도 마찬가지입니다. 하지만 앱을 게시할 때는 앱이 네트워킹 접근 권한 값을 자동으로 가져오지 않습니다. 앱에 네트워크 연결이 필요한 경우 매니페스트 디자이너의 접근 권한 값 페이지에서 인터넷(클라이언트 및 서버) 접근 권한 값을 선택해야 합니다.

네트워크 액세스를 위해 앱 매니페스트에서 다른 접근 권한 값도 사용하도록 설정해야 합니다. 이 접근 권한 값은 경계를 적용할 때 사용하는 GUID로 정의됩니다.

Visual Studio에서 사용하는 용어 설명

엔터프라이즈 인증

앱이 도메인 자격 증명이 필요한 네트워크 리소스에 연결할 수 있게 합니다. 이 접근 권한 값을 사용하려면 도메인 관리자가 모든 앱에 대해 해당 접근 권한 값을 사용하도록 설정해야 합니다. Intranet Sharepoint 서버에서 데이터를 검색하는 앱을 예로 들 수 있습니다.

이 접근 권한 값을 사용할 경우 자격 증명이 필요한 네트워크의 네트워크 리소스에 액세스하는 데 사용자의 자격 증명을 사용할 수 있습니다. 이 접근 권한 값이 있는 앱은 네트워크에서 사용자로 가장할 수 있습니다.

앱이 인증 프록시를 통해 인터넷에 액세스하도록 허용하는 데는 이 접근 권한 값이 필요하지 않습니다.

이는 앱 매니페스트에서 enterpriseAuthentication 접근 권한 값입니다.

근접

컴퓨터와 가까운 거리에 있는 장치와의 근거리 근접 통신에 필요합니다. 근거리 근접을 사용하여 가까운 장치의 응용 프로그램과 연결하거나 데이터를 보낼 수 있습니다.

이 접근 권한 값을 사용할 경우, 사용자가 초대를 보내거나 수락하는 데 동의한다면 앱에서 네트워크에 액세스하여 가까운 거리의 장치에 연결할 수 있습니다.

이는 앱 매니페스트에서 proximity 접근 권한 값입니다.

공유 사용자 인증서

이 접근 권한 값은 앱이 소프트웨어 및 하드웨어 인증서(예: 스마트 카드 인증서)에 액세스할 수 있게 합니다. 런타임에 이 접근 권한 값을 호출하면 사용자는 카드를 삽입하거나 인증서를 선택하는 것과 같은 조치를 수행해야 합니다.

이 접근 권한 값을 사용할 경우 앱에서 식별하는 데 소프트웨어 및 하드웨어 인증서 또는 스마트 카드를 사용합니다. 회사, 은행 또는 정부 기관에서 식별의 용도로 이 접근 권한 값을 사용할 수 있습니다.

이는 앱 매니페스트에서 sharedUserCertificates 접근 권한 값입니다.

 

네트워크 액세스가 제대로 작동하려면 앱 매니페스트에서 장치 액세스와 관련된 일부 장치 접근 권한 값도 사용하도록 설정해야 합니다. 이 장치 접근 권한 값은 시스템에서 경계를 적용할 때 사용하는 GUID로 정의됩니다.

Visual Studio에서 사용하는 용어 설명

웹캠

웹캠 화상 대화를 이용할 수 있게 합니다.

앱에서 네트워크를 통해 원격 컴퓨터와 웹캠 화상 대화를 공유하려는 경우 이 접근 권한 값이 필요합니다.

이는 앱 매니페스트에서 webcam 접근 권한 값입니다.

 

응용 프로그램에 어떤 접근 권한 값이 필요한지 알아두는 것이 중요합니다. 다음 표에서는 일반적으로 수행되는 작업과 필요한 접근 권한 값을 보여줍니다.

필요한 접근 권한 값

응용 프로그램 설명

콘텐츠를 사용하기만 하는 웹 클라이언트입니다. RSS 신디케이션 또는 AtomPub 프로토콜을 사용하는 웹 사이트 및 앱에서 HTML을 로드하는 앱을 포함합니다.

internetClient

소셜 네트워크 앱입니다. 소셜 네트워크 사이트에서 콘텐츠를 사용하고 생성하는 앱을 포함합니다.

internetClient

p2p(피어 투 피어) 앱입니다. 인스턴트 메신저 또는 채팅에 대한 액세스를 제공하는 앱을 포함합니다.

internetClientServer

홈 또는 직장 네트워크에서 공유를 위한 앱입니다. 미디어 또는 NAS(Network Attached Storage) 콘텐츠에 액세스하는 앱을 포함합니다.

privateNetworkClientServer

홈 또는 직장의 LOB(기간 업무) 앱입니다. HTTP 클라이언트 역할을 하거나 소켓 도는 WebSockets를 사용하는 앱을 포함합니다.

privateNetworkClientServer

홈 또는 직장의 네트워킹 기능을 갖춘 생산성 앱입니다. 네트워크 기능에 액세스하는 생산성 앱을 포함합니다.

privateNetworkClientServer

네트워크에 액세스해야 하는 게임 앱입니다.

internetClient

데이트 서비스를 제공하는 멀티 플레이 인터넷 게임 앱입니다.

internetClient

사용자가 가까운 영역 내에 있는 멀티 플레이 게임입니다.

proximity

멀티캐스트 검색 또는 멀티캐스트를 사용하여 플레이어를 검색하는 멀티 플레이 게임 앱입니다.

internetClientServer

홈 또는 직장 네트워크를 사용하는 멀티 플레이 게임 앱입니다. 멀티캐스트 검색을 사용하여 플레이어를 검색하거나 멀티캐스트를 사용하여 검색되는 앱을 포함합니다.

privateNetworkClientServer

브로드캐스팅 앱입니다. 인터넷을 통해 라디오 브로드캐스트를 수신하는 앱을 포함합니다.

internetClient

 

네트워크 격리 및 네트워크 경계

Windows 8.1에서 네트워크 격리를 적용하려면 시스템에서 네트워크 경계가 검색되고 확인되어야 합니다. Windows 8.1에서는 동적인 방식으로 이 검색이 수행됩니다. 네트워크에서 로컬 컴퓨터의 네트워크 인터페이스 주소 및 인터페이스가 바인딩된 모든 주소를 검색하면서 인터넷과의 통신에서 액세스 지점이 되는 게이트웨이 또는 IP 주소가 있는지 확인합니다. 다음 항목을 검색합니다.

  • 홈 또는 회사 네트워크에서 사용하는 로컬 주소 및 서브넷
  • 인터넷 게이트웨이 및 인터넷 프록시

홈 또는 회사 네트워크에서 주로 검색되는 로컬 IPv4 주소 및 서브넷에는 다음 개인 IPv4 주소 범위가 포함됩니다.

  • 10.0.0.0-10.255.255.255
  • 172.16.0.0-172.31.255.255
  • 192.168.0.0-192.168.255.255

홈 또는 회사 네트워크에서 주로 검색되는 로컬 IPv6 주소 및 서브넷에는 다음 개인 IPv6 주소 범위가 포함됩니다.

  • IPv6 주소와 연결된 로컬 IPv6 서브넷
  • IPv6 링크-로컬 주소(fe80::/10)
  • 전환 기술(예: 6to4, ISATAP)에 사용되는 IPv6 터널 주소. Teredo에서 사용하는 IPv6 주소 범위(2001::/32)는 제외합니다.

사용자가 집의 Wi-Fi(무선 LAN) 네트워크에 컴퓨터를 처음으로 연결할 때 네트워크에서 공유를 사용하도록 설정하는 옵션이 제공됩니다. 이 결정에 따라 Windows에서 네트워크를 신뢰할 수 있거나 그렇지 않은 것으로 분류합니다.

다음 조건 중 하나에 해당되는 경우 네트워크 끝점은 홈\회사 네트워크의 일부로 간주됩니다.

  • 끝점이 사용자가 표시한 신뢰할 수 있는 네트워크의 로컬 서브넷에 포함된 경우. 예를 들어 홈 사용자는 보통 홈 네트워크에 신뢰할 수 있음 플래그를 지정합니다. 로컬 서브넷의 컴퓨터는 홈\회사 네트워크의 일부로 지정됩니다.
  • 컴퓨터가 네트워크에 있고 도메인 컨트롤러에 인증된 경우. 로컬 서브넷 내의 네트워크 끝점은 개인 끝점으로 간주됩니다. 인트라넷 주소 공간 내의 네트워크 끝점은 개인 끝점으로 간주됩니다.
  • 컴퓨터가 DirectAccess용으로 구성되어 있으며 네트워크 끝점이 인트라넷 주소 공간의 일부분인 경우.

인트라넷 주소 공간은 구성된 Active Directory 사이트와 서브넷으로 구성되며, 그룹 정책을 사용하여 Windows 네트워크 격리 전용으로 구성됩니다. 도메인에 가입된 컴퓨터는 Active Directory 및 그룹 정책을 쿼리하여 이 정보를 확인합니다.

위에 나와 있는 조건을 충족하지 않는 기타 모든 네트워크 끝점은 인터넷의 네트워크 끝점으로 간주됩니다.

네트워크 격리를 위한 관리자 컨트롤에 대한 자세한 내용은 네트워크에서 Windows 스토어 앱 격리(영문)를 참조하세요.

네트워크 격리 및 적용

앱이 클라이언트에서 시작한 아웃바운드 요청(예: www.contoso.com에 대한 HTTP 웹 요청)을 시도하면 시스템은 매니페스트에서 앱에 대해 사용하도록 설정한 접근 권한 값을 확인하고 특성 호스트(예: www.contoso.com)에 대한 클라이언트에서 시작한 아웃바운드 요청을 허용할지 여부를 결정합니다. 클라이언트에서 시작한 아웃바운드 요청이 허용될 경우 서버가 클라이언트에서 시작한 아웃바운드 요청에 대해 응답을 보내는 것도 허용됩니다.

앱에서 원치 않는 인바운드 요청을 수신하려고 할 경우, 매니페스트에서 그 앱에 대해 설정된 접근 권한 값을 검사하고 원격 IP 주소에서 보낸 원치 않는 인바운드 요청을 허용하거나 차단할 것인지 결정합니다. 앱에서 원치 않는 인바운드 요청을 수신할 수 있으려면 InterentClientServer 또는 privateNetworkClientServer 접근 권한 값을 사용하도록 설정해야 합니다. 이 접근 권한 값 중 하나 이상이 사용하도록 설정된 경우 앱은 하나 이상의 포트에서 지정된 네트워크 유형의 원치 않는 인바운드 요청을 수신할 수 있습니다. 원치 않는 인바운드 요청 시도를 모두 검사하여 특정 원본 IP 주소에서 보내는 원치 않는 인바운드 요청이 허용되는지 확인합니다. Windows에서는 원치 않는 인바운드 요청이 홈/회사 IP 주소 또는 인터넷에서 온 것인지 확인하고 사용하도록 설정된 접근 권한 값 및 특정 원격 액세스에 따라 액세스를 허용하거나 거부합니다.

네트워크 격리는 어떤 근접 구성 요소와도 완전히 통합됩니다. 앱 매니페스트에서 proximity 접근 권한 값을 사용하도록 설정된 경우 추가 네트워킹 접근 권한 값을 사용하도록 설정할 필요 없습니다. 물론 사용자가 근접 장치에 초대를 보내거나 근접 장치의 초대를 수락하는 데 동의해야 근접 장치와 로컬 컴퓨터 간의 통신이 가능합니다.

네트워크 격리 및 루프백

지금까지 IP 루프백 주소 및 루프백 인터페이스는 네트워크에서 여러 응용 프로그램 간의 통신에 그리고 로컬 컴퓨터에 있는 여러 응용 프로그램 내부의 프로세스 간 통신에 사용해 왔습니다.

IP 루프백 주소를 사용하는 네트워크 통신은 (서로 다른 두 앱 간에 이루어지는) 프로세스 간 통신에 정상적으로 사용할 수 없습니다. 네트워크 격리에 의해 제한되기 때문입니다. IP 루프백 주소를 사용하는 네트워크 통신은 통신을 목적으로 하는 동일한 프로세스 내, 하나의 앱 내에서 허용됩니다.

디버깅 용도로 앱 사이에서 IP 루프백 주소에 대한 개발자 액세스를 가능하게 하는 것에 대한 자세한 내용은 루프백을 사용하도록 설정하고 네트워크 격리를 디버그하는 방법을 참조하세요.

백그라운드 전송 및 알림 메시지

Windows 8.1, Windows Phone 8.1 및 Windows Server 2012 R2에서 Windows.Networking.BackgroundTransfer 네임스페이스의 BackgroundDownloaderBackgroundUploader 클래스는 전송이 완료되거나 완료되지 않을 경우 사용자가 타일 및 알림 메시지를 받는 옵션을 지원합니다.

Windows.Networking.BackgroundTransfer를 사용하는 앱에서 알림 메시지를 받으려면 앱 매니페스트 파일에서 알림 가능을 선언해야 합니다. 이 설정은 네트워크 격리 설정이 있는 접근 권한 값 섹션 아래에 없습니다. 알림 가능 설정은 응용 프로그램 탭의 알림 섹션 아래에 있습니다. 알림 가능 옵션을 "예"로 설정하여 앱에서 알림 메시지를 받도록 합니다.

앱 매니페스트에서 알림 가능을 사용하도록 설정하지 않으면 Windows.Networking.BackgroundTransfer 네임스페이스의 모든 알림 설정이 자동으로 무시되고 앱에서 알림 메시지를 받지 않습니다.

참고  사용자는 언제든지 앱에 대한 알림 메시지를 사용하거나 사용하지 않도록 수동으로 설정할 수 있습니다.

 

알림 메시지에 대한 자세한 내용은 알림 메시지 보내기알림 메시지를 옵트인(opt in)하는 방법을 참조하세요.

관련 항목

다른 리소스

앱 접근 권한 값 선언

앱 패키지 매니페스트

Capability

DeviceCapability

루프백을 사용하도록 설정하고 네트워크 격리를 디버그하는 방법

알림 메시지를 옵트인(opt in)하는 방법

알림 메시지 보내기

네트워크 연결 문제 해결 및 디버깅

참조

HttpClient

IXMLHTTPRequest2

System.Net.Http

Windows.Networking.BackgroundTransfer

Windows.Networking.Sockets

Windows.Web.AtomPub

Windows.Web.Http

Windows.Web.Http.HttpClient

Windows.Web.Syndication

샘플

HttpClient 샘플

StreamSocket 샘플