インフラ・クラウド・DevOps · 上級
シークレットとキーを管理する
一行でいうと: コードリポジトリ内のシークレットは漏洩したシークレットだ——リポジトリがプライベートでも、後で削除しても。
保存場所
サービスごと、環境ごとの権限とアクセスロギングを持つ、実行時に値を注入するマネージドシークレットストアに。環境変数はトランスポートメカニズムであり、ストレージの場所ではない。
定期的なローテーション
すべてのシークレットには数分で実行できるローテーションプロセスが必要だ。誰かが去るとき、疑われる漏洩のとき、そして定期的に必要だ。ローテーションにダウンタイムが必要なら、必要なときに行われない。
ローテーションがスムーズになるよう、短時間並行して二つのアクティブキーをサポートする。
事前に漏洩を防ぐ
ビルドプロセスのシークレットスキャナーと、シークレットが履歴に入る前にブロックされるよう変更を保存する前のフック。既に入ってしまった場合——漏洩したと仮定し、すぐにローテーションし、その後に履歴をクリーンアップする。
さらに深く
環境別に絶対的にシークレットを分離する。開発環境からアクセスできる本番キーは分離の意味を無効にし、ほとんどの内部漏洩はこうして起きる——悪意なく、間違ったアドレスを指したスクリプトによって。