호스팅 및 지속성 보안

지속성 저장소는 Windows Server AppFabric 아키텍처에서 중요한 역할을 합니다. 이 저장소는 다양한 실행 상태로 이동하는 Windows WF(Workflow Foundation) 인스턴스의 영속성을 지원합니다. AppFabric의 관리 도구를 사용하여 지속된 워크플로 서비스 인스턴스를 조작할 수 있습니다. 관리 도구를 실행하는 AppFabric 사용자가 이 데이터 저장소에서 읽고 쓸 수 있도록 지속성 저장소 및 런타임 응용 프로그램에 대한 권한을 제공해야 합니다. 또한 관리 및 응용 프로그램 범위 수준에서 지속성 저장소에 대한 액세스를 제어해야 합니다.

보안을 위해 응용 프로그램 호스팅 위치를 중요하게 고려해야 합니다. 응용 프로그램 격리를 사용하면 다른 응용 프로그램에서 보거나 액세스할 수 없도록 데이터가 보호됩니다. 리소스 다운스트림 액세스에 대한 응용 프로그램 ID 제어는 AppFabric 보안 모델에서 중요한 역할을 합니다. 이 ID는 응용 프로그램에서 지속성 저장소에 액세스할 때 사용되는 보안 주체에 영향을 줍니다.

호스팅과 지속성은 응용 프로그램 범위와 관리 범위 모두에 포함되므로 각 영역 내에서 별도로 보안되어야 합니다. 다양한 보안 그룹에 포함되면 특정 권한이 부여됩니다. 응용 프로그램 보안 범위는 런타임에 응용 프로그램이 갖는 권한에 영향을 주며 Application Server Users 개념적 역할에 매핑됩니다. 관리 보안 범위는 관리자와 시스템 서비스에서 실행할 수 있는 도구 및 관련 작업에 영향을 줍니다. 이러한 권한은 Application Server Administrators 및 Application Server Operators 개념적 역할에 매핑됩니다.

지속성 데이터 보안

서비스 인스턴스가 지속되는 경우 해당 시스템 상태가 지속성 저장소에 저장됩니다. 응용 프로그램에서 개인 식별 정보 또는 기타 기밀 데이터를 수집하여 전송하는 경우가 있습니다. 서비스가 지속될 때 그런 데이터가 응용 프로그램 상태에 포함되는 경우 해당 데이터는 지속성 저장소에 저장됩니다. 여러 서버, 사이트 및 응용 프로그램에서 단일 지속성 저장소를 공유할 수 있습니다. 대규모 환경에서 수많은 서비스 인스턴스의 작업 상태를 쉽게 관리할 수 있도록 지속성 데이터는 저장소를 공유하는 서버 및 사이트를 통해 집계됩니다. 이는 디자인 과정에서 의도된 것입니다. 그러면 한 AppFabric 서버에서 실행 중인 서비스 인스턴스를 지속하다가 부하 분산이 필요한 경우 다른 서버에서 다시 시작할 수 있습니다.

지속성 저장소에 저장된 데이터는 AS_Administrators 데이터베이스 역할의 모든 구성원과 SQL Server sysadmin 및 dbo 역할의 모든 구성원이 볼 수 있습니다. 지속성 데이터는 실수 또는 의도적 노출에 취약하기 때문에 권한을 올바르게 관리하여 위험을 줄일 수 있도록 노력해야 합니다.

다음과 같은 방법으로 지속성 저장소의 데이터를 보호할 수 있습니다.

  • 서로 다른 지속성 저장소를 사용합니다. AppFabric cmdlet을 사용하여 저장소를 만든 후 AppFabric 지속성 데이터베이스 구성 페이지에서 구성하여 동일한 서버나 다른 서버에서 대체 지속성 저장소를 만들고 구성할 수 있습니다. 그런 다음 특정 응용 프로그램에서 해당 저장소만 사용하도록 구성할 수 있습니다. 그러면 다른 응용 프로그램에서 액세스할 수 없는 개인 지속성 데이터 저장소가 지정된 응용 프로그램에 제공됩니다.

  • 지속성 저장소와 모니터링 저장소를 두 개의 개별 저장소로 구분합니다. 기본적으로 지속성 저장소와 모니터링 저장소의 테이블과 엔터티는 설치 중에 DefaultApplicationServerExtensions 저장소에 모두 만들어집니다. 한 저장소는 지속성 전용으로 다른 저장소는 모니터링 전용으로 지정할 수 있습니다. 그러면 관리 범위와 응용 프로그램 범위의 모든 응용 프로그램과 사용자가 격리되므로 하나의 이중 저장소에 액세스하여 지속성 저장소와 모니터링 저장소의 모든 테이블에 액세스하는 것을 방지할 수 있습니다.

  • Windows 그룹 및 SQL Server 역할을 사용합니다. SQL Server 지속성 저장소에 대한 액세스는 SQL Server 데이터베이스 역할을 통해 구현됩니다. 인스턴스 저장소를 초기화하는 동안 관리자는 Windows 그룹을 Instance Store Users, Instance Store Readers 및 Instance Store Administrators SQL 역할에 삽입할 수 있습니다. Windows 그룹 및 SQL Server 역할을 사용하여 지속성 저장소의 데이터를 보호하는 방법에 대한 자세한 내용은 지속성 저장소에 대한 보안 구성을 참조하십시오.

  • 지속성 기능을 조작합니다. AppFabric에서 IIS 관리자에 추가된 확장 기능을 사용하여 특정 워크플로 서비스, 응용 프로그램의 모든 워크플로 서비스, 웹 사이트의 모든 응용 프로그램 또는 서버의 모든 웹 사이트에 대해 지속성 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다. 지속성 정책을 한 수준 높게 정의하고 IIS와 WAS 계층 구조의 모든 하위 수준에서 정책 설정을 상속하도록 할 수 있습니다.

  • 서로 다른 응용 프로그램 풀 ID를 사용합니다. IIS 응용 프로그램 풀별로 다른 ID를 사용하여 전체 지속성 저장소나 지속성 저장소 내 개별 엔터티에 대한 SQL Server 권한을 제한하거나 확장할 수 있습니다. 이 방법은 IIS 및 SQL Server 수준에서 수행하는 세분화된 보안 기술이며 AppFabric 에서 직접 지원되지 않습니다.

호스팅 보안

프로세스 격리를 사용하여 이벤트 컬렉션 서비스 및 워크플로 관리 서비스 같은 높은 수준의 AppFabric 관리 범위 서비스를 낮은 권한의 응용 프로그램 범위 응용 프로그램 작업자 프로세스와 구분할 수 있습니다. AppFabric 서비스는 관리 범위 내에서 실행되며 해당 모니터링 및 지속성 저장소에 대한 전체 액세스 권한을 가집니다. 모든 응용 프로그램 작업자 프로세스와 사용자는 응용 프로그램 범위 즉, 응용 프로그램 풀 ID 컨텍스트에서 실행됩니다.

응용 프로그램 범위에서 호스팅 격리를 추가 사용하여 보안을 세부적으로 강화할 수 있습니다. 응용 프로그램에는 동일한 프로세스에서 함께 실행되는 하나 이상의 .NET Framework 서비스가 포함되어 있습니다. 이러한 .NET Framework 서비스를 서로 보호하기 위해 다른 AppDomains 컨텍스트에서 실행할 수 있습니다. .NET Framework 프로세스에는 응용 프로그램이 실행되는 격리된 환경인 .NET Framework AppDomains이 하나 이상 포함되어 있습니다. IIS 응용 프로그램 풀에서는 응용 프로그램 풀을 공유하도록 구성된 하나 이상의 응용 프로그램이 동시에 실행될 수 있습니다. 따라서 AppDomains는 모든 리소스를 사용하여 다른 프로세스의 오버헤드를 생성하지 않고 실행 격리를 강화할 수 있는 간편한 방법입니다.

강력한 격리 호스팅 솔루션이 필요한 경우 각 응용 프로그램을 자체 ID를 사용하여 자체 응용 프로그램 풀에서 실행하도록 구성합니다. 그러면 응용 프로그램이 지속성 저장소에 액세스할 때 서로 다른 ID를 사용하게 됩니다. IIS는 이러한 모든 ID를 런타임에 IIS_IUSRS Windows 보안 그룹에 넣습니다. 개별 프로세스 공간에서 실행하면 보안적인 측면에서 개별 응용 프로그램 도메인에서 실행하는 것과 거의 동일하며, 다른 응용 프로그램에서 지정된 응용 프로그램의 코드 또는 데이터에 액세스할 수 없습니다. CPU에 프로세스마다 고유한 부분이 있기 때문에 추가 프로세스를 실행하면 프로세서에서 추가 운영 체제 리소스 및 컨텍스트 전환 오버헤드가 발생합니다.

  2011-12-05