AWS SES サプレッションリストによるメール未着を調査・解消した
まとめ SES のサプレッションリストはリージョンごとに独立している。正しいリージョンを確認すること Hard Bounce が発生すると SES がアドレスを自動的にサプレッションリストに登録し、以降の送信がすべてブロックされる サプレッションリストから削除してもブロックされたメールは再送されない。手動で再送が必要 現象 あるユーザーへの招待メールをはじめ、OTP...
まとめ SES のサプレッションリストはリージョンごとに独立している。正しいリージョンを確認すること Hard Bounce が発生すると SES がアドレスを自動的にサプレッションリストに登録し、以降の送信がすべてブロックされる サプレッションリストから削除してもブロックされたメールは再送されない。手動で再送が必要 現象 あるユーザーへの招待メールをはじめ、OTP...
参考: マネーフォワードのGitHub不正アクセス事件をエンジニア視点で読み解く まとめ ソースコードへの認証情報ハードコードと本番データのテスト流用は「当時は正解だった判断」が組織の成長とともにアップデートされなかった結果 削除済みファイルも git log -p で復元できる。リポジトリをクローンされると歴史ごと盗まれる セキュリティ問題は「人の意識」ではなく「機械的...
はじめに anyenv はシェル初期化に依存したシム方式でランタイムを管理する。この設計が bubblewrap sandbox のようなシェル初期化を行わない環境と相性が悪く、node や npm が見つからずに大量の回避策が走る問題に直面した。 根本解決として mise への移行を検討した際に生じた疑問と、移行手順をまとめる。 anyenv と mise それぞれの仕組み a...
GitHub で「親 issue を議論ハブにして、確定した作業単位を sub-issue として 1 issue = 1 PR の粒度で切り出す」運用を感覚的にやっていたが、AI に sub-issue を実装させるようになって複数の事故が起きた。 人間だけで回していた頃は「親 issue を見れば文脈が分かる」「ラベルで状態を表せばいい」程度の暗黙ルールで動いていた。AI に sub-...
状況 ビルド成果物(数 MB の Go バイナリ)を誤って commit して push してしまった。.gitignore で追跡解除しても 履歴には残り続ける ためリポジトリサイズが膨らむ。 クリーンに除去するには履歴の書き換えが必要で、これは破壊的操作なので force-push と各クライアントの再 clone(または reset)が伴う。 主な選択肢 1. git filt...
遭遇したエラー git pull 実行時に以下の警告が出た。 Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. warning: The last gc run reported the following. Pleas...
背景 複数リポジトリのタスクを一元管理する仕組みを構築するにあたり、GitHub Projects v2 を gh CLI で操作する方法を調査した。 Classic PAT が必要 gh project コマンドは Fine-grained PAT では動作しない。 Fine-grained PAT はユーザー所有の Projects に現在非対応(GitHub ドキュメント...
結論 Claude Code の Auto Mode 中に外部システム(チケット管理ツール)への書き込みコマンドを実行したら、Permission for this action has been denied. で止められた。設定の deny ルールでも hook でもなく、公式機能 “Permission Classifier” によるリアルタイムのリスク評価が正体だった。 参...
参考: Floci の最初の1ヶ月:41サービスへ拡大した AWS エミュレータ LocalStack を CI で使っていると、Pro 機能の認証や有償ライセンスに引っかかる場面がある。代替を探していて Floci にたどり着いたので、概念だけメモしておく。手順ではなく「何のためのツールなのか」を腹落ちさせるのが目的。 Floci とは AWS サービスをローカルでエミュレー...
まとめ SSE-S3 のみの運用は「暗号化されている」が「鍵管理は統制されていない」状態 SSE-S3 が守るのは物理層レベルの脅威のみ。運用面の漏洩には寄与しない SSE-KMS 未使用 = 鍵レベル多重防御・鍵利用ログ・顧客主導キーローテーション・クロスアカウント鍵制御・コンプライアンス対応がすべて欠落 前提:S3 の at-rest 暗号化方式 ...
監査ドキュメントで「暗号化されている」と書く前に、何が暗号化されていて、何が守れているのかを正確に説明できるか。曖昧なまま書くとあとで読み返したときに自分で意味を取り直せなくなる。整理しておく。 at-rest と in-transit 区分 何の暗号化か 守れるシナリオ at-rest ...
「早さは信頼」とは 参考: 早さは信頼 返信・対応の速さは、言葉より強力な信頼構築の手段になる。これは感覚的に知っていても、意識的に実践している人が少ないテーマだ。 速く返すことは、それ自体が非言語メッセージとして機能する。「あなたのことを優先している」という意思表示になる。逆に、遅いことは「あなたの問題は私の優先度が低い」というシグナルになってしまう。 返信が遅い ≠ 丁寧...
Rubyコードが実行されるまでの流れと、CRubyを構成するコンポーネントを整理する。 実行フロー全体像 Rubyコード ↓ Lrama(パーサー) AST(抽象構文木) ↓ コンパイラ バイトコード ↓ YARV(VM) CPU命令 ※ GCはYARV実行中に並走してメモリを管理 ruby hoge.rb を叩いた瞬間に上から順番に走る。 各コンポーネン...
Web アプリの認証方式として代表的な「セッション認証」と「JWT 認証」の違いをまとめる。 セッション認証(従来方式) クライアント: cookie に session_id を保持 サーバー: session_id → DB/Redis で検索 → ユーザー情報取得 サーバーが状態を持つ(ステートフル) session_id は意味のないランダム文字列。本体はサ...
カケハシのテックブログ「誰かがやるだろう」をやめた1年間の記録を読んで、取り組みの中身よりその取り組みが成立した前提環境が気になったので整理する。 記事の取り組みサマリー 記事では以下の改善が紹介されている。 取り組み 成果 レポート機能テンプレート化 実装工数 半日 → 1時間 ...