本文へスキップ
MameTechNews
バックエンド

AWS Private CAのKubernetes発行元に認可不備、更新前の確認が必要

## POINTS

  • v1.10.1未満では、名前空間の発行元だけを許可された利用者が、クラスタスコープの発行元による下位CA証明書を得られることがある。
  • 修正版はissuerRef.kindの完全一致を要求し、kind: IssuerのままではFailed、種類の不一致はPendingのまま更新されない。
  • 更新前にCertificate、CertificateRequest、Ingressのkindを監査し、すぐ更新できない間は承認とRBACをkindでも絞る。

AWSのセキュリティ告示2026-156-AWSは、cert-managerの外部発行元であるaws-privateca-issuerの発行元解決に、正しくない認可があったと説明している。影響を受けるのはv1.10.1未満と、EKSアドオンのv1.10.1-eksbuild.1未満だ。承認ポリシーが名前空間スコープの発行元だけを認めている認証済み利用者が、許可されていないクラスタスコープの発行元で署名された証明書を得られる場合がある。下位CAの証明書も含まれる。

修正はv1.10.1と、対応するEKSアドオンにある。ただし更新は挙動を厳しくする。issuerRef.kindはAWSPCAIssuerまたはAWSPCAClusterIssuerと完全一致し、参照先の種類と一致しなければならない。これまでは通っていた緩い解決に依存したCertificateRequestは、更新後に更新されなくなる。kindが無い、または誤っているもの、Ingressの注釈がkindを指定しないときにcert-managerが付けるkind: IssuerはFailedになる。kind: AWSPCAIssuerのままクラスタスコープの発行元を指す要求は、無期限にPendingのままだ。証明書の期限が来るまでサービスは動き続けるため、障害は更新の直後ではなく後から出る。

上げる前に、CertificateRequest、Certificate、Ingressを調べ、名前空間ならAWSPCAIssuer、クラスタならAWSPCAClusterIssuerを明示する。すぐ上げられない場合の回避策は、承認ポリシーとRBACを発行元の名前だけでなくkindにも絞ることだ。フォークや派生コードも同じ修正を入れる必要がある。Private CAで社内証明書を自動発行しているクラスタは、アドオンの版と、Ingressが暗黙に使っているkindを先に棚卸しする。