다음을 통해 공유


Windows Server AppFabric용 보안 모델

사용자가 권한이 부여된 서비스와 데이터에만 액세스할 수 있도록 Windows Server AppFabric에서 관리되는 .NET Framework 응용 프로그램을 보호해야 합니다. 이렇게 하려면 사용자를 식별하고 본인이 맞는지 확인한 다음 정보를 보거나 요청한 작업을 수행할 권한이 있는지를 결정해야 합니다. 개인 정보를 안전하게 전송하기 위해 클라이언트와 서버 간의 메시지 교환은 보안 채널을 통해 이루어져야 합니다. AppFabric을 지원하는 Microsoft 기술은 회사에서 사용자 응용 프로그램에 안전하게 연결하여 사용할 수 있도록 해 주는 통합 서비스를 제공합니다. AppFabric 관리자는 사용자 데이터베이스 집합을 여러 개 유지 관리할 필요가 없을 뿐만 아니라 단일의 그래픽 도구를 통해 수많은 인트라넷 서버에 대한 모든 서비스를 쉽게 관리할 수 있습니다. AppFabric을 지원하는 Microsoft 보안 기술과 제품을 통합하여 사용자에게 응용 프로그램을 실행하는 데 필요한 모든 리소스에 대한 액세스 권한을 부여할 수 있습니다.

AppFabric 보안의 핵심 요소

AppFabric 보안 모델의 기본 목적은 대부분의 AppFabric 사용자에게 간단하지만 효율적인 메커니즘을 제공하는 것입니다. 기존 Windows, .NET Framework, IIS 및 SQL Server 보안 모델과의 통합으로 사용자는 기존의 보안 지식과 기술을 활용하여 AppFabric 보안 모델을 사용할 수 있습니다. 특히, AppFabric 보안 모델은 Windows, .NET Framework, IIS 및 SQL Server 보안 개념을 사용하여 관리되는 WCF 및 WF 응용 프로그램의 보안 수준을 강화합니다. AppFabric은 이미 통합된 강력한 Microsoft 보안 기술에 약간의 향상된 기능만 추가하기 때문에 Microsoft 보안 개념을 잘 알고 있는 관리자들이 쉽게 이용할 수 있습니다. 따라서 장기적으로 AppFabric 고객의 총 소유 비용을 낮출 수 있습니다. 이러한 제품과 기술에 대해 이미 알고 있는 경우 보안 및 보호 섹션의 지침에 따라 응용 프로그램 보안을 쉽게 유지할 수 있습니다.

AppFabric에서는 다음과 같은 기존 보안 개념을 사용합니다.

  • Windows 보안. AppFabric에서는 Windows 그룹 및 파일 시스템 보안을 사용합니다. Windows의 강력한 보안 아키텍처가 응용 프로그램의 모든 구성 요소에서 일관되게 사용되며, 인증을 통해 AppFabric 리소스에 대한 액세스를 제어합니다. 자세한 내용은 Windows 보안을 참조하십시오.

  • .NET Framework 보안. AppFabric에서는 WCF 및 WF 서비스에 대해 Windows Communication Foundation 보안을 사용합니다. WCF는 SOAP 메시지 기반 분산 프로그래밍 플랫폼이며, 클라이언트와 서비스 간의 메시지를 보안하여 데이터를 보호해야 합니다. WCF에서는 기존 보안 인프라와 SOAP 메시지에 대해 인증된 보안 표준을 기반으로 보안 메시지를 교환할 수 있도록 상호 운용 가능한 다목적 플랫폼을 제공합니다. WCF에서는 HTTPS, Windows 통합 보안, 사용자 이름과 암호 등과 같은 기존 기술을 사용하여 사용자를 인증하는 보안 분산 응용 프로그램을 빌드한 적이 있는 사용자라면 이미 잘 알고 있는 개념을 사용합니다. 자세한 내용은 IIS 및 .NET Framework 보안을 참조하십시오.

  • IIS 보안. AppFabric에서는 서비스가 WAS(Windows Process Activation Service)에서 호스트되고 관리 도구가 IIS 관리자에 표시되기 때문에 IIS 보안 기능의 하위 집합을 활용합니다. IIS는 Windows 운영 체제와 긴밀하게 통합되어 응용 프로그램 및 데이터에 대한 최고 수준의 보안을 제공합니다. IIS는 파일 시스템과 디렉터리 같은 Windows NT 보안 모델 및 운영 체제 서비스에 통합됩니다. AppFabric은 런타임에 AppFabric 워크플로 서비스가 지속성 데이터베이스에 액세스해야 할 때 응용 프로그램 풀 ID의 개념을 사용합니다. IIS는 모든 다른 Windows 서비스와 동일한 Windows NT Server ACL(액세스 제어 목록)을 사용합니다. IIS는 Windows NT Server 사용자 데이터베이스를 사용하기 때문에 AppFabric 관리자는 모든 웹 서버에서 별도의 사용자 계정을 만들 필요가 없으며 인트라넷 사용자는 네트워크에 한 번만 로그온하면 됩니다. 자세한 내용은 IIS 및 .NET Framework 보안을 참조하십시오.

  • SQL Server 보안. AppFabric에서는 지속성 데이터베이스 및 모니터링 데이터베이스에 대한 액세스 제어를 위해 SQL Server 데이터베이스 역할을 만듭니다. AppFabric에서는 SQL Server 데이터베이스 액세스에 대해 Windows 통합 인증을 사용합니다. 통합 보안에서는 호출 스레드에 설정된 현재 Windows ID를 사용하여 SQL Server 데이터베이스에 액세스합니다. 그런 다음 사용자는 Windows ID를 AppFabric SQL Server 데이터베이스 및 권한에 매핑할 수 있습니다. 자세한 내용은 SQL Server 보안을 참조하십시오.

