데이터 보호: 키 관리 및 수명 기본 설정

등록일시: 2017-04-17 08:00,  수정일시: 2017-04-17 08:00
조회수: 3,995
이 문서는 ASP.NET Core 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
본문에서는 데이터 보호 시스템의 키 관리 및 수명에 관한 기본 설정을 살펴봅니다.

키 관리

데이터 보호 시스템은 자신이 실행되는 운영 환경을 감지해서 별도로 구성하지 않아도 정상적으로 실행되는(Zero-Configuration) 동작 기본값을 제공하려고 시도합니다. 시도되는 구성은 다음과 같습니다.

  1. 시스템이 Azure 웹 앱(구 Azure 웹 사이트)에서 호스팅 될 경우, 키는 "%HOME%\ASP.NET\DataProtection-Keys" 폴더에 저장됩니다. 이 폴더는 네트워크 저장소에 의해 지원되며 응용 프로그램을 호스팅하는 모든 머신들 간에 동기화됩니다. 저장된 비활성 키는 보호되지 않습니다. 이 폴더는 단일 배포 슬롯에 존재하는 응용 프로그램의 모든 인스턴스에 키 링을 제공합니다. 그러나 스테이징과 프로덕션처럼 개별적인 배포 슬롯 간에는 키 링이 공유되지 않습니다. 따라서 스테이징을 프로덕션으로 스왑하거나 A/B 테스팅을 수행할 때처럼 배포 슬롯을 서로 스왑하면, 데이터 보호를 사용하는 모든 시스템은 이전 슬롯의 키 링을 사용해서 저장된 데이터를 복호화 할 수 없습니다. 결과적으로 이런 작업은 표준 ASP.NET 쿠키 미들웨어를 사용하는 ASP.NET 응용 프로그램의 사용자들이 로그아웃 되는 결과를 가져오는데, 이는 ASP.NET 쿠키 미들웨어가 데이터 보호를 이용해서 쿠키를 보호하기 때문입니다. 슬롯에 영향 받지 않는 키 링을 사용하고 싶다면 Azure Blob 저장소, Azure 주요 자격 증명 모음(Azure Key Vault), SQL 저장소, 또는 Redis 캐시 같은 외부 키 링 공급자를 사용하십시오.

  2. 사용자 프로필을 사용할 수 있다면 "%LOCALAPPDATA%\ASP.NET\DataProtection-Keys" 폴더에 키가 저장됩니다. 만약 운영 체제가 Windows라면 저장된 비활성 키가 DPAPI를 통해서 암호화됩니다.

  3. 응용 프로그램이 IIS에서 호스팅 될 경우, 작업자 프로세스 계정에게만 ACL로 허용된 HKLM 레지스트리 하위의 특수한 레지스트리 키에 키가 저장됩니다. 저장된 비활성 키는 DPAPI를 통해서 암호화됩니다.

  4. 지금까지 살펴본 모든 조건과 일치하지 않으면 현재 프로세스 외부에서는 키가 유지되지 않습니다. 따라서 프로세스가 종료되면 생성된 모든 키가 사라집니다.

개발자는 언제나 모든 제어 권한을 갖고 있으며 키가 저장되는 방식과 위치를 재정의 할 수 있습니다. 이 옵션들 중, 처음 세 가지 옵션은 기존에 <machinekey> 자동 생성 루틴이 동작하던 방식과 유사하며 대부분의 응용 프로그램에 적합한 기본 구성입니다. 마지막 대안 옵션만 개발자가 키 지속성을 원할 경우 유일하게 사전 구성 작업을 수행해야 하는 시나리오지만, 이런 예외적인 시나리오는 매우 드물게 발생합니다.

주의

개발자가 이 기본 구성을 재정의해서 데이터 보호 시스템이 특정 키 저장소를 바라보도록 지정하면, 저장된 비활성 키의 자동 암호화가 비활성화됩니다. 저장된 비활성 키의 보호 기능은 구성을 통해서 다시 활성화시킬 수 있습니다.

키 수명

키는 기본적으로 90일의 수명을 갖고 있습니다. 키가 만료되면 시스템이 자동으로 새로운 키를 생성한 다음, 새로운 키를 활성 키로 설정합니다. 해지된 키가 시스템에 남아 있는 동안에는 여전히 해당 키를 이용해서 보호된 모든 데이터를 보호 해제할 수 있습니다. 더 자세한 정보는 키 관리 문서를 참고하시기 바랍니다.

기본 알고리즘

기본으로 사용되는 페이로드 보호 알고리즘은 기밀성을 위한 AES-256-CBC와 신뢰성을 위한 HMACSHA256입니다. 매 90일 마다 롤링되는 512 비트의 마스터 키는 페이로드 별로 이 알고리즘들에 사용되는 두 개의 하위 키를 파생하는데 사용됩니다. 더 자세한 정보는 하위 키 파생 문서를 참고하시기 바랍니다.