서명 키 정책 업데이트

PATCH /v1/signing-keys/policy · 권한 signing-keys:write

JSON merge patch(application/merge-patch+json, RFC 7396)로 서명 키 정책을 업데이트합니다. If-Match는 필수입니다. 없으면 428, 오래된 버전이면 412입니다. 정책이 한 번도 작성되지 않았다면 버전은 "0"입니다. 아무것도 바꾸지 않는 패치는 쓰기를 하지 않고 버전을 유지합니다.

algorithm을 바꾸면 새 알고리즘으로 새 next 키가 즉시 생성됩니다. JWKS를 캐시하는 검증자가 먼저 볼 수 있도록 이 키는 빨라야 7일 후에 활성화될 수 있습니다(그보다 이른 immediate 교체는 409 next_key_too_young으로 실패). 그때까지 활성 키가 계속 서명합니다. rotation_interval_days를 바꾸면 next_rotation_at이 이동합니다. 변경이 성공하면 signing_key.policy_updated 관리 감사 기록이 작성됩니다.

요청

필드 유형 필수 설명
If-Match header 예 마지막으로 읽은 정책의 ETag(한 번도 작성되지 않았다면 "0"). 없으면 428, 오래되었으면 412.
algorithm string 아니오 RS256, ES256, PS256 또는 EdDSA. null일 수 없습니다.
rotation_interval_days integer 아니오 30-365. null일 수 없습니다.
storage string 아니오 wrapped(개인 키는 환경 키로 암호화되어 저장되며 서명 서비스 내부에서만 사용됨). transit(키 관리 서비스에 보관되는 키)은 아직 사용할 수 없으며 422로 거부됩니다. null일 수 없습니다.

응답

200 OK와 업데이트된 정책, 새 ETag.

{
  "algorithm": "ES256",
  "rotation_interval_days": 90,
  "storage": "wrapped",
  "next_rotation_at": "2026-12-04T09:30:00.123456Z",
  "updated_at": "2026-10-05T09:30:00.123456Z"
}

오류

HTTP code 조건
400 unknown_field 패치에 미알려진 필드나 읽기 전용 필드가 있거나 JSON 객체가 아닙니다(malformed_request).
412 precondition_failed If-Match가 현재 버전과 일치하지 않습니다.
415 unsupported_media_type 콘텐츠 유형이 application/merge-patch+json이 아닙니다.
422 validation_failed 값이 잘못되었거나(invalid_value), 범위를 벗어났거나(out_of_range), null로 설정되었거나(invalid), storage가 transit입니다.
428 precondition_required If-Match 헤더가 누락되었습니다.
401 unauthenticated 자격 증명이 누락되었거나, 잘못되었거나, 취소되었습니다.
403 insufficient_permissions 자격 증명에 필요한 권한이 없습니다.
429 rate_limited 속도 제한을 초과했습니다. Retry-After 기간 후에 다시 시도하세요.
501 not_implemented 이 배포에서는 아직 작업을 사용할 수 없습니다. 다시 시도해도 결과는 바뀌지 않습니다.
503 service_unavailable 종속성을 일시적으로 사용할 수 없습니다. Retry-After 기간 후에 다시 시도하세요.

예제

curl -X PATCH https://api.eu.keenauth.com/v1/signing-keys/policy \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "0"' \
  -d '{"algorithm":"ES256","rotation_interval_days":90}'