Rotate signing keys
이 문서에서는 Microsoft Entra 확인된 ID 서명 키를 순환하는 단계를 살펴봅니다.
필수 조건
- 확인된 ID 기관이 수동으로 온보딩되고 서명 키가 자체 Azure Key Vault 인스턴스에 있어야 합니다. 빠른 설정에서는 사용자가 직접 순환할 수 없는 Microsoft에서 관리하는 공유 서명 키를 사용합니다.
- 키 순환을 수행하는 관리 사용자에게 Key Vault의 키에 대한 권한이 있어야 합니다.
서명 키 순환
공개 키는 발급자가 생성한 서명을 검증해야 하는 사용자를 위해 DID(탈중앙화 식별자) 문서에서 확인할 수 있습니다. did:web
메서드를 사용하는 기관의 경우 https://contoso.com/.well-known/did.json
에서 DID 문서를 확인할 수 있습니다(contoso.com은 예시임).
업데이트된 버전이 웹 서버에 공개적으로 제공될 때까지 확인된 ID는 새 키를 사용하여 서명을 시작해서는 안 됩니다. Azure Content Delivery Network를 통해 다중 지역 배포를 사용하는 경우 배포 프로세스에서 업데이트된 did.json
을 가져오는 데 다소 시간이 걸릴 수 있습니다.
관리자가 서비스 중단 없이 서명 키를 순환할 수 있도록 순환 프로세스는 다음 단계를 따릅니다.
signingKeys/rotate API를 호출하여 Key Vault에 새 서명 키를 만듭니다. 호출의 액세스 토큰은 키 자격 증명 모음의 키에 대한 액세스 권한이 있는 관리자용이어야 합니다. 이 작업은 키 자격 증명 모음에 새 현재 키를 설정합니다. 이전 키는 과거 키로 이동되지만 계속 사용할 수 있습니다. 응답은
outOfSync
값이 있는didDocumentStatus
특성을 포함하는 기관 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 웹 토큰은 새 키를 사용하여 서명됩니다. 즉, 발급 및 제시 요청과 발급된 자격 증명이 새 키를 사용하여 서명됩니다.
이전 키로 서명된 자격 증명은 어떻게 되나요?
더 이상 현재 키가 아닌 키로 서명된 발급되었던 확인된 ID 자격 증명은 공개 did.json
문서에서 공개 키를 확인할 수 있고 Key Vault에서 키가 비활성화되거나 삭제되지 않은 경우 계속 작동합니다.
이전 서명 키를 더 이상 사용할 수 없으면 어떻게 되나요?
발급된 확인된 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는 더 이상 가장 오래된 키 2개를 로드하지 않습니다. 해당 두 키를 사용하여 발급된 확인된 ID 자격 증명은 더 이상 검증할 수 없습니다.
참고 항목
이전 키가 폐기되기 전에 자격 증명이 갱신되거나 재발급되도록 키 순환 정책을 발급된 확인된 ID 자격 증명의 수명에 맞춰 조정해야 합니다. 작동하지 않는 솔루션의 예로는 만료 날짜가 12개월 남은 확인된 ID 자격 증명을 발급하는 동시에 매달 키를 순환하는 키 순환 정책을 적용하는 것을 들 수 있습니다. 이러한 솔루션에서는 이전 키를 더 이상 사용할 수 없기 때문에 지난 두 달 동안 문제가 발생합니다.
확인된 ID API를 호출하는 대신 Key Vault에서 바로 키를 순환할 수 있나요?
Key Vault의 관리 포털에서 순환 기능을 사용하면 안 됩니다. 확인된 ID는 Key Vault에서 키를 순환하는 것보다 /signingKeys/rotate API를 호출할 때 더 많은 작업을 수행합니다.