LOGBREW_PROJECT_ID にプロジェクトの UUID を設定します。LOGBREW_API_URL に https://api.logbrew.co を設定します。例では Bash、curl 7.76.0 以降、jq を使います。
計画的なローテーションでは、古いキーを無効化する前に、新しいキーを作成、デプロイ、テストします。ローテーションの間隔はセキュリティポリシーで決めます。キーに有効期限がある場合は、その日より前に置き換えます。
1
新しいキーを作成する
POST /api/projects/{project_id}/ingest-keys は、空でない120文字以内の label を受け付けます。kind は cli、sdk、browser、server、artifact のいずれかです。artifact キーはテレメトリを送信できません。省略可能な expires_at には、未来の RFC3339 時刻を指定する必要があります。古いキーと同じ kind を使います。CLI は、--kind を省略すると sdk を、--label を省略すると CLI-created SDK key を使います。CLI には有効期限のフラグがありません。expires_at を設定するには API を使います。CLI は、1回だけ表示されるトークンを、ソース管理の外にある所有者専用の新しいファイルに保存します。出力するのはメタデータで、トークンは出力しません。ingest_key.id を NEW_KEY_ID に設定します。結果がはっきりしない場合は、まったく同じコマンドをもう一度実行します。CLI は保留中の再試行用キーを再利用します。この再試行では --abandon-retry を使わないでください。API を直接呼び出すクライアントは、レスポンスでトークンを1回だけ受け取ります。再試行するには、同じ Idempotency-Key ヘッダーと同じボディを送信します。24時間以内であれば、その再試行は同じキーを返します。トークンを出力、コミット、共有しないでください。2
古いキーを有効にしたまま新しいキーをデプロイする
新しいトークンを、保護されたデプロイ設定に入れます。アプリをデプロイします。古いキーは有効なままにします。どちらのトークンも、ソース、ビルド出力、ログに含めないでください。
3
合成イベントを1件送信する
新しいトークンをシェル変数 読み取りで、同じ
new_ingest_key に読み込みます。出力はしないでください。新しいキーで合成のログを1件送信し、読み戻します。occurred_at のこのログが返ってから先に進みます。以前のローテーション確認用のログでは、新しいキーが動くことの証明になりません。デプロイしたアプリがテレメトリを送信していることも確認します。コマンドが失敗したら、止めてレスポンスを読みます。漏えいしていない限り、古いキーは有効なままにします。4
秘密情報を含まないキーのメタデータを一覧表示する
アカウントの認証から レスポンスは、トークンを含まないキーのメタデータの配列です。ステータスは
LOGBREW_ACCOUNT_BEARER を設定します。古いキーの ID を確認します。NEW_KEY_ID が active であることを確認します。active、expired、revoked のいずれかです。expires_at の時刻を過ぎたキーは expired になります。5
古いキーだけを無効化する
一覧から
OLD_KEY_ID を設定します。このコマンドは、2つの ID が異なる場合だけ古いキーを無効化します。DELETE はべき等です。status: "revoked" と revoked_at が設定されたキーのメタデータを返します。レスポンスがはっきりしない場合も、安全に繰り返せます。unset new_ingest_key を実行します。キーのファイルは、秘密情報のポリシーに沿って扱います。安全に回復する
それでもローテーションが失敗する場合は、問題を報告してください。共有するのはキーのメタデータだけにします。認証情報、ヘッダー、生のテレメトリ、顧客のデータ、ローカルのパス、ソースコードは含めないでください。
