데이터 보호: 머신 수준 정책
- 본 번역문서의 원문은 Machine Wide Policy docs.microsoft.com 입니다.
- 본 번역문서는 ASP.NET Core 데이터 보호 : 머신 수준 정책 www.taeyo.net 에서도 함께 제공됩니다.
데이터 보호 시스템이 Windows에서 실행되는 경우, 데이터 보호를 소비하는 모든 응용 프로그램에 적용될 머신 수준의 기본 정책을 제한적으로 설정할 수 있습니다. 기본적인 개념은 머신에 존재하는 모든 응용 프로그램들을 직접 일일이 변경할 필요 없이 관리자가 일부 기본 설정을 (사용되는 알고리즘이나 키 수명 등) 변경하고자 하는 경우도 있다는 것입니다.
주의
시스템 관리자가 기본 정책을 설정할 수는 있지만 강제로 적용할 수는 없습니다. 응용 프로그램 개발자는 언제든지 모든 값을 자신이 선택한 값 중 하나로 재정의 할 수 있습니다. 기본 정책은 개발자가 특정 설정에 대한 값을 명시적으로 지정하지 않은 응용 프로그램에만 영향을 줍니다.
기본 정책 설정하기
관리자는 시스템 레지스트리의 다음 키 하위에 알려진 값들을 설정해서 기본 정책을 설정할 수 있습니다.
레지스트리 키: HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
만약 64 비트 운영 체제를 사용하고 있으면서, 32 비트 응용 프로그램의 동작에도 영향을 주려면 이 키에 대응하는 Wow6432Node 하위의 키도 동일하게 설정해줘야 합니다.
지원되는 값들은 다음과 같습니다:
-
EncryptionType [string] - 데이터 보호에 사용되는 알고리즘을 지정합니다. 이 값은 "CNG-CBC", "CNG-GCM", 또는 "Managed" 중 하나여야 하며, 다음 절에서 자세하게 살펴봅니다.
-
DefaultKeyLifetime [DWORD] - 새로 생성되는 키의 수명을 지정합니다. 이 값은 일 단위로 지정되며 7보다 크거나 같아야 합니다.
-
KeyEscrowSinks [string] - 키 에스크로에 사용되는 형식들을 지정합니다. 이 값은 세미콜론(;)으로 연결된 키 에스트로 싱크들의 목록으로, 이 목록의 각 요소들은 IKeyEscrowSink를 구현하는 형식들의 정규화된 어셈블리 이름입니다.
암호화 형식
EncryptionType 값이 "CNG-CBC"로 지정되면, 기밀성을 위해 CBC 모드 대칭형 블럭 암호화를 사용하고 신뢰성을 위해 Windows CNG에서 제공되는 서비스를 이용해서 HMAC를 사용하도록 구성됩니다 (보다 자세한 정보는 사용자 지정 Windows CNG 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 CngCbcAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:
-
EncryptionAlgorithm [string] - CNG가 인식하는 대칭형 블럭 암호화 알고리즘의 이름입니다. 이 알고리즘은 CBC 모드로 열립니다.
-
EncryptionAlgorithmProvider [string] - 알고리즘 EncryptionAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.
-
EncryptionAlgorithmKeySize [DWORD] - 대칭형 블럭 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.
-
HashAlgorithm [string] - CNG가 인식하는 해시 알고리즘의 이름입니다. 이 알고리즘은 HMAC 모드로 열립니다.
-
HashAlgorithmProvider [string] - 알고리즘 HashAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.
EncryptionType 값이 "CNG-GCM"로 지정되면, 기밀성을 위해 갈루아(Galois)/카운터 모드 대칭형 블럭 암호화를 사용하고 신뢰성을 위해 Windows CNG에서 제공되는 서비스를 사용하도록 구성됩니다 (보다 자세한 정보는 사용자 지정 Windows CNG 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 CngGcmAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:
-
EncryptionAlgorithm [string] - CNG가 인식하는 대칭형 블럭 암호화 알고리즘의 이름입니다. 이 알고리즘은 갈루아(Galois)/카운터 모드로 열립니다.
-
EncryptionAlgorithmProvider [string] - 알고리즘 EncryptionAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.
-
EncryptionAlgorithmKeySize [DWORD] - 대칭형 블럭 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.
EncryptionType 값이 "Managed"로 지정되면, 기밀성을 위해 관리되는 SymmetricAlgorithm을 사용하고 신뢰성을 위해 KeyedHashAlgorithm을 사용하도록 구성됩니다 (보다 자세한 정보는 관리되는 사용자 지정 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 ManagedAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:
-
EncryptionAlgorithmType [string] - SymmetricAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다.
-
EncryptionAlgorithmKeySize [DWORD] - 대칭형 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.
-
ValidationAlgorithmType [string] - KeyedHashAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다.
만약 EncryptionType 값에 그 밖에 다른 값이 지정되면 (null 값이나 빈 값 이외의), 데이터 보호 시스템이 구동 시 예외를 던집니다.
주의
형식 이름에 관한 기본 정책 설정(EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks)을 구성하는 경우, 반드시 응용 프로그램에서 해당 형식을 사용할 수 있어야 합니다. 결론적으로 이 말은 데스크탑 CLR 상에서 실행되는 응용 프로그램의 경우, 해당 형식을 포함한 어셈블리가 GAC에 설치되어 있어야 한다는 뜻입니다. 그리고 .NET Core에서 실행되는 ASP.NET Core 응용 프로그램의 경우, 해당 형식을 포함한 패키지가 설치되어 있어야 한다는 뜻입니다.
- 권한부여: 개요 2017-01-14 08:00
- 권한부여: 간단한 권한부여 2017-01-14 11:00
- 권한부여: 역할 기반 권한부여 2017-01-14 14:00
- 권한부여: 클레임 기반 권한부여 2017-01-15 08:00
- 권한부여: 사용자 지정 정책 기반 권한부여 2017-01-15 11:00
- 권한부여: 요구사항 처리기와 의존성 주입 2017-01-15 14:00
- 권한부여: 리소스 기반 권한부여 2017-01-16 08:00
- 권한부여: 뷰 기반 권한부여 2017-01-16 11:00
- 권한부여: 스키마별 신원 제한 2017-01-16 14:00
- 인증: ASP.NET Core Identity 살펴보기 2017-01-30 08:00
- 인증: Facebook, Google 및 기타 외부 공급자를 이용한 인증 활성화시키기 2017-02-13 08:00
- 인증: Facebook 인증 구성하기 2017-02-13 11:00
- 인증: Twitter 인증 구성하기 2017-02-20 08:00
- 인증: Google 인증 구성하기 2017-02-20 11:00
- 인증: Microsoft 계정 인증 구성하기 2017-02-20 14:00
- 인증: 계정 확인 및 비밀번호 복구 2017-03-06 08:00
- 인증: SMS를 이용한 2단계 인증 2017-03-13 08:00
- 인증: ASP.NET Core Identity 없이 Cookie 미들웨어 사용하기 2017-03-20 08:00
- 데이터 보호: 데이터 보호 개요 2017-03-27 08:00
- 데이터 보호: 데이터 보호 API 시작하기 2017-03-29 08:00
- 데이터 보호: 소비자 APIs 개요 2017-03-31 08:00
- 데이터 보호: 용도 문자열 2017-04-03 08:00
- 데이터 보호: ASP.NET Core의 용도 계층 구조 및 다중-테넌트(Multi-Tenancy) 2017-04-05 08:00
- 데이터 보호: 비밀번호 해싱 2017-04-07 08:00
- 데이터 보호: 보호된 페이로드의 수명 제한하기 2017-04-10 08:00
- 테이터 보호: 키가 취소된 페이로드의 보호 해제하기 2017-04-12 08:00
- 데이터 보호: 데이터 보호 구성하기 2017-04-14 08:00
- 데이터 보호: 키 관리 및 수명 기본 설정 2017-04-17 08:00
- 데이터 보호: 머신 수준 정책 2017-04-19 08:00
- 데이터 보호: 비-DI 인식 시나리오 2017-04-21 08:00
- 호환성: 응용 프로그램 간 인증 쿠키 공유하기 2017-05-12 08:00
- 호환성: ASP.NET의 <machineKey> 요소 대체하기 2017-05-16 08:00
- 교차 원본 요청 활성화시키기 (CORS) 2017-05-17 08:00
- ASP.NET Core 응용 프로그램에 SSL 적용하기 2017-05-18 08:00
- 개발 중 민감한 응용 프로그램 정보 안전하게 저장하기 2017-05-19 08:00