이 문서에서는 Microsoft Entra 확인된 ID 서명 키를 회전하는 단계를 검토합니다.
필수 조건
서명 키 회전
공개 키는 발급자가 생성한 서명을 확인해야 하는 모든 사용자를 위해 DID(탈중앙화 식별자) 문서에서 사용할 수 있습니다. 메서드를 사용하는 did:web 기관의 경우 DID 문서는 https://contoso.com/.well-known/did.json에서 사용할 수 있습니다. 여기서 contoso.com은 예제입니다.
확인된 ID는 업데이트된 버전을 웹 서버에서 공개적으로 사용할 수 있게 될 때까지 새 키를 사용하여 서명을 시작해서는 안 됩니다. Azure Content Delivery Network에서 다지역 배포를 사용하는 경우, 배포 프로세스가 업데이트된 did.json를 반영하는 데 다소 시간이 걸릴 수 있습니다.
관리자가 서비스 중단 없이 서명 키를 회전할 수 있도록 회전 프로세스는 다음 단계를 수행합니다.
signingKeys/rotate API를 호출하여 Key Vault에서 새 서명 키를 만듭니다. 호출에 사용되는 액세스 토큰은 키 보관소의 키에 대한 액세스 권한이 있는 관리자용이어야 합니다. 이 작업은 키 자격 증명 모음에 새 현재 키를 설정합니다. 이전 키는 이전 키로 이동되지만 계속 사용할 수 있습니다. 응답은
didDocumentStatus특성에outOfSync값이 있는 권한 JSON 객체입니다. 이는 Key Vault와 공개적으로 사용할 수 있는did.json문서 간에 불일치가 있음을 나타냅니다.
확인된 ID 포털에서 설치로 이동합니다. 탈중앙화 ID 등록을 선택하고 업데이트
did.json된 파일을 복사하거나 다운로드합니다. 이제 새 키와 이전 키가 포함됩니다.
이전에 배포된 모든 웹 서버에서
did.json을 대체하십시오. 수동으로 편집한 경우 다음과 같은https://jsonformatter.org/도구를 사용하여 유효한 JSON 구문이 여전히 있는지 확인합니다. 계속하기 전에 브라우저를 사용하여 인터넷에서 새did.json문서를 검색할 수 있는지 확인합니다.synchronizeWithDidDocument API를 호출하여 새 서명 키 사용을 시작합니다. 이 API 호출은 Key Vault 및 공용
did.json문서가 일치하는지 확인합니다. 일치하는 경우 확인된 ID 기관은 Key Vault의 새 키를 사용하여 서명을 시작합니다. 반환된 기관 JSON 개체에서didDocumentStatus의 값은published입니다. 값이 여전히outOfSync경우 Key Vault와did.json문서 간에 불일치가 있으며 이전 키는 서명에 계속 사용됩니다.
확인된 ID로 키를 회전해야 하나요?
기술적으로 사용자 고유의 Key Vault 인스턴스를 사용하는 경우 확인된 ID로 서명 키를 회전할 필요가 없습니다. 현재 서명 키가 만료되지 않습니다. 퍼블릭/프라이빗 키 솔루션과 마찬가지로 키를 주기적으로 회전하는 것이 가장 좋습니다.
서명 키를 회전하면 어떻게 되나요?
1-4단계를 성공적으로 수행하면 확인된 ID에 새 서명 키가 있으며 해당 시점부터 서명된 모든 JSON 웹 토큰은 새 키를 사용하여 서명됩니다. 즉, 발급 및 프레젠테이션 요청 및 발급된 자격 증명은 새 키를 사용하여 서명됩니다.
이전 키로 서명된 자격 증명은 어떻게 되나요?
공개 did.json 문서에서 공개 키를 사용할 수 있고 Key Vault에서 키를 사용하지 않도록 설정하거나 삭제하지 않은 경우 더 이상 최신 상태가 아닌 키로 서명된 확인된 ID 자격 증명이 계속 작동합니다.
이전 서명 키를 더 이상 사용할 수 없으면 어떻게 되나요?
발급된 확인된 ID 자격 증명에 서명하는 데 사용된 키가 공개 did.json 문서에 없으면 검증 도구가 서명으로 사용되는 공개 키를 확인할 수 없으므로 확인 시도가 실패합니다. 알아야 할 두 가지 시나리오가 있습니다.
첫: 확인된 ID는 내부적으로 사용할 수 있는 10개의 키로 제한됩니다. 현재 키 1개와 이전 키 9개로 구성됩니다. Key Vault에 12개의 키가 포함된 경우 확인된 ID만 로드되고 처음 10개만 사용됩니다. 문서를 수동으로 편집 did.json 하여 이전 키를 추가할 수 없습니다. 이는 확인된 ID가 로드하는 항목과 did.json 문서에 보관되는 항목이 일치하지 않기 때문입니다. 이 경우 synchronizeWithDidDocument 를 호출하려고 하면 didDocumentStatus 반환됩니다 outOfSync.
예를 들어 Key Vault에 키가 12개 있고 확인된 ID가 키 목록에서 키 8과 9를 로드하지 않도록 하려는 경우를 예로 들어 보겠습니다. Key Vault에서 키 8과 9를 사용하지 않도록 설정한 다음 2-4단계를 수행해야 합니다.
초: 이 예제에서 키를 12번 회전하는 경우 확인된 ID는 더 이상 두 개의 가장 오래된 키를 로드하지 않습니다. 이 두 키를 사용하여 발급된 확인된 ID 자격 증명은 더 이상 확인할 수 없습니다.
비고
이전 키를 사용 중지하기 전에 자격 증명이 갱신되거나 재발행되도록 키 회전 정책을 발급된 확인된 ID 자격 증명의 수명과 조정해야 합니다. 작동하지 않는 솔루션의 예로 만료 날짜가 12개월 이내인 확인된 ID 자격 증명을 발급하는 동시에 매월 키를 회전하는 키 회전 정책이 있습니다. 이러한 솔루션은 이전 키를 더 이상 사용할 수 없기 때문에 지난 두 달 동안 문제가 발생합니다.
확인된 ID API를 호출하는 대신 Key Vault에서 직접 키를 회전할 수 있나요?
Key Vault의 관리 포털에서 회전 기능을 사용하면 안 됩니다. 확인된 ID는 Key Vault에서 키를 회전하는 것보다 /signingKeys/rotate API를 호출할 때 더 많은 작업을 수행합니다.