Kubernetesプロジェクトはネームスペース階層化を開発中:きめ細かな権限管理が可能に
Kubernetesプロジェクトが、単一Kubernetesクラスタの分割利用のための仕組みである「ネームスペース」を階層化することにより、さらにきめ細かな利用制御を実現する「階層型ネームスペース」を、ブログポストで紹介した。
Kubernetesプロジェクトは2020年8月14日(米国時間)、「階層型ネームスペース(Hierarchical Namespaces)」への取り組みをブログで紹介した。これはKubernetesプロジェクトのマルチテナンシーワーキンググループ(wg-multitenancy)が開発を進めているもので、「Hierarchical Namespaces Controller(HNC)」のv0.5.1がGitHubで公開されている。
単一のクラスタを複数のチームや組織が分割利用できるように、Kubernetesでは「ネームスペース」という仕組みがある。これを使うことでオーナーシップを分離でき、さらにその作成や利用に明示的な認可を適用できる。
だが、現状のネームスペースには限界がある、とエイドリアン・ルドウィン氏はブログポストで説明した。例えば単一のチームにおいて、複数のマイクロサービス群を運用している場合、それぞれに異なる認証情報やリソース割り当てを適用することができない。単一のチームが複数のネームスペースを運用することは可能だが、オーナーが同一であるにもかかわらず、これらのネームスペース間でセキュリティポリシーの一部を共通化することができない。また、新規ネームスペースの作成は、高権限所有者に限定されている。チームの誰かが新たなネームスペースを使いたいと思っても、クラスタ管理者にチケットを上げるしかない。これは小規模組織では問題がなくとも、組織が大型化すれば大きな負担となる。
こうした問題の解決を目指し、マルチテナンシーワーキンググループはHNCの開発を進めているという。
「最もシンプルな言い方をすれば、階層型ネームスペースは通常のKubernetesネームスペースではあるものの、単一のオプションとしての親ネームスペースを認識する小さなカスタムリソースを備えている。これにより、単一ネームスペース内のみならず、複数ネームスペースにまたがるオーナーシップというコンセプトを確立できる」(ルドウィン氏)
階層ネームスペースは、次の2点を実現する。
ポリシーの継承 あるネームスペースが別のネームスペースの子である場合、RBAC RoleBindingsなどのポリシーオブジェクトが親から子に複製される。
ネームスペース作成の委任 通常、ネームスペースの作成にはクラスタレベルの権限が必要だ。一方、階層型ネームスペースにおける「サブネームスペース」(子ネームスペース)は、親ネームスペースのレベルで明示的な権限が与えられていれば作成できる。
「クラスタ管理者は、チームのための単一の「ルート」ネームスペースを必要なポリシーとともに作成し、そのチームのメンバーにサブネームスペースを作成する権限を委譲できる。チームのメンバーは、クラスタ管理者によるポリシーに違反することなく、自分たちの利用のためにサブネームスペースを作成できる」(ルドウィン氏)
Copyright © ITmedia, Inc. All Rights Reserved.