저는 DSC를 처음 사용하고 그것이 우리를 위해 어떻게 작동하는지 알아 내려고 노력했습니다.
내가 붙어있는 것은 자격 증명이 실제로 어떻게 보호되는지입니다. 나의 현재 이해는 그것이 그다지 크지 않다는 것입니다.
큰 세 가지 문제는 이것입니다. 공개 키를 해독 소스로 사용하면 실제로 해당 자격 증명을 어떻게 보호합니까? 푸시 및 풀 시나리오에서 어떤 컴퓨터에 인증서가 필요합니까? 이러한 문제에 비추어 자격 증명을 다루는 가장 좋은 방법은 무엇입니까?
인증서의 공개 키를 사용하면 전송 소스를 인증하는 데 좋습니다. 그러나 암호 해독 키로 사용한다는 것은 인증서의 공개 키에 대한 액세스가 암호에 대한 액세스를 결정한다는 것을 의미합니다.
MOF 파일을 해독해야하는 모든 컴퓨터에 인증서를 푸시해야하는 경우 일반 사용자가 인증서에 액세스하여 MOF를 해독 할 수 없도록하려면 어떻게해야합니까? Active Directory 보안을 말하면 일반 텍스트로 남겨두고 AD 보안에 의존 할 수 있습니다.
누군가 내가이 문제를 해결하도록 도와 줄 수 있습니까?
답변
기본 아이디어
- 구성 할 호스트에는 인증서가 설치되어 있어야합니다 (개인 키 포함).
- 대상 노드의 LCM (Local Configuration Manager)을 설정할 때 해당 인증서의 지문을 지정해야합니다. 자격 증명을 해독하는 데 사용할 로컬 인증서 (또는 더 정확하게 어떤 인증서의 개인 키)를 LCM에 알립니다.
- DSC 구성은 동일한 인증서의 인증서 만 (공개 키)을 포함하는 파일을 가리켜 야합니다. 이는 구성 데이터에서 수행되므로 각 구성에 동일한 구성을 사용하려는 경우 각 노드마다 다른 인증서를 지정할 수 있습니다.
- MOF가 생성되면 공개 키 는 MOF를 생성하는 시스템 에서 자격 증명 을 잠그기 위해 사용됩니다 .
- 대상 노드의 LCM은 풀 서버 (MOF 형식)에서 구성을 검색 할 때 지문으로 식별 된 인증서 의 개인 키 를 사용 하여 자격 증명 개체 를 해독 합니다.
좀 더 자세하게
공개 키는 암호 해독에 사용할 수 없으며 개인 키를 구성 생성 또는 배포 시스템과 공유하지 않습니다.
모든 자격 증명에 단일 인증서가 사용되는 것처럼 워크 플로를 고려하고있는 것 같습니다. 그렇게 할 수는 있지만 각 노드마다 고유 한 키 쌍이 있다고 생각합니다 .
관리자가 아닌 사용자를 의미하는 “평균 사용자”는 인증서의 개인 키를 내보낼 수 없으며 (권한이 부여되지 않은 경우)이 키를 이동하지 않기 때문에 가능성이 거의 없습니다. 노출되고 있습니다. 사용자가 관리자라면 물론 액세스 할 수 있습니다.
구성에 일반 텍스트 자격 증명을 저장하면 처리되지 않은 powershell 구성을 통해 또는 생성 된 MOF를 통해 노출 될 가능성이 훨씬 높습니다. 암호화되지 않은 경우 다음을 보호해야합니다.
- 구성이 저장된 파일 시스템 / 네트워크 공유 위치
- 생성 된 MOF가 저장된 fs / share
- 풀 서버에서 MOF를 저장하는 fs / share
- 풀 서버가 SSL을 통해 실행 중인지 확인하십시오 (어쨌든이 작업을 수행해야 함).
- 풀 서버에 인증이 있는지 확인하십시오. 그렇지 않으면 익명 쿼리가 노출 된 자격 증명으로 구성을 검색 할 수 있습니다.
DSC의 보안 자격 증명이 다소 훌륭하게 수행되었다고 생각하지만 처음에 설정하는 것은 약간의 시련입니다.
AD PKI를 사용하면 더 쉽게
AD 환경에서 Enterprise PKI를 사용하는 경우 각 컴퓨터가 CA에 자동 등록되도록 설정되어 있으므로 컴퓨터 자체 인증서가 이미 갱신 되어있을 가능성이 높습니다 . 이를 위해 필요한 설정이 있습니다.
이것을 구현하는 방법
현재 툴링은 DSC를위한 것이기 때문에 구성을 생성하고 어쨌든 도움이되는 스크립트를 작성하기위한 고유 한 워크 플로우를 작성하고있을 것입니다.
필자의 경우 LCM 메타 MOF 생성과 노드의 실제 구성 생성을위한 별도의 스크립트가 있으므로 자격 증명 보안 단계가 두 단계로 나뉩니다.
LCM 생성 스크립트에서 실제로 구성 할 컴퓨터의 호스트 이름에 해당하는 인증서를 찾기 위해 도메인에 대해 CA를 쿼리합니다. 인증서를 검색하고 (CA에는 개인 키가없고 공개 키만 있음) 나중에 사용할 수 있도록 경로에 저장합니다. 메타 MOF가 인증서의 지문을 사용하도록 구성됩니다.
노드 구성 스크립트에서 cert 파일을 사용하도록 구성 데이터를 설정했습니다 (공개 키만 해당). MOF가 생성되면 자격 증명은 해당 인증서로 암호화되며 특정 노드의 개인 키로 만 해독 할 수 있습니다.
참고
나는 위의 내 자신의 경험을 참조하지만,이 문서가 길을 따라 큰 도움이되었다 :
https://devblogs.microsoft.com/powershell/want-to-secure-credentials-in-windows-powershell-desired-state- 구성
나는 구멍의 일부를 직접 채워야했다. 그들이 보여주는 예제에서 주목해야 할 것은 Thumprint
노드 설정에서 제공한다는 것 입니다. 노드 구성에는 필요하지 않습니다. 그들은 단지 구성과 LCM 메타 구성을 동시에 생성하고 구성 데이터를 사용하여 지문을 저장합니다.
마지막 단락은 혼동 될 수 있지만 기사의 맥락에서 더 의미가 있습니다. 두 구성을 동시에 생성하지 않으면 예제가 이상하게 보입니다. 나는 그것을 테스트했다; Thumbprint
신임 정보 암호화를위한 구성 데이터에는 필요하지 않습니다. CertificateFile
그러나 구성 데이터에 있어야하므로 이전에 구성 데이터를 사용하지 않은 경우 지금 사용하게됩니다.