署名鍵ポリシーを更新
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}'