워크플로 서비스에 대한 보안 지침
워크플로 서비스를 만들고 배포할 때 사용할 보안 지침은 다음과 같습니다.
클라이언트와 서비스 또는 서비스와 유지 데이터베이스 간에 통신할 때 서명되고 암호화된 메시지를 사용하여 악의적인 사용자가 네트워크를 통해 전송된 데이터를 읽거나 수정하지 못하게 합니다. 메시지 보호 수준에 대한 자세한 내용은 Understanding Protection Level를 참조하십시오.
인증이나 권한 부여에 대화 ID나 인스턴스 ID 대신 보안 주체 권한과 클레임을 사용합니다. 보안 주체 권한과 클레임에 대한 자세한 내용은 How to: Restrict Access With the PrincipalPermissionAttribute을 참조하십시오.
신뢰할 수 있는 소스의 ACL과 서명된 어셈블리를 사용하여 악의적인 사용자가 워크플로 서비스를 가장하지 못하게 합니다.
난독 처리에 대한 지침을 수행하여 악의적인 사용자가 워크플로 서비스 어셈블리를 디스어셈블하고 바인딩 정보나 그 안에 정적으로 정의된 속성 값(또는 둘 다)을 읽지 못하게 합니다.
액세스하지 못하게 유지 데이터베이스를 잠그고 데이터베이스 감사를 수행하여 액세스 위반이 있는지 검토합니다. serialize된 데이터를 파일 시스템에 저장하는 경우 ACL과 파일 감사를 사용합니다.
클라이언트의 채널 팩터리 캐시에 공개적으로 액세스할 수 없도록 하여 악의적인 사용자가 응용 프로그램 내 도메인 사용자 계정을 사용하여 채널 팩터리 캐시를 수정하고 클라이언트를 다른 워크플로 서비스로 리디렉션하지 못하게 합니다.
ACL을 사용하여 모든 구성 파일을 보호하고 connectionStrings 요소에 저장된 연결 문자열을 선택적으로 암호화하여 악의적인 사용자가 데이터베이스 연결에 사용하는 연결 문자열을 발견하지 못하게 합니다.
IIS에서 실제 워크플로 마크업과 .rules 파일을 배포하는 대신 ASP.NET VirtualPathProvider를 사용하여 데이터베이스 기반 파일을 사용하는 것을 고려합니다.
워크플로 서비스를 호스팅하는 프로세스에 최소한의 권한 집합을 제공하고 관리 권한으로 프로세스(IIS 응용 프로그램 풀)를 실행하지 않습니다.
사용자 지정 활동, 사용자 지정 호스팅 서비스, 사용자 지정 디스패치 구성 요소 등의 타사 구성 요소가 모두 신뢰할 수 있고 응용 프로그램의 전체적인 보안 체계를 따르는지 확인합니다.
HTTP.sys에 MaxFieldLength 레지스트리 키를 사용하여 서비스가 클라이언트에서 받는 http 헤더의 크기를 조절합니다. 이렇게 하면 악의적인 사용자가 서버에 전송되는 메시지에 크기가 큰 HTTP 컨텍스트 쿠키를 연결할 수 없습니다. 이 레지스트리 키 설정에 대한 자세한 내용은 IIS에 대한 Http.sys 레지스트리 설정을 참조하십시오.
EncryptandSign 또는 Https 전송 프로토콜을 사용하여 악의적인 사용자가 클라이언트와 서비스 간의 전송 중에 기밀 컨텍스트 헤더 또는 쿠키 정보를 읽지 못하게 합니다.
세션 전송에 컨텍스트 바인딩을 사용하는 경우 세션 수명 중에 ID를 변경할 수 없음을 이해합니다.
참고 항목
기타 리소스
워크플로 서비스 및 영속 서비스에 대한 보안 고려 사항
Copyright © 2007 by Microsoft Corporation. All rights reserved.