AppFabric 개념적 보안 역할

AppFabric 보안 모델을 이해하려면 세 가지 AppFabric 보안 역할의 특성을 이해하는 것이 좋습니다. 이러한 역할은 순수 개념적이며, 보안 모델의 어디에도 이러한 이름을 가진 엔터티는 없습니다. 하지만 개념적 역할은 해당하는 매핑된 물리적 Windows 보안 그룹 및 SQL Server 데이터베이스 역할에서 그대로 사용됩니다. 보안 솔루션에서 이러한 역할에 사용자 및 권한을 다음과 같이 할당합니다.

  • Application Server Observers. 이 관리자 역할은 응용 프로그램 지속성 및 모니터링 데이터에 대한 전체 표시 권한을 부여합니다. Application Server Observers는 다음을 수행할 수 있습니다.

    • 응용 프로그램 및 서비스 열거

    • 응용 프로그램 및 서비스 구성 보기

    • 모니터링 데이터 보기

    • 지속된 인스턴스 검사

  • Application Server Administrators. 이 관리자 역할은 응용 프로그램 구성, 모니터링 및 지속성에 대한 전체 제어 권한을 부여합니다. Application Server Administrators는 Application Server Observers 그룹이 수행할 수 있는 모든 작업과 다음 작업을 수행할 수 있습니다.

    • 지속된 인스턴스 일시 중단, 다시 시작, 종료, 취소 및 삭제

    • 이벤트 원본/이벤트 수집기 만들기 및 제거

    • 모니터링 데이터 보기, 제거 및 보관

  • Application Server Users. 런타임 역할은 IIS에서 런타임에 응용 프로그램을 호스트하는 모든 응용 프로그램 풀의 ID를 할당하는 데 사용됩니다. 그러면 지속성 데이터베이스에 대한 응용 프로그램 공유 액세스에 포함된 서비스와 시스템 서비스가 제공됩니다.

AppFabric 사용자는 보안 솔루션을 설계할 때 사용하는 세 가지 개념적 AppFabric 역할이 있다는 사실만 알고 있으면 됩니다. 이 설명서의 지침에 따라 해당하는 Windows NT 그룹 및 계정, IIS 응용 프로그램 풀, SQL Server 로그인 및 데이터베이스 역할에 적절한 사용자 및 권한을 할당합니다. AppFabric 역할의 사용, 각 역할의 보안 권한, Windows 보안 그룹 및 SQL Server 데이터베이스 역할에 대한 매핑 방법 등에 대한 자세한 내용과 중요 보안 지침에 대해서는 Windows 보안, IIS 및 .NET Framework 보안SQL Server 보안을 참조하십시오.

