署名鍵ポリシーを更新

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 コード 概要
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}'