1. RBAC の概要RBAC では、4 つの新しいトップレベル リソース オブジェクトが導入されています。ロール、ClusterRole、RoleBinding、ClusterRoleBinding。他の API リソース オブジェクトと同様に、ユーザーは kubectl または API 呼び出しを使用してこれらのリソース オブジェクトを操作できます。 Kubernetes クラスターに関連するすべてのやり取りは、apiserver を通じて完了します。このような集中管理型システムの場合、バージョン 1.6 以降、K8S は RBAC アクセス制御ポリシーをデフォルトで有効にします。現在、RBAC は安定した機能となっています。起動ファイル kube-apiserver.service で -authorization-mode=RBAC を設定して RABC を有効にします。 RBAC API では、次の手順で認証が実行されます。
RBAC リソース オブジェクトKubernetes では、RBAC はクラスター リソースへのアクセス許可を管理するための強力なアクセス制御メカニズムです。 RBAC を使用すると、管理者は Kubernetes API のリソースに対してユーザー、ServiceAccounts、またはその他のエンティティが持つ権限を正確に制御できます。 RBAC ロールベースの承認モデルを使用すると、管理者はロールとロール バインディングを定義して、さまざまなユーザーまたはエンティティのアクセス権を制御できます。 RBAC は 4 つの基本概念で構成されています。
3. 役割ロールは権限の集合です。ここでのすべての権限は許可の形式であり、「拒否ルールはありません。」ロールは常に名前空間内のアクセス権限を設定するために使用されます。ロールを作成するときは、そのロールが属する名前空間を指定する必要があります。対照的に、ClusterRole はクラスター スコープのリソースです。 Kubernetes オブジェクトは名前空間スコープまたはクラスター スコープのいずれかであり、両方ではないため、2 つのリソースの名前は異なります (Role と ClusterRole)。 ClusterRole にはいくつかの用途があります。以下の用途に使用できます:
名前空間内でロールを定義する場合は、Role を使用する必要があります。クラスター全体のロールを定義する場合は、ClusterRole を使用する必要があります。 1. 役割の例(1)コマンドで作成 コマンド方法を忘れた場合は、次に示すように、kubectl create role --help を使用してヘルプを表示することもできます。 ヘルプ
(2)リソースリストを使って作成する 以下は、Pod への読み取りアクセスを許可するために使用できる、デフォルトの名前空間内のロールの例です。 2. ClusterRoleの例ClusterRole は、Role が付与できる権限を付与するためにも使用できます。 ClusterRole はクラスター全体にわたるため、次のリソースへのアクセスも許可できます。
たとえば、ClusterRole を使用して、特定のユーザーが kubectl get pods --all-namespaces を実行できるようにすることができます。以下は、特定の名前空間内の Secret への読み取りアクセス、または名前空間間のアクセス (ロールのバインド方法によって異なります) を許可するために使用できる ClusterRole の例です。 コマンドラインの作成: リソース リストの作成: 3. ロールバインディングとクラスターロールバインディングロール バインディングは、ロールで定義された権限を 1 人またはユーザー グループに付与することです。これには、いくつかの「サブジェクト」(ユーザー、グループ、またはサービス アカウント) のリストと、これらのサブジェクトに付与されたロールへの参照が含まれています。 RoleBinding は特定の名前空間で認証を実行しますが、ClusterRoleBinding はクラスター全体で認証を実行します。 RoleBinding は、同じ名前空間内の任意の Role を参照できます。あるいは、RoleBinding は ClusterRole を参照し、その ClusterRole を RoleBinding が存在する名前空間にバインドすることもできます。 ClusterRole をクラスター内のすべての名前空間にバインドする場合は、ClusterRoleBinding を使用する必要があります。 ロールバインディングの例次の例の RoleBinding は、デフォルトの名前空間でユーザー jane に pod-reader Role を付与します。このようにして、ユーザー jane には、デフォルトの名前空間内のすべての Pod を読み取る権限が与えられます。 コマンドラインの作成:
詳細については、ヘルプ ファイル kubectl create rolebinding --help を使用してください。 リソース リストの作成: 4. ClusterRoleBinding の例クラスター全体にアクセス権限を付与するには、ClusterRoleBinding を使用できます。次の ClusterRoleBinding は、マネージャー グループ内のすべてのユーザーが任意の名前空間の Secrets にアクセスできるようにします。 コマンドラインの作成: リソース リストの作成: 5. リソースKubernetes API では、ほとんどのリソースはオブジェクト名の文字列表現を使用して表示およびアクセスされます。たとえば、Pod の場合は pods を使用します。 RBAC は、対応する API エンドポイントの URL に表示されている名前を使用してリソースを参照します。一部の Kubernetes API には、Pod ログなどのサブリソースが含まれます。 Pod ログのリクエストは次のようになります。 ここで、pods は名前空間スコープの Pod リソースに対応し、log は pods のサブリソースです。 RBAC ロールがサブリソースを表す場合、リソースとサブリソースを区切るためにスラッシュ (/) が使用されます。サブジェクトがポッドを読み取り、それらのポッドのログ サブリソースにアクセスできるようにするには、次のように記述します。 一部のリクエストでは、resourceNames リストを介してリソースを名前で参照することもできます。指定すると、リクエストの範囲をリソースの単一インスタンスに限定できます。次の例では、my-configmap という名前の ConfigMap へのアクセスと更新を制限します。 コマンドラインの作成: リソース リストの作成: 6. 主題RoleBinding または ClusterRoleBinding は、ロールを「Subject」にバインドできます。プリンシパルは、グループ、ユーザー、またはサービス アカウントにすることができます。 K8s ユーザーには、通常のユーザーと ServiceAccounts の 2 種類があります。 1. 一般ユーザー通常のユーザーは、外部または独立したサービスによって管理されると想定されます。管理者は秘密鍵を割り当てます。よく使用される kubectl コマンドは、通常、一般ユーザーによって実行されます。ユーザーに権限が必要な場合、ユーザーが使用できるように、ロールがユーザー (またはグループ) にバインドされます (そのためには、ユーザー/グループを作成する必要があります)。 2. サービスアカウントServiceAccount は、Kubernetes API によって管理されるユーザーです。これらは特定の名前空間にバインドされており、API サーバーによって自動的に作成されるか、API 呼び出しによって手動で作成されます。 サービス アカウントは、シークレットとして保存される一連の資格情報に関連付けられており、これらの資格情報は、クラスター プロセスが Kubernetes API と通信できるようにポッドにマウントされます。 (ダッシュボードにログインする際はServiceAccountを使用します) プログラムに権限が必要な場合は、プログラムで使用するためのロールと ServiceAccount を指定します (これには、ServiceAccount を作成し、展開で ServiceAccount を指定する必要があります)。 次の例は RoleBinding からのスニペットであり、subjects 部分のみを示しています。 [email protected] という名前のユーザーの場合: frontend-admins という名前のユーザー グループの場合: 任意の名前空間のサービス アカウントの場合: 7. CKAの実際の質問CKAの実際の質問
この質問は、RBAC 承認モデルに関する理解度をテストします。 RBAC に関する情報については、公式 Web サイトのドキュメントを参照するか、-h help を使用してください。 次のコマンドで確認できます。 次の図は、証明書が正常に作成されたことを示しています。 |
<<: Kubernetes 1.28 スケジューラ OOM の根本原因を探る
>>: K8S を探索するのに最適な選択肢: Killercoda と Play-with-K8s オンライン練習プラットフォーム
クラウド コストの最適化とは、管理が不十分なリソースを特定し、無駄を排除し、より高い割引価格で容量を...
インターネットは最も急速に変化する分野の 1 つです。検索エンジンのアルゴリズムを見ればそれがわかり...
ガートナーによると、世界のパブリッククラウドサービス市場は、2017年の1,535億ドルから2018...
時代の発展に伴い、私たちは変化のスピードに遅れずについていく必要があります。過去 1 年間の Bai...
Doubanは最近コラムチャンネルを立ち上げましたが、有名人のコラムとは異なり、Douban Rea...
文/翔宇デジタル音楽の有料化に関する噂が広く注目され、6月5日までにその噂は広まった。数日前、小米音...
[51CTO.com からのオリジナル記事] AWS は本日、NFL が Next Gen Stat...
intensevps.com はクロアチアの非常に新しい VPS 販売業者で、おそらく個人で運営され...
この記事を書いたとき、私は不安と葛藤を感じました。ここ数年の失敗を記事にまとめて皆さんと共有しようか...
6月28日から、Baiduは正式に活動を開始しており、それに伴いユーザーエクスペリエンスの重要性が高...
現在、多くの中小企業や新興企業が大企業のマーケティング手法を真似しています。大企業がそうしているのを...
経験豊富なマイクロサービス システム アーキテクトとして、私はよく「RabbitMQ と Kafka...
新しいドメイン名を登録するときは、それが K-ed されているかどうか、特に Google または ...
Liquidweb はブランドとして大きすぎるのでしょうか、それとも価格が高すぎるのでしょうか?主な...
長年にわたり、増え続けるデータに直面し、IT マネージャーはデータ管理のコストと複雑さを圧縮し、最小...