AppFabric 보안 범위

AppFabric에서는 Windows 보안 계정과 SQL Server 로그인 및 데이터베이스 역할을 사용하여 지속성 데이터베이스, 타이머 데이터, 모니터링 데이터, 구성 파일 등과 같은 시스템 리소스에 대한 사용자 또는 응용 프로그램의 액세스 권한을 결정합니다. 응용 프로그램 수준과 관리 수준으로 이러한 리소스에 액세스할 수 있습니다. 응용 프로그램 수준과 관리 수준은 AppFabric 보안 모델과 관련된 두 가지 논리적 범위 영역입니다. 응용 프로그램 범위는 IIS 응용 프로그램으로 호스트되는 AppFabric 서비스 실행 프로세스를 포함합니다. 관리 범위는 관리의 측면에서 AppFabric 관리와 연관됩니다. 세 가지 AppFabric 보안 역할에 대한 이해를 돕기 위해 응용 프로그램 범위와 관리 범위의 컨텍스트에서 역할 사용에 대해 살펴 보겠습니다.

응용 프로그램 범위

응용 프로그램 범위는 AppFabric에서 구성되고 IIS 아래의 WAS 프로세스 공간에 호스트되는 .NET Framework 서비스의 실제 실행을 정의합니다. 응용 프로그램 범위는 관리 또는 도구와 관련이 없습니다. 관리 또는 도구는 관리 범위에 포함됩니다. 응용 프로그램 범위 개념은 개념적 AppFabric Application Server Users 보안 역할에 적용됩니다. 이 역할은 IIS 서비스 계정에 사용되는 Windows 보안 그룹인 IIS_IUSRS Windows 그룹에 매핑됩니다. 자세한 내용은 Windows 보안, IIS 및 .NET Framework 보안SQL Server 보안을 참조하십시오.

각 응용 프로그램은 하나의 응용 프로그램 풀 내에서 실행됩니다. 이 풀은 기본 응용 프로그램 풀일 수 있습니다. 사용자 응용 프로그램 풀을 만들어 구성할 수도 있습니다. 응용 프로그램 풀 만들기 및 구성은 아래의 "관리 범위" 섹션에서 설명하는 관리 기능입니다. 응용 프로그램 풀을 사용하여 응용 프로그램과 서비스를 동일한 작업자 프로세스 공간으로 그룹화함으로써 구성 설정과 기타 운영 체제 엔터티를 공유합니다. 각 작업자 프로세스는 작업자 프로세스 실행 파일 W3WP.EXE의 개별 인스턴스로 작동하기 때문에 한 응용 프로그램 풀에 서비스를 제공하는 작업자 프로세스는 다른 응용 프로그램 풀에 서비스를 제공하는 작업자 프로세스와 구분됩니다. 따라서 응용 프로그램을 자체 응용 프로그램 풀에 호스트하는 경우 응용 프로그램이 격리됩니다. 응용 프로그램을 격리하면 웹 응용 프로그램이 실패하더라도 다른 응용 프로그램 풀에서 실행 중인 응용 프로그램에 영향을 주지 않습니다.

응용 프로그램 격리의 다른 이점은 사용자 지정 보안 격리입니다. SQL Server와 같은 다운스트림 리소스에 액세스할 때 AppFabric.NET Framework 서비스를 포함하는 응용 프로그램 풀을 호스트하는 작업자 프로세서의 구성된 보안 주체가 사용됩니다. 기본 응용 프로그램 풀 ID는 Network_Service 계정입니다. 응용 프로그램 풀을 IIS에서 구성할 때 사용자 지정 Windows 계정 ID를 할당할 수 있습니다. 런타임에 WAS는 IIS 메타베이스에 지정된 웹 응용 프로그램 바인딩을 사용하여 응용 프로그램 풀 큐에서 들어오는 메시지를 적절한 W3WP.EXE 작업자 프로세스에 전달합니다. 이런 방법으로 WCF 끝점 및 서비스에 대해 비HTTP 프로토콜을 사용하여 AppFabric을 활성화할 수 있습니다. IIS는 응용 프로그램 풀의 모든 Windows 계정을 가져와서 로컬 BUILTIN\IIS_IUSRS Windows 보안 그룹에 추가합니다. 즉, 응용 프로그램에 대한 사용자 응용 프로그램 풀을 만들면 IIS에서 응용 프로그램 풀의 ID를 IIS_IUsers Windows 그룹에 자동으로 추가합니다.

