LoginSignup
2
0

More than 1 year has passed since last update.

Kubernetes 1.25: SIG-Auth の変更内容

Last updated at Posted at 2022-09-29

はじめに

このページではKubernetes v1.25におけるSIG-Authに関連する取り組みについて、ChangelogのChanges By Kindの内容から紹介しています。ここに記載されていないものは別のまとめで記載されていると思いますので、 Kubernetes 1.25: 変更点まとめの記事も合わせて参照してみてください。

今回はPod SecurityのGAやv1.24の記事で紹介したKMS v2が早くもalpha機能として追加されたことが注目ポイントです。

:pencil: がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

Changes By Kind

Deprecation

  • DeprecatedになっていたAPIサーバの --service-account-api-audiences フラグが削除されました。--api-audiencesを代わりに使ってください。 (#108624)

:pencil:
KubernetesのSA Token認証ではこのフラグで指定された値がTokenのaud claimに少なくとも1つ含まれていることを検証します。
デフォルトは --service-account-issuerのURLを含んだ単一のリストです。明示的に指定している場合はflagを移行する必要があります。

  • v1.19から非推奨となったalphaのseccompアノテーション seccomp.security.alpha.kubernetes.io/podcontainer.seccomp.security.alpha.kubernetes.ioのサポートの一部が削除されました。Kubeletはアノテーションをサポートしなくなり、Static Podでのアノテーションの使用はサポートされなくなました。また、seccompフィールドを持つPodが作成された際にseccompアノテーションが自動入力されなくなりました。アノテーションからのseccompフィールドの自動入力は、1.27 で削除される予定です。Podは、対応するPodまたはコンテナーのsecurityContext.seccompProfileフィールドを代わりに使用する必要があります。(#109819)

  • gcpとazure auth pluginはclient-goとkubectlから削除されました。https://github.com/Azure/kubeloginhttps://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke を確認してください。(#110013)

  • 1.21から非推奨となっていたbetaのPodSecurityPolicy admission pluginが削除されました。https://kubernetes.io/docs/tasks/configure-pod-container/migrate-from-psp/ の指示に従い組み込みのPodSecurity admission plugin(または別のサードパーティのwebhook)に移行してからv1.25にアップグレードしてください。(#109798)

API Change

  • KMS v2alpha1のサポートが追加されました (#111126)

:pencil:
KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/3299-kms-v2-improvements
KEPでは複数の問題に対する改善が提案されています。

  • Performance
    • Key Hierarchyの修正。v2ではDEKはPluginが持つLocal KEKで暗号され、Local KEKはKMSのRemote KEKで暗号化されます。
    • これによりAPI Server再起動後などキャッシュが無い状態において大量のリクエストが発行される問題が改善されます
  • Rotation
    • 下記のStatus APIから最新のKEKのKey IDを返却することでAPI Serverがローテーションに気づけるようになります
    • v1.20からalphaになっているStorageVersion APIの機能を使う感じ?
    • 実装については次バージョンのv1.26が予定されています。
    • Rotation部分の詳細は→のPRを参照してください https://github.com/kubernetes/enhancements/pull/3486
  • HealthCheck, Stauts
    • 新しく追加されたStatus APIではLatest Key IDの検知の他にHealth状態も応答します。
  • Observebility
    • 暗号化・複合化のリクエストにUIDフィールドが追加されました
  • v1.25で、PodSecurity restricted levelは、Podに.spec.os.name="windows"を設定するPodにLinux固有のsecurityContextフィールドをセットする必要がなくなりました。1.25+のクラスタにv1.23以前のout-of-skewのノードが存在し、かつLinux固有のsecurityContextフィールドを引き続き必須としたい場合、Namespaceにラベル(e.g. pod-security.kubernetes.io/enforce-version: v1.24)を付与してv1.25以前の restricted バージョンが選択されるように設定してください。(#105919)

  • PersistentVolumeのspec.claimRefの所有権のセマンティクスをatomicからgranularに変更しました。(#110495)

  • 複数のClusterCIDRをサポートするNodeIPAMの導入(#2593)をalpha featureとして導入しました。 (#109090)

    • feature gate MultiCIDRRangeAllocator=trueを設定するとMultiCIDRRangeAllocatorコントローラを使用できるかどうかが決まり、下記のkube-controller-managerフラグはアクティブなコントローラを選択します。
    • kube-controller-managerで--cidr-allocator-type=MultiCIDRRangeAllocatorフラグを設定してMultiCIDRRangeAllocatorを有効化します。
  • 設定されたpod failure policy rulesに従ってpod障害を処理するためのサポートを導入しました。(#111113)

  • DisruptionTarget pod condition typeが導入されます. reason フィールドはpod停止の理由を示します: (#110959)

    • PreemptionByKubeScheduler: kube-schedulerによるPodのpreempt
    • DeletionByTaintManager: NoExecute taintに起因するtaint managerによるPodの削除
    • EvictionByEvictionAPI: Eviction APIによるPodのevict
    • DeletionByPodGC: PodGCによる取り残されたPodの削除
  • PodSecurity admission pluginはGAになりデフォルト有効になりました。admission設定のバージョンがsecurity.admission.config.k8s.io/v1に昇格しました。(#110459)

  • metadata.clusterNameフィールドは完全に削除されました。これはユーザに対して目に見える影響はないはずです。(#109602)

Feature

  • KMS v2alpha1 APIが追加されました。(#110201)

  • Feature gate CSIMigrationGAになりenabledに固定されました。feature gateはv1.27で削除されます。(#110410)

  • ServerSideFieldValidationはbetaになりました。スキーマのバリデーションはサーバーサイドで行われ、デフォルトでは無効なフィールドや未知のフィールドがあると警告を受け取ります。(#110178)

  • PodSecurityContextPodSecurityPolicyはsysctlのセパレータとしてスラッシュをサポートします。(#106834)

  • gcpとazure auth pluginはサポート範囲のkubectlのマイナーバージョンで https://issue.k8s.io/111911 が解決するまでclient-goとkubectlに対してリストアされました。(#111918)

:pencil:
#110013 で削除されたけどこのPRで元に戻された

Documentation

  • N/A

Failing Test

  • N/A

Bug or Regression

  • GCEの最新のファイアウォール機能であるpinhole firewallを追加し、ingress firewall-rulesにdestination-rangesを導入しました。ILBまたはNetLB経由のトラフィックのみを許可しバックエンドのIPへのアクセスを制限します。この変更は、既存のILBまたはNetLBの挙動を変更するものではありません。 (#109510)

  • AuthenticatedGroupAdderとキャッシュされたtoken authenticatorの間の認証時のdata競合の問題を修正(#109969)

  • --audit-log-pathで指定されたファイルの親ディレクトリが存在しない場合、Kuberentesはそのディレクトリを作成します。(#110813)

  • APIのバリデーションでkey enciphermentのusageをオプショナルにしました。(#111061)

:pencil:
CSR APIでKey Enciphermentが必須なパラメータとして扱われていましたがkubeletが利用する鍵の種類によって(RSAor非RSA)で必須パラメータが区別されるようになります。v1.25ではこの区別はオプショナル扱いであり非RSA鍵の利用でEnciphermentを含んでいてもエラーになりませんが、v1.26からはエラーとして扱われるようです。
参考: https://github.com/golang/go/issues/36499

Other (Cleanup or Flake)

  • kube-controller-managersの非推奨であった--experimental-cluster-signing-durationフラグが削除されました。v1.19から利用可能になった--cluster-signing-durationフラグを使用するように適合させました。(#108476)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0