4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kubernetes 1.23: SIG-Auth の変更内容

Last updated at Posted at 2022-01-06

はじめに

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

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

Changes by Kind

Deprecation

N/A

API Change

  • omitManagedFieldsaudit.Policyaudit.PolicyRuleの両方に追加されたので、クラスタオペレータはリクエストとレスポンスのボディのマネージドフィールドがAPI監査ログに書き込まれないように選択できます。 (#94986, @tkashem)

  • StatefulSet Pod用に自動的に作成されたPVCが自動的に削除さえるfeature gate StatefulSetAutoDeletePVCを追加しました。(#99728, @mattcary)

  • client-go impersonation configで、impersonated uid情報をリクエストで渡すためのUIDを指定できます。 (#104483, @margocrawf)

    :pencil: v1.22でUser impersonation の仕組みとして、Impersonate-Group、Impersonate-User、Impersonate-Extraと同様にUIDを指定できるようになりました。このPRではclient-goでImpersonated UIDの指定をサポートしたようです。

参考: https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation

  • いくつかのフィールドを変更したv2beta2からHPA v2を作成します。(#102534, @wangyysde)

  • kube-proxyにおけるUDPサービスのリグレッションを修正。これは古い接続を検出するロジックが、エンドポイントが準備できているかどうかを考慮していなかったためです。(#106163, @aojea)

  • Kubernetesはgo 1.17を使ってビルドされます。 (#103692, @justaugustus)

  • fieldValidation=[Strict,Warn,Ignore]によるサーバーサイドの厳密なスキーマ検証リクエストを行います。 (#105916, @kevindelgado)

  • IPv6DualStack featureをstableに昇格します。IPAMコントローラのためのController Managerのフラグに若干に変更があります。(#104691, @khenidak)

    :pencil: @tkusumi さんの記事にて詳しく紹介されています。
    参考: https://qiita.com/tkusumi/items/9516b7955c1c33d31e8e

  • Generic Ephemeral Volume featureがGAになり無条件で有効になります。(#105609, @pohly)

    :pencil: @ysakashita さんの記事が参考になります。
    参考: https://qiita.com/ysakashita/items/5c54dcf0f51992760e5e#generic-ephemeral-volumes

  • TTLAfterFinished feature gateがGAになりデフォルトで有効になります。 (#105219, @sahilvv)

  • LogFormatRegistryのユーザはlogr v1.0.0APIへのアップデートが必要です。JSONログ出力はgo-logr/zaprのフォーマット(エラーメッセージにvフィールドが存在しない、不正な呼び出しへの追加情報)を使用するようになり、いくつかの修正(無効なログ呼び出しに関する警告の正しいソースコードのlocation)が行われました。(#104103, @pohly)

  • Custom Resource DefinitionのバリデーションルールをOpenAPI v3 schemaのx-kubernetes-validation拡張を使ってCEL expression languageで記述できるになりましたCustomResourceValidationExpressions feature gateで利用できます。 (#106051, @jpbetz)

Feature

  • csi-translation-lib で Portworx pluginがサポートされました(Alphaリリース)。マイグレーションにはPortworx CSI driverが必要であり、このPRではCSIMigrationPortWorx feature gateを追加し以下で有効にできます。 (#103447, @trierra)

    1. kube-controller-manager にフィーチャーフラグを追加
      • --feature-gates=CSIMigrationPortworx=true
    2. kubelet の設定に、次のフィーチャーフラグを追加:
      • featureGates: CSIMigrationPortworx: true
  • client-go: fake client ReactorにDeleteOptionsを渡すようになりました。(#102945, @chenchun)

  • PodSecurity: 1.23+のrestricted policy levelでは、runAsUser=0がセットされたPodとコンテナはadmission-timeで拒否されます。以前はruntimeで拒否されていました。(#105857, @liggitt)

  • PodSecurityのadmission processにてexemptionされたPodとPodコントローラは理由に基づいたpod-security.kubernetes.io/exempt: user/namespace/runtimeClass(/はorを意味する) アノテーションがマークされるようになりました。
    PodSecurityのadmissionでPodを許可または拒否したenforcement levelがpod-security.kubernetes.io/enfoce-policyアノテーションによってマークされるようになりました。
    監査ポリシー違反について通知するアノテーションが、pod-security.kubernetes.io/audit から pod-security.kubernetes.io/audit-violation に変更されました。(#105908, @stlaz)

    :pencil:
    参考: https://kubernetes.io/docs/concepts/security/pod-security-admission/#exemptions
    KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/2579-psp-replacement/README.md#audit-annotations

  • feature flagが有効な場合、/openapi/v3 エンドポイントにOpenAPI v3が実装されます。 (#105945, @Jefftree)

    :pencil: OpenAPIv3 feature gateはv1.23でalpha版として追加されています
    参考: https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/

  • PodSecurity admissionプラグインがbetaになり、デフォルトで有効になります。admission configurationのバージョンは pod-security.admission.config.k8s.io/v1beta1 に昇格しました。使い方は https://kubernetes.io/docs/concepts/security/pod-security-admission/ を参照してください。(#106089, @liggitt)

  • ServiceAccountIssuerDiscovery feature gateが削除されました。Kubernetes 1.21でGAになりました。 (#103685, @mengjiao-liu)

  • The constants/variables from k8s.io for STABLE metrics is now supported. (#103654, @coffeepac) [sig/node,sig/auth,sig/instrumentation,sig/testing]

  • STABLEメトリックでk8s.ioの定数/変数がサポートされるようになりました。(#103654, @coffeepac)

Documentation

N/A

Failing Test

N/A

Bug or Regression

  • ワークロードリソース(deployment, replicaset, など)を検証するエラー(PodSecurity admission)がadmissionをブロックしないようになりました (#106017, @tallclair)

  • PodSecurity admissionのメトリクスである pod_security_evaluations_total, pod_security_exemptions_total, pod_security_errors_total が追加されました。(#105898, @tallclair)

  • client-goは、生成されたすべてのグループとバージョンに同じHTTPクライアントを使用し、複数のグループのバージョンに対してカスタマイズされたTransportを共有できます。 (#105490, @aojea)

  • 証明書をローテーションしていない場合は、kubelet用のカスタムdialerを使用しないようにします。それによりTCP接続を再利用してapiserverとkubeletの間に1つだけ持つことができます。ユーザーがHTTP1.1を使用したstale connectionの問題を実験したい場合、環境変数DISABLE_HTTP2を設定することで、以前のkubeletの挙動を強制することができます。(#104844, @aojea)

  • ログをstdoutに出すための --audit-log-path=- の設定のリグレッションを修正しました。(#103875, @andrewrynhard)

  • OSの環境変数をCredential Provider Configファイルで与えられたものに追加していなかったため、クレデンシャルプロバイダーのバイナリの実行に失敗することがある問題を修正しました。 (#103231, @n4j)

    :pencil: Credential Provider ConfigではOSの環境変数以外にファイル内で追加の環境変数を定義できるようになっていますが、修正前はConfigファイルから与えられた環境変数しかバイナリに渡されていなかったようです。

  • controller-manager, kubelet, kube-apiserverまたはclient-goのLRUキャッシュでパニックを引き起こす可能性のあるリグレッションを修正しました。(#104466, @stbenjam)

  • kube-apiserverでinjectされるservice account token volumeでセットされるdefaultModeフィールドを持たないv1 Podオブジェクトをadmission webhookが観測できる問題を修正します。(#104523, @liggitt)

  • 短命な証明書で構成されたクラスタで動作するように、should support building a client with a CSR E2Eテストを修正。 (#105396, @liggitt)

  • log出力フォーマットにJSONを使用する場合はkubernetesのオブジェクト参照(=name + namespace)をstructed loggingに移行しました。(#104877, @pohly)

  • 既存オブジェクトの更新に対してPod SecurityContextのscysctlsのnameパラメータにスラッシュを含むこと、kubeletのsysctl whitelistがスラッシュを含むことをサポートします。(#102393, @mengjiao-liu)

Other (Cleanup or Flake)

  • Parseできないstatus.certificateフィールドを持つCertificateSigningRequestオブジェクトをクリーンアップする際の問題を修正しました。(#103823, @liggitt)

  • BoundServiceAccountTokenVolume feature gateはv1.22からGAになり無条件で有効なり、--feature-gates引数で指定することはできなくなりました。(#104167, @ialidzhikov)

所感

v1.23ではPodSecurityの機能がbetaになりましたが、他にはCSIまわりでSIG-Storageの作業と関連したものが最近は多いように思います。
今後について、SIG-Authではv1.24に向けてKMSプラグインの改善などが動いているようなので、どのようなものになるかKEPが提出されたら追いかけたいと思います。

4
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?