보안 ID가 서로 다른 여러 응용 프로그램 풀을 사용하면 런타임에 AppFabric 지속성 및 모니터링 데이터베이스 액세스와 관련하여 응용 프로그램을 격리할 수 있습니다. 기본적으로 이러한 데이터베이스는 호스트된 응용 프로그램 풀에서 사용되는 모든 인증된 AppFabric ID 간에 완벽하게 공유됩니다. 격리를 사용하여 보안을 강화해야 하는 경우 IIS 응용 프로그램 풀에서 사용되는 특정 ID에 특정 데이터베이스 리소스에 대한 권한을 세부적으로 할당할 수 있습니다. 또한 특정 응용 프로그램에 대한 사용자 데이터베이스를 만들고 특정 ID에 대해 사용자 지정 데이터베이스에 연결되는지 확인하여 런타임에 보안을 제어할 수 있습니다. 또는 응용 프로그램 기준으로 모니터링 데이터베이스에서 응용 프로그램을 격리하여 해당 응용 프로그램에만 지속성 데이터베이스에 대한 액세스를 허용할 수 있습니다.

응용 프로그램 범위는 AppFabric이 설치되고 사용되는 시스템 서비스에도 적용됩니다.

  • 이벤트 컬렉션 서비스. 소스가 AppFabric 및 호스트된 응용 프로그램인 이벤트를 수집합니다.

  • 워크플로 관리 서비스. 워크플로 제어 명령을 처리하고, 만료 타이머를 사용하여 워크플로 인스턴스를 활성화하고, 중단된 워크플로 서비스를 다시 시작합니다.

모든 서비스는 NTAuthority\LocalService 계정으로 실행됩니다. LocalService 계정은 추적 이벤트를 발생하고 지속된 인스턴스를 조작(종료, 일시 중단, 다시 시작)할 수 있는 권한이 있습니다.

보안 제어를 강화하면 일반적으로 성능이 감소합니다. 응용 프로그램 격리를 사용하면 보안 기능이 강화되지만 여러 프로세스의 실행으로 인해 메모리와 프로세스 리소스 사용이 증가합니다. 리소스를 절약하려면 개별 프로세스를 사용하는 대신 .NET Framework appDomain 모델을 사용하여 응용 프로그램을 격리할 수 있습니다. 두 개 이상의 응용 프로그램이 서로 다른 appDomains에서 동일한 프로세스로 안전하게 공존하면서 각각의 가상 메모리와 데이터 값을 사용할 수 있습니다.

관리 범위

관리 범위는 응용 프로그램 관리와 연관된 관리 및 도구를 정의합니다. 관리 범위는 AppFabric에 구성된 .NET Framework 서비스의 실제 실행과 관련이 없습니다. 이 서비스의 실제 실행은 응용 프로그램 범위에 포함합니다. 관리 범위 개념은 개념적 AppFabric Application Server Administrators 및 Application Server Observers 보안 역할에 적용됩니다.

관리 범위는 관리 및 시스템 서비스의 측면에서 AppFabric의 관리 및 지원 기술과 연관됩니다. 응용 프로그램이 실행되기 이전에 관리 작업(예: .NET Framework 응용 프로그램을 AppFabric에 배포 및 구성)을 수행할 수 있습니다. 워크플로 상태가 지속되고 AppFabric 사용자 인터페이스를 통해 다음 단계를 처리해야 하는 경우에는 실행 중에도 관리 작업을 수행할 수 있습니다. 예를 들어, 일시 중단된 워크플로를 다시 시작해야 할 수 있습니다. AppFabric에서 구성된 .NET Framework 서비스의 구성과 실행을 관리할 수 있는 보안 권한은 특정 Windows 보안 그룹의 구성원 자격을 기반으로 합니다. 관리 범위는 이벤트 컬렉션 서비스 및 워크플로 관리 서비스에도 적용되지만, 그런 경우 응용 프로그램 측면이 아니라 관리 및 제어의 측면에서 적용됩니다.

