보호되는 구성 공급자 지정
업데이트: 2007년 11월
ProtectedConfigurationProvider 클래스를 사용하여 Web.config 파일의 섹션을 암호화하고 해독할 수 있습니다. 다음 목록에서는 .NET Framework에 포함된 보호되는 구성 공급자에 대해 설명합니다.
DpapiProtectedConfigurationProvider. Windows DPAPI(데이터 보호 API)를 사용하여 데이터를 암호화하고 해독합니다.
RsaProtectedConfigurationProvider. RSA 암호화 알고리즘을 사용하여 데이터를 암호화하고 해독합니다.
두 공급자 모두 강력한 데이터 암호화를 제공합니다. 그러나 웹 팜처럼 암호화된 구성 파일 하나를 여러 서버에서 사용하려는 경우, 암호화 키를 내보내고 다른 서버에서 이 암호화 키를 가져오려면 RsaProtectedConfigurationProvider만 사용할 수 있습니다.
또한 .NET Framework를 사용하면 보호되는 구성 공급자를 직접 정의할 수도 있습니다. 자세한 내용은 보호되는 구성 공급자 구현을 참조하십시오.
보호되는 구성 공급자 구성
보호되는 구성 공급자를 직접 지정하거나 ASP.NET에 기본으로 제공된 공급자 중 하나를 사용할 수 있습니다. 기본적으로 Machine.config 파일에는 다음과 같은 보호되는 구성 공급자가 지정되어 있습니다.
이름이 RsaProtectedConfigurationProvider인 RsaProtectedConfigurationProvider 인스턴스. 이 인스턴스는 기본 공급자로 구성됩니다.
이름이 DataProtectionConfigurationProvider인 DpapiProtectedConfigurationProvider 인스턴스
구성 파일의 configProtectedData 섹션에 보호되는 구성 공급자를 지정합니다. 사용자 지정 설정을 사용하여 고유한 공급자를 직접 지정하려면 providers 요소의 add 요소를 사용하여 새 공급자 인스턴스를 선언합니다. configProtectedData 요소의 defaultProvider 특성을 사용하면 공급자 인스턴스를 기본 공급자로 식별할 수 있습니다.
다음 예제에서는 SampleProvider를 이름으로 사용하여 RsaProtectedConfigurationProvider 인스턴스를 구성한 후 이 인스턴스를 기본 공급자로 설정합니다.
<configuration>
<configProtectedData defaultProvider="SampleProvider">
<providers>
<add name="SampleProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,
System.Configuration, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="SampleKeys"
useMachineContainer="true" />
</providers>
</configProtectedData>
</configuration>
구성 섹션을 암호화하는 경우 보호되는 구성 공급자 인스턴스의 이름을 사용합니다. 자세한 내용은 구성 섹션 암호화 및 해독을 참조하십시오.
보호되는 구성 공급자 옵션
보호되는 구성 공급자는 각각 구성 파일에서 공급자 선언의 특성을 사용하여 설정할 수 있는 옵션을 노출합니다. 모든 공급자에는 공급자 인스턴스에 대한 keyName과 type 및 description 특성이 필요합니다. 뿐만 아니라 이러한 옵션은 각 공급자 형식에 대해 고유합니다.
다음 표에서는 RsaProtectedConfigurationProvider의 구성 옵션에 대해 설명합니다.
특성 |
설명 |
---|---|
type |
보호되는 구성 공급자의 형식입니다. 다음 예제에서는 RsaProtectedConfigurationProvider의 형식 정의를 보여 줍니다.
|
description |
공급자 인스턴스에 대한 설명입니다. |
keyContainerName |
Web.config 파일의 내용을 암호화하거나 해독하는 데 사용되는 RSA 키 컨테이너의 이름입니다.
참고:
ASP.NET 프로세스에는 지정된 RSA 키 컨테이너에 대한 읽기 권한이 있어야 합니다. Aspnet_regiis.exe 도구에 -pa 스위치를 지정하여 RSA 키 컨테이너에 대한 권한을 부여할 수 있습니다. 자세한 내용은 보호되는 구성 RSA 키 컨테이너 가져오기 및 내보내기를 참조하십시오.
|
useMachineContainer |
RSA 키 컨테이너가 컴퓨터 수준 키 컨테이너이면 true이고, 사용자 수준 키 컨테이너이면 false입니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오. |
useOAEP |
암호화하고 해독할 때 OAEP(Optimal Asymmetric Encryption Padding)를 사용하려면 true이고, 그렇지 않으면 false입니다. 자세한 내용은 RSAOAEPKeyExchangeFormatter 클래스를 참조하십시오. |
cspProviderName |
Windows 암호화 API CSP(암호화 서비스 공급자)의 이름입니다. 자세한 내용은 ProviderName을 참조하십시오. |
다음 표에서는 DpapiProtectedConfigurationProvider의 구성 옵션에 대해 설명합니다.
특성 |
설명 |
---|---|
type |
보호되는 구성 공급자의 형식입니다. 다음 예제에서는 DpapiProtectedConfigurationProvider의 형식 정의를 보여 줍니다.
|
description |
공급자 인스턴스에 대한 설명입니다. |
keyEntropy |
암호화된 정보를 해독할 수 있는 다른 응용 프로그램으로부터 보호하기 위해 암호화 키와 함께 포함할 응용 프로그램별 값입니다. 자세한 내용은 Windows DPAPI(데이터 보호 API)의 CryptProtectData 메서드에 대한 OptionalEntropy 매개 변수를 참조하십시오. |
useMachineProtection |
컴퓨터별 보호를 사용하려면 true이고, 사용자 계정별 보호를 사용하려면 false입니다. 이 특성을 true로 설정하면 컴퓨터에서 실행 중인 모든 프로세스에 의해 데이터 보호가 해제될 수 있으므로 ACL(액세스 제어 목록)을 사용하여 암호화된 데이터에 대한 액세스를 제한하는 것이 좋습니다. 자세한 내용은 Windows DPAPI(데이터 보호 API)의 CryptProtectData 메서드에 대한 dwFlags 매개 변수의 CRYPTPROTECT_LOCAL_MACHINE 값을 참조하십시오. |