다음을 통해 공유


보안 고려 사항

Sync Framework를 기반으로 하는 데이터베이스 응용 프로그램의 보안을 유지하려면 다음 단계를 수행하는 것이 좋습니다. 데이터베이스 보안에 대한 자세한 내용은 SQL Server Compact 온라인 설명서 및 SQL Server 온라인 설명서를 참조하십시오.

  • 주체에 대해 최소한의 권한만을 부여합니다. 특정 태스크를 수행하는 데 필요한 것보다 많은 권한을 부여하지 마십시오. 예를 들어 다운로드 전용 동기화에 포함되는 서버 데이터베이스 테이블에 대해 INSERT 권한을 부여해서는 안 됩니다. 동기화 작업에는 다음과 같은 권한이 필요합니다.

    • Sync Framework에서 메타데이터 테이블과 기본 테이블을 읽고 쓰는 데 사용하는 모든 저장 프로시저에 대한 EXECUTE 권한

    • 메타데이터 테이블과 동기화 세션 도중에 업데이트되는 기본 테이블에 대한 SELECT, INSERT, UPDATE 및 DELETE 권한

    SqlSyncProvider를 사용하는 SQL Server 데이터베이스를 프로비전할 때는 다음과 같이 프로비전에 필요한 권한에 주의하십시오.

    • 메타데이터 테이블인 scope_infoscope_config와 각 기본 테이블에 대해 만들어지는 추적 테이블을 만들기 위한 CREATE TABLE 권한

    • 기본 테이블에 트리거를 추가하기 위한 ALTER TABLE

    • Sync Framework에서 필요로 하는 프로시저를 만들기 위한 CREATE PROCEDURE 권한

    • scope_infoscope_config 테이블에 대한 SELECT 및 INSERT 권한

    • 기본 테이블에 대한 SELECT 권한

  • Sync Framework에서 동기화할 테이블(선택적 필터 포함)의 집합을 정의하는 범위의 내용을 검사하지 않습니다. 전송되는 범위가 해당 범위 내에 있어야 하는 테이블과 일치하는지 그리고 알맞은 필터가 적용되었는지 확인하는 논리를 응용 프로그램에 포함하십시오.

  • 최소한의 공격 영역만 노출되도록 서버 및 서버 데이터베이스를 구성합니다. 예를 들어 N 계층 아키텍처의 일부분으로 IIS(인터넷 정보 서비스) 서버를 사용하는 경우 서버를 사용하는 다른 응용 프로그램에 필요한 경우가 아니면 FTP(파일 전송 프로토콜) 서비스를 사용하도록 설정하지 마십시오.

  • 디스크에 보관 중이거나 전송하는 중요한 데이터는 암호화하거나 암호로 보호하십시오. Sync Framework에서는 연결을 암호화하지 않습니다. 다양한 기술을 통해 전송 수준에서 암호화를 사용할 수 있습니다. 여기에는 WCF(Windows Communication Foundation), VPN(가상 사설망), SSL(Secure Sockets Layer), IPsec(인터넷 프로토콜 보안) 등의 업계 표준 기술이 포함됩니다. 동기화 중에 설정하는 연결에 대해서는 이러한 암호화 방법 중 하나를 사용하는 것이 좋습니다. 암호화에 대한 자세한 내용은 Windows 및 SQL Server Compact 설명서와 사용 중인 서버 또는 피어 데이터베이스의 설명서를 참조하십시오.

  • 서버 데이터베이스를 쿼리할 때 인라인 SQL 대신 저장 프로시저를 사용합니다. 저장 프로시저는 다음과 같은 방식으로 응용 프로그램의 보안을 유지합니다.

    • 저장 프로시저를 사용하면 관리자가 데이터베이스에 대한 알려진 진입점 집합을 정의할 수 있습니다. 그리고 사용자에게 기본 테이블이 아닌 저장 프로시저에 대한 액세스를 부여할 수 있습니다.

    • 저장 프로시저를 사용하면 동적으로 작성한 쿼리 대신 매개 변수를 사용하도록 할 수도 있습니다. 그러면 SQL 삽입 공격을 수행하기가 어려워집니다.

    • 응용 프로그램이 손상된 경우 데이터 액세스 논리가 반드시 손상된 것은 아닙니다.

  • 동기화 중에 보내는 데이터의 유효성을 검사합니다. 동기화 중에 발생하는 이벤트를 사용하여 변경 내용의 유효성을 검사한 후에 해당 변경 내용을 대상 데이터베이스에 적용합니다. 이벤트에 대한 자세한 내용은 방법: 이벤트 및 프로그램 비즈니스 논리 사용을 참조하십시오.

  • N 계층 아키텍처에서 로컬 어셈블리와 원격 어셈블리 간에 신뢰 관계를 설정합니다. N 계층 시나리오에서는 로컬 어셈블리와 원격 어셈블리 간에 상호 신뢰 관계를 구축해야 합니다. 신뢰 관계 구축을 위한 메커니즘은 Sync Framework API의 범위를 벗어나며 응용 프로그램에서 처리해야 합니다.

  • N 계층 응용 프로그램에 WCF(Windows Communication Foundation)를 사용할 경우 다음과 같은 지침을 따릅니다.

    • 서비스에서 사용하는 WCF 네임스페이스에 적절한 사용 권한을 설정합니다. 새 네임스페이스를 만들거나 기본 네임스페이스에 적절한 사용 권한이 설정되어 있는지 확인합니다.

    • 동기화와 관련된 데이터베이스 및 동기화 변경 내용을 일괄 처리할 때 사용되는 스푸핑 파일에 액세스하는 데 필요한 권한만 있는 전용 계정으로 WCF 서비스를 실행합니다.

    • WCF 서비스의 전용 응용 프로그램 풀을 사용하여 중간 계층 서버에서 실행되는 다른 서비스와 동기화 프로세스를 격리합니다.

    • WCF 스로틀을 사용하면 웹 서비스에 대한 DOS(서비스 거부 공격)를 방지할 수 있습니다. 스로틀은 서비스 사용자가 소비할 수 있는 리소스를 제어합니다.

    • 기본 WCF URL 예약을 제한된 예약으로 교체합니다. 자세한 내용은 Microsoft 문서를 참조하십시오.

    자세한 내용은 WCF 설명서를 참조하십시오.

  • 추적을 사용하는 경우 추적 파일에 서버 및 클라이언트 컴퓨터, 응용 프로그램 데이터, 로그인에 대한 정보가 포함될 수 있습니다. 암호는 추적 파일에 기록되지 않습니다. 자세한 정보 표시 추적이 활성화되어 있으면 데이터베이스에서 변경된 각 행이 추적 파일에 기록됩니다. 적절한 액세스 제어 목록을 사용하여 추적 파일을 보호해야 합니다. 추적에 대한 자세한 내용은 방법: 동기화 프로세스 추적을 참조하십시오.

  • 클라이언트 및 서버 동기화의 경우 가능하면 클라이언트 응용 프로그램에서 ClientId 속성을 명시적으로 설정합니다. 속성이 설정되지 않으면 Sync Framework에서 ID를 할당합니다. 이 경우 클라이언트 응용 프로그램이 서버의 HK_CURRENT_USER\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5 레지스트리 하이브에 액세스할 수 있어야 합니다. 이 레지스트리 하이브에 액세스하려면 관리자 권한이 필요하므로 이 방법은 권장되지 않습니다.

  • 동기화할 테이블에 대한 필터를 정의하는 경우 이러한 문제를 염두에 두십시오.

    • Sync Framework에서 범위 필터에 대해 지정된 SQL 문자열을 검사하지 않습니다. 개발자는 악성 문자열로부터 보호하기 위한 최상의 방법을 따라야 합니다. 자세한 내용은 MSDN 문서를 참조하십시오.

    • 보안을 위해 필터링을 사용하면 안 됩니다. 클라이언트 또는 사용자 ID를 기반으로 하는 데이터를 필터링하는 기능은 보안 기능이 아닙니다. 즉, 이러한 방법을 사용해도 클라이언트나 피어가 다른 클라이언트나 피어에 속하는 데이터를 읽지 못하도록 차단할 수는 없습니다. 이러한 유형의 필터링은 데이터를 분할하고 동기화된 데이터 양을 줄이는 데만 유용합니다.

참고 항목

개념

응용 프로그램 디자인 및 배포 고려 사항