개념적 Application Server Administrators 및 Application Server Observers 보안 역할은 로컬 AS_Administrators 및 AS_Observers Windows NT 보안 그룹에 각각 매핑됩니다. AS_Administrators 그룹은 워크플로 관리 서비스 및 이벤트 컬렉션 서비스의 SID(서비스 ID)를 포함합니다. 서비스가 서비스 제어 관리자에 등록된 이후에는 SID가 지속적으로 유지됩니다. 즉, 이벤트 컬렉션 서비스 및 워크플로 관리 서비스는 실행되는 ID에 상관없이 AS_Administrators의 구성원입니다. 이 ID는 일반적으로 NTAuthority\LocalService입니다. 따라서 서비스 ID 대신 SID를 사용하면 NTAuthority\LocalService ID로 실행 중인 다른 프로세스나 서비스는 AS_Administrators의 구성원이 될 수 없습니다. AppFabric 개념적 보안 역할과 사용 방법에 대한 자세한 내용은 Windows 보안, IIS 및 .NET Framework 보안SQL Server 보안을 참조하십시오.

AppFabric은 설치 시에 관리 범위를 보안합니다. Windows PowerShell cmdlet이 설치 시에 모니터링 및 지속성 데이터베이스를 만들 때 해당 AppFabric 개념적 보안 역할을 기반으로 적절한 SQL Server 데이터베이스 역할이 만들어집니다. 예를 들어, AS_Observers용 SQL Server에서 만들어지는 모든 역할은 Reader 역할(모니터링 데이터베이스의 경우 MonitoringDbReader 역할, 지속성 데이터베이스의 경우 System.Activities.DurableInstancing.InstanceStoreObservers 역할)입니다. AS_Administrators 로그온 계정에 대해 정의된 SQL Server 데이터베이스 역할은 AS_Observers 로그온 계정에 연결된 모든 데이터베이스 역할과 관리 측면에서 데이터베이스 엔터티를 만들고 수정하는 추가 역할을 포함합니다.

기본적으로 AppFabric 설치 프로그램은 프로세스 중에 일부 AppFabric cmdlet을 실행합니다. AppFabric은 AppFabric의 단일 서버 설치에 필요한 모든 로컬 Windows 보안 그룹과 계정을 만듭니다. 여러 서버에서 AppFabric을 사용하는 경우 Windows 도메인 그룹을 수동으로 만들어 적절한 Windows 보안 그룹에 할당해야 해당 서버에서 AppFabric 설치를 원격으로 관리할 수 있습니다. 관리자는 도메인 그룹을 Application Server Administrators 및 Application Server Observers 개념적 보안 역할(즉, DOMAIN\MyAppFabricAdmins 및 DOMAIN\MyAppFabricObservers)의 물리적 매니페스트로 만들어야 합니다. 그런 다음 도메인의 모든 AppFabric 컴퓨터에서 해당 도메인 계정을 LOCAL\AS_Administrators 및 LOCAL\AS_Observers 그룹에 할당할 수 있습니다.

사용자 지정 Windows PowerShell 스크립트 및 AppFabric Cmdlet에 대한 보안 모델

AppFabric은 사용자 지정 Windows PowerShell 스크립트 또는 AppFabric 릴리스에 포함된 대부분의 Windows PowerShell cmdlet에 대해 새로운 보안 모델을 제공하지 않습니다. 보안 모델의 다른 특징과 마찬가지로 AppFabric은 지원 기술의 기존 보안 모델을 사용합니다. 이 경우 AppFabric은 Windows PowerShell 보안 모델을 사용하여 사용자 지정 스크립트 및 미리 패키지된 AppFabric cmdlet에 대한 보안을 강화합니다.

AppFabric Windows PowerShell 스크립트가 실행되는 경우 호스팅 프로세스의 ID를 사용하여 보안을 강화합니다. 즉, cmdlet을 실행 중인 사용자의 보안 주체가 프로세스 ID로 전달됩니다. 따라서 호스팅 프로세스를 실행 중인 사용자의 보안 주체 대신 가장을 사용하여 보안 컨텍스트에서 cmdlet을 실행할 수 없습니다.

기본적으로 Windows PowerShell 명령을 대화식으로 실행할 수 있지만 보안을 위해 처음에는 Windows PowerShell 스크립트 실행이 사용하지 않도록 설정되어 있습니다. 스크립트를 실행하도록 허용하려면 Windows PowerShell 스크립트 실행 그룹 정책을 통해 이 스크립트를 사용하도록 설정해야 합니다.

AppFabric과 함께 제공되는 Windows PowerShell 스크립트는 CA(인증 기관)로부터 받은 인증서로 디지털 서명되어 있습니다. CA로부터 받은 디지털 인증서로 엔터티에 서명하면 패키지의 무결성이 보호됩니다. 서명 프로세스에서는 단방향 해시 및 공개 키 암호화 알고리즘을 사용하여 작성자가 서명한 이후에 패키지에서 수정된 사항이 발견되면 이후의 스크립트 실행이 차단됩니다. 또한 디지털 서명을 사용하여 서명된 엔터티가 요청한 당사자가 만든 것인지를 확인할 수 있습니다. CA 사용에 대한 간단하고 경제적인 대체 방법으로 로컬 CA 및 Microsoft Certificate Server를 사용하여 자체 서명된 인증서를 생성할 수 있습니다. 개인 키 암호화를 사용하여 인증서 보호 기능을 강화할 수 있습니다.

security보안 참고
로컬 CA를 사용하여 Windows PowerShell 스크립트 패키지에 서명하는 것은 트러스트 정책의 최소 요구 사항입니다. 로컬로 서명된 패키지는 로컬 시스템에서는 신뢰되지만 외부 시스템에서 실행되는 경우에는 신뢰되지 않습니다.

페더레이션 ID 관리 및 SSO(Single Sign-On)

페더레이션 인증 시스템을 웹 SSO(Single Sign-On) 시스템이라고도 합니다. 페더레이션 시스템은 조직 경계 전체에서 작동하며 다른 기술, ID 저장소, 보안 방법 및 프로그래밍 모델을 사용 중인 프로세스를 연결합니다. ADFS(Active Directory Federation Service)를 사용하는 회사 내 사용자는 기존 Active Directory 계정을 사용하여 다른 회사에 호스트된 서버에 액세스할 수 있습니다. 또한 ADFS는 두 회사 간의 트러스트 관계를 설정하고 최종 사용자를 위한 통합 일회용 로그온(SSO) 환경을 구축합니다. ADFS를 사용하여 조직에서 사용자의 ID 정보를 안전하게 공유할 수 있습니다.

AppFabric에서 관리되는 HTTP 기반 응용 프로그램은 다양한 방식으로 IIS 응용 프로그램을 간소화합니다. 페더레이션 ID 관리 및 웹 SSO 인증을 응용 프로그램에 통합해야 하는 경우 IIS 응용 프로그램에서 사용할 때와 동일한 방법으로 ADFS를 사용할 수 있습니다. ADFS는 응용 프로그램에 액세스하는 로그온 계정을 도메인 계정에 매핑한 다음 해당 도메인 계정을 사용하여 IIS에 인증합니다. 

.NET Framework 4에서는 WCF와 해당 보안 모델을 사용하여 관리 서비스와 클라이언트 간에 통신하므로 HTTP 기반 응용 프로그램만 지원하는 기존 IIS 모델을 확장합니다. 전송 인증을 사용하지 않거나 비HTTP 응용 프로그램을 사용하는 HTTP를 사용하는 경우 서비스 내에서 프로그램 방식 인터페이스를 사용하여 ID 클레임 처리를 구현합니다. 클레임 인식 응용 프로그램에서는 ADFS 보안 토큰에 있는 클레임을 사용하여 권한 부여 결정을 내리고 추가 응용 프로그램 개인 설정을 제공합니다. ADFS와 마찬가지로 IIS 응용 프로그램에서 ID 클레임 프로세스를 사용하여 클레임 처리를 응용 프로그램에 통합하는 방법을 이해해야 합니다.

이 섹션의 내용

참고 항목

다른 리소스

WF 보안 팩 CTP

  2011-12-05