open-appsec、ZeroSSL、k8s 1.29:DevOps/SRE/Kube WeeklyUpdate (23/12/4-11)
以下の3つの記事から気になったもの & 個人的に気になったものを毎週紹介しています。
DevOps Weekly( https://devopsweeklyarchive.com/ )
SRE Weekly( https://sreweekly.com/ )
KubeWeekly( https://www.cncf.io/kubeweekly/ )
DevOps Weekly
open-appsec
例として、K8s Ingress Controllerにデプロイする場合は、Ingress Controllerコンテナにopen-appsecエージェントと通信するopen-appsecアタッチメントをHelm Chartで一緒にデプロイできます。
SRE Weekly
Trial by Fire: SRE 最前線からの物語 — Ep1: 証明書への挑戦
筆者の会社では、過去3ヶ月間で証明書に関連する問題やインシデントが多数発生していました。これにより、チームには多大な労力をもたらし、ユーザにとって付加価値のある機能開発に集中できなくなりました。
サービスのインフラにはKubernetesを使用しており、cert-managerを利用して証明書のライフサイクルを管理しており、認証局には Let's Encrypt を使用している構成。
ただ、Let's Encryptには登録ドメインごとに取得可能な証明書数などにレート制限があり、これが原因で証明書の有効期限が切れていたことがわかった。
また、このレート制限に引っかかると、有効期限が切れた証明書を更新できなくなってしまう。
そのため、より優れた制限クォータ、または理想的には無制限に使うことのできるACME証明書プロバイダーを探すことにした。
その結果、ZeroSSLというプロバイダーを使用することにしたとのこと。ZeroSSLは90日間の証明書を無制限に作成できるようになった。
その結果、レート制限による証明書の期限切れ問題も解消された。
ただ、利用から数ヶ月後、ZeroSSLにもリクエスト数に制限(5分あたり最大200件)があることが判明した。
緩和策としては、このリクエストを調整するKubernetesオペレーターを開発したが、事態はあまり変化しなかった。
この原因としては、cert-managerコードに問題があり、先ほどのリクエスト制限のために発生したAPIエラー(4xx)の際に再試行しないというロジックが組まれていた。そのため、cert-managerプロジェクトをフォークし、修正を加えて、それをデプロイするようにしたとのこと。
これでZeroSSLの制限問題も改善されたようです。
KubeWeekly
Kubernetes 1.29: The Security Perspective
今回リリースになった機能強化のなかで、ARMOが一般的な機能強化とセキュリティ面における新機能の紹介を本記事にて行なっています。
一般的な機能強化
Pod Lifecycle Sleep Action (アルファ版)
ポッドの終了を遅らせるスリープアクションはデバッグに有益です。
この機能によって、ポッドが終了する前にポッドの状態を調査してキャプチャすることができます。
SideCar Container (ベータ版)
サイドカーコンテナをinitコンテナとして起動する機能が1.28でアルファ版としてリリースされていましたが、1.29でベータ版に昇格していました。
セキュリティ面での機能強化
Ensure Secret Pulled Images (アルファ版)
コンテナイメージのプル操作に対して、ポッドのKubernetesシークレットを使用するようになるようです。今までは、1つ目のPodであるイメージAをプルし、別のPodで同じイメージAを指している場合は最初のPodの認証情報が引き続き使用されていたため、これによる不正アクセスが発生する危険性がありました。
このアップデートにより、イメージプルプロセスを保護することで、攻撃者によるイメージの傍受や改ざんが防止できます。
そのほかにも様々なアップデートがあったので気になる方はブログを参照してみてください。
KEP見なきゃなぁと思いつつ、見れていない…
Discussion