Share via


방법: 데이터 소스 컨트롤을 사용하는 경우 연결 문자열 보안 유지

업데이트: 2007년 11월

데이터 소스 컨트롤로 작업할 경우 연결 문자열을 응용 프로그램의 Web.config 파일에 배치하여 중앙 집중 방식으로 저장할 수 있습니다. 이렇게 할 경우 두 가지 이점을 얻을 수 있습니다. 데이터 소스 컨트롤은 연결 문자열을 컨트롤 속성으로 포함시키는 대신 구성 파일에서 연결 문자열의 이름을 참조할 수 있으며 연결 문자열을 중앙에서 관리할 수 있기 때문에 연결 문자열 정보가 변경될 때 개별 페이지를 다시 방문할 필요가 없으므로 연결 문자열을 보다 편리하게 관리할 수 있습니다.

이 항목에서는 Visual Studio 및 데이터 소스 컨트롤을 사용하여 Web.config 파일 내에 연결 문자열을 추가하는 방법과 명령줄 유틸리티 Aspnet_regiis.exe를 사용하여 보안 강화를 위해 해당 연결 문자열을 암호화하는 방법을 알아봅니다.

데이터 소스 컨트롤을 사용하여 Web.config에 연결 문자열을 추가하는 방법

  1. Visual Studio의 디자인 뷰에서 .aspx 페이지를 엽니다.

  2. 도구 상자데이터 폴더에서 SqlDataSource 컨트롤과 같은 데이터 소스 컨트롤을 디자인 화면으로 끌어 옵니다.

  3. 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다.

  4. 스마트 태그 창에서 데이터 소스 구성을 클릭합니다.

  5. 데이터 연결 선택 창에서 새 연결을 클릭합니다.

  6. 데이터 소스 선택 대화 상자의 목록에서 적절한 데이터 소스를 선택한 다음 확인을 클릭합니다.

  7. 연결 추가 대화 상자에서 올바른 서버 이름, 사용자 이름 및 암호를 지정한 다음 확인을 클릭합니다.

    연결 정보가 요약되어 표시된 데이터 소스 구성 대화 상자로 돌아갑니다.

  8. 다음을 클릭한 다음 를 클릭하여 Web.config 파일에 연결 문자열을 저장합니다.

    이제 해당 연결 문자열은 Web.config 파일에 저장되며 컨트롤에 대한 쿼리 세부 정보를 구성할 수 있습니다.

Web.config 파일에 저장된 연결 문자열 정보를 암호화하려면

  1. Windows 명령줄에서 다음 옵션을 지정하여 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 실행합니다.

    • -pe 옵션. 이 옵션을 문자열 "connectionStrings"에 제공하여 connectionStrings 요소를 암호화합니다.

    • -app 옵션. 이 옵션을 응용 프로그램 이름에 제공합니다.

    Aspnet_regiis.exe 도구는 %systemroot%\Microsoft.NET\Framework\versionNumber 폴더에 있습니다.

    다음 코드 예제에서는 이름이 SampleApplication인 응용 프로그램에 대한 Web.config 파일의 connectionStrings 섹션을 암호화하는 방법을 보여 줍니다.

    aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"
    

    이 명령이 완료되면 Web.config 파일의 내용을 볼 수 있습니다. connectionStrings 구성 섹션에는 다음 코드 예제에 나오는 것처럼 일반 텍스트 연결 문자열 대신 암호화된 정보가 포함됩니다.

    <configuration>
       <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
          <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
             xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                      <KeyName>RSA Key
                      </KeyName>
                   </KeyInfo>
                   <CipherData>
                      <CipherValue>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                      </CipherValue>
                   </CipherData>
                </EncryptedKey>
             </KeyInfo>
             <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
             </CipherData>
          </EncryptedData>
       </connectionStrings>
    </configuration>
    

    이후 단계를 위해 명령 프롬프트를 열어 두십시오.

  2. 현재 WindowsIdentity 이름을 검색하여 ASP.NET이 실행되는 사용자 계정이나 ID를 확인합니다.

    다음 코드 예제에서는 WindowsIdentity 이름을 확인하는 한 가지 방법을 보여 줍니다.

    <%@ Page Language="VB" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
    %>
    
    <%@ Page Language="C#" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    
    참고:

    기본적으로 Web.config 파일에서 ASP.NET 응용 프로그램에 대한 가장이 해제된 Windows Server 2003의 경우 응용 프로그램이 실행되는 ID는 NETWORK SERVICE 계정입니다. 다른 버전의 Windows에서는 로컬 ASPNET 계정에서 ASP.NET이 실행됩니다.

    ASP.NET이 실행되는 사용자 계정 또는 ID에는 Web.config 파일의 섹션을 암호화 및 해독하는 데 사용되는 암호화 키에 대한 읽기 권한이 있어야 합니다. 이 절차에서는 사용자의 웹 사이트가 이름이 "RsaProtectedConfigurationProvider"인 Machine.config 파일에 지정된 기본 RsaProtectedConfigurationProvider로 구성되어 있다고 가정합니다. 기본 RsaProtectedConfigurationProvider에서 사용되는 RSA 키 컨테이너 이름은 "NetFrameworkConfigurationKey"입니다.

  3. 명령 프롬프트에서 다음 옵션을 사용하여 Aspnet_regiis.exe 도구를 실행합니다.

    • -pa 옵션. 기본 RsaProtectedConfigurationProvider에 대한 RSA 키 컨테이너의 이름에 이 옵션을 제공합니다.

    • 이전 단계에서 확인한 ASP.NET 응용 프로그램의 ID

    다음 코드 예제에서는 NETWORK SERVICE 계정에 컴퓨터 수준의 "NetFrameworkConfigurationKey" RSA 키 컨테이너 액세스 권한을 부여하는 방법을 보여 줍니다.

    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    
  4. 암호화된 Web.config 파일 내용을 해독하려면 -pd 옵션을 사용하여 aspnet_regiis.exe 도구를 실행합니다. 암호 해독 구문은 -pe 옵션으로 Web.config 파일 내용을 암호화할 때와 동일하지만 보호되는 구성 공급자를 지정하지 않는다는 점이 다릅니다. 해당 공급자는 protected 섹션의 configProtectionProvider 특성에 식별됩니다.

    다음 코드 예제에서는 ASP.NET 응용 프로그램 SampleApplication의 connectionStrings 요소를 해독하는 방법을 보여 줍니다.

    aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"
    

참고 항목

기타 리소스

보호되는 구성을 사용하여 구성 정보 암호화