Kubernetesを構築しましたか? 次に、これらの5つのRBACツールを試してアクセス許可を監査します
公開: 2022-03-14Kubernetes RBACは、Kubernetesクラスター内のリソースへのきめ細かいアクセスを提供するために使用される効率的なロールベースの承認方法です。
ただし、適切に使用しないと、コンプライアンスの大惨事を引き起こしやすくなります。 そのため、Kubernetesで危険な権限を監査および特定するためのRBACツールが必要です。
この記事では、Kubernetes RBACとは何か、リスクのあるアクセス許可を監査することが重要である理由、およびリスクのあるアクセス許可の監査に最適なツールを見つけることが重要である理由について説明します。
RBACとは何ですか?
ロールベースのアクセス制御(RBAC)は、各アクセス許可がユーザーに割り当てられたロールに基づくセキュリティメカニズムです。 したがって、このシステムを使用すると、Kubernetesクラスターのリソース(名前空間、ポッド、ジョブ)へのアクセスをアプリケーションまたはユーザーに制限することができます。
Kubernetesでは、RBACポリシーを使用して、システムユーザー(ユーザーまたはグループ)のアクセス権とサービスアカウント(サービスアカウント)のアクセス権を管理できます。
Webhookまたはノード認証を介してABAC(属性ベースのアクセス制御)などのKubernetesでユーザーを認証する方法は他にもありますが、安定バージョンで利用できる最も広く使用されているネイティブ認証メカニズムはRBACです。
実際には、リソースとのすべてのやり取りはAPIサーバーを介して行われます。つまり、最終的には、すべてが当該サーバー(マスターノードまたはコントロールパネルの重要なコンポーネント)へのHTTPリクエストの作成に限定されます。
Kubernetesには、クラスターリソースアクセス権限を設定するために組み合わせることができる4つのRBAC関連オブジェクトがあります。 これらは、Role、ClusterRole、RoleBinding、およびClusterRoleBindingです。すべてのKubernetesオブジェクトと同様に、これらのオブジェクトを操作するには、KubernetesAPIを使用する必要があります。
Kubernetesでの役割
Kubernetesには、RoleとClusterRoleと呼ばれる2種類のロールがあります。 2つの最大の違いは、Roleが具象名前空間に属しているのに対し、ClusterRoleはクラスターに対してグローバルであるということです。 したがって、ClusterRoleの場合、その名前はクラスターに属しているため、一意である必要があります。 ロールの場合、2つの異なるネームスペースが同じ名前のロールを持つことができます。
言及する必要があるもう1つの違いは、Roleは同じ名前空間内のリソースへのアクセスを許可するのに対し、ClusterRoleは任意の名前空間内のリソースへのアクセスを許可できることに加えて、ノードなどの同じ名前空間内のリソースへのアクセスも許可できることです。とりわけ。
役割のタイプがわかったので、次は、これらの役割を誰に割り当てることができるかを知ることです。 この場合、ユーザーアカウント、サービスアカウント、およびグループがあります。 ユーザーアカウントは特定のユーザーに割り当てられたアカウントであり、サービスアカウントはプロセスによって使用されます。 たとえば、アプリケーションがクラスターからリソースにプログラムでアクセスする必要があると想像してください。このために、サービスアカウントを使用します。
最後に、役割をアカウント(ユーザーまたはサービス)またはグループにバインドする「接着剤」が必要です。 Kubernetesには、RoleBindingとClusterRoleBindingの2つのリソースがあります。 RoleBindingは同じ名前空間にあるロールを参照できますが、ClusterRoleBindingは任意の名前空間の任意のロールを参照し、グローバルにアクセス許可を割り当てることができます。
注意として、「デフォルトではすべてが拒否され」、同じユーザーに複数の役割を割り当てることができるため、権限はリソースへのアクセスのみを許可します
RBACを使用するための唯一の前提条件は、「 –authorization-mode=RBAC
」オプションを使用してクラスターで有効になっていることです。 これは、次のコマンドを使用して確認できます。
kubectl api-versions
危険なRBAC権限とは何ですか?それらを修正する方法は?
ポッドリソースへの不正アクセスを許可または許可できる許可は、危険な許可と見なされます。 たとえば、ユーザーが編集権限を持っている場合、ユーザーは自分のロールを編集したり、他の方法ではアクセスが許可されていないリソースにアクセスしたりできます。 これにより、コンプライアンスの問題が発生する可能性があります。 同様に、古い権限をオフのままにすると、一部のユーザーは不要になったリソースにアクセスできます。

多数のロールがある場合、このような危険な許可を手動で見つけることは困難で時間がかかります。 このプロセスを実行するために、クラスター全体をスキャンして危険なアクセス許可を見つけるのに役立つRBACアクセス許可監査ツールがいくつかあります。 RBACの有効性は、定期的な許可監査を必要とする最新のRBACポリシーに依存することを理解することも重要です。
以下は、さまざまな言語とユーザーインターフェイスに基づいてアクセス許可を監査するための最良のRBACツールの一部です。
KubiScan
KubiScanは、Kubernetesクラスターで危険な権限をスキャンするためのPythonベースのRBACツールです。 ツールはマスターノード内で実行する必要があります。その後、ターミナルから直接実行して、危険な権限のリストを提供できます。 Kubiscanを使用して、危険なロール、ClusterRoles、RoleBindings、ClusterBindings、サブジェクト、ポッド、さらにはコンテナを見つけることができます。
クレイン
Krane by Appviaは、RubyベースのKubernetesRBAC静的分析および視覚化ツールです。 CLIとしてローカルで実行することも、CI/CDパイプラインで実行することもできます。 さらに、Kubernetesコンテナ内でスタンドアロンサービスとして機能することもできます。 Kraneは、ファセットツリーおよびグラフネットワークビューを介してRBAC権限を分析する機能を提供します。 また、Slackの統合により、危険な権限についてアラートを出します。

RBACツール
InsightCloudSecによるRBACツールは、Goで構築されたスタンドアロンの権限監査ツールです。 危険なRBAC権限をスキャンして強調表示できるだけでなく、Auditgen機能を介して権限監査からRBACポリシーを生成することもできます。 RBACツールは、RBAC視覚化の機能も提供します。
フェアウィンズ
Fairwinds Insightは、多数のKubernetesセキュリティおよびコンプライアンス機能を提供するスタンドアロンツールです。 そのポリシー適用機能を使用すると、RBAC権限を監査し、標準およびカスタマイズされたポリシーに対してスキャンすることができます。 Fairwindsはオンデマンドデモを提供しています。

パーミッションマネージャー
SighupのPermissionManagerは、JavascriptベースのKubernetes権限管理ツールです。 これは、Kubernetesクラスター内のユーザー権限を管理するための簡単でイニシアチブな方法を提供します。 Permission Managerは、基本的なRBAC権限監査を実行できるツールのエンタープライズエディションも提供します。
結論
Kubernetes RBACは、Kubernetesクラスター内のリソースへのアクセスを管理するための効率的な方法です。 ただし、適切に実装されていない場合、セキュリティとコンプライアンスの問題が発生する可能性があります。 ただし、これは、RBAC監査ツールを使用して権限を継続的に監査することで回避できます。
Kubernetesのベストプラクティスにも興味があるかもしれません。