この記事では、Kubernetes RBAC 認証モデルを最初から再作成する方法と、Roles、ClusterRoles、ServiceAccounts、RoleBindings、および ClusterRoleBindings 間の関係を理解する方法について説明します。 クラスター内のアプリケーションとリソースの数が増えると、危険な操作を回避するために、関連する権限を確認して制限する必要がある場合があります。これらの危険な操作は、多くの場合、本番環境に重大な影響を及ぼし、過剰な権限によって正常に実行されているサービスが削除されるなど、長期的なダウンタイムを引き起こすこともあります。 通常、運用システムを制限して、少数のユーザーのみが管理およびアクセスできるようにする必要があります。 あるいは、クラスターにデプロイされたメンテナーに限定された権限セットを付与することもできます。 上記の要件は、Kubernetes のロールベース アクセス制御 (RBAC) を通じて実現できます。 Kubernetes APIRBAC について説明する前に、認可モデルがどこに当てはまるかを見てみましょう。 次の Pod を Kubernetes クラスターにデプロイするとします。 APIバージョン: v1 次のコマンドを使用して、Pod をクラスターにデプロイできます。 $ kubectl apply -f ポッド.yaml kubectl apply を入力すると、次の操作がトリガーされます。 kubectl は次のことを行います。 1. KUBECONFIG から構成を読み取ります。 2. API と API からのオブジェクトを検出します。 3. リソース クライアントを検証します (明らかなエラーはありますか?)。 4. ペイロードを含むリクエストを kube-apiserver に送信します。 kube-apiserver はリクエストを受信しても、それをすぐに etcd に保存しません。 まず、リクエスト者が正当であることを確認する必要があります。 つまり、リクエストを認証する必要があります。 (https://kubernetes.io/docs/reference/access-authn-authz/authentication/)。 認証されると、リクエスト者はリソースを作成する権限を持ちますか? ID と権限は同じものではありません。 クラスターにアクセスできるからといって、すべてのリソースを作成したり読み取ったりできるわけではありません。 承認は通常、ロールベースのアクセス制御 (RBAC) (https://kubernetes.io/docs/reference/access-authn-authz/rbac/) を使用して行われます。 ロールベースのアクセス制御 (RBAC) を使用すると、きめ細かい権限を割り当て、ユーザーまたはアプリケーションが実行できるアクションを制限できます。 より現実的なシナリオでは、API サーバーは次の操作を順番に実行します。 1. リクエストを受信したら、ユーザーを認証します。
2. ユーザーは認証されていますが、リソースにアクセスできますか?
この記事では、認可の部分に焦点を当てます。 RBAC ロールからユーザーと権限を切り離すRBAC (ロールベース アクセス制御) とは、ロールベースの権限制御を意味します。ロールをユーザーに関連付け、ロールを権限に関連付けることで、ユーザーに間接的に権限が付与されます。以下のように表示されます。 ロールを追加するのではなく、ユーザーに権限を割り当てるだけではダメなのかと疑問に思う人もいるかもしれません。 実際、ユーザーに権限を直接割り当てることは可能ですが、ユーザーに権限を直接割り当てると関係のレイヤーが欠如し、スケーラビリティが大幅に低下します。ユーザー数とロール タイプが少ないプラットフォームにのみ適しています。 たとえば、一般的なシステムでは、同じ権限を持つ複数のユーザーが存在する場合、割り当て時にこれらのユーザーに同じ権限を個別に割り当て、変更時にこれらのユーザーの権限を 1 つずつ変更する必要があります。ロールを作成したら、ロールの権限を定義し、同じ権限を持つユーザーを同じロールに割り当てるだけで、権限管理が容易になります。 バッチユーザー権限調整の場合は、ユーザーに関連付けられているロール権限を調整するだけで済みます。ユーザーごとに権限を調整する必要はありません。これにより、権限調整の効率が大幅に向上し、権限が欠落する可能性が低減します。 これがどのように機能するかを理解するために、認証システムをゼロから設計する必要があると想像してみましょう。ユーザーが特定のリソースへの書き込みアクセス権を持っていることをどのように確認すればよいでしょうか? 単純な実装では、次のようなリストを記述することになります。 | ユーザー| 許可| リソース| この例では、
上記の表は、ユーザー数とリソース数が少ない場合には適していますが、スケーリングを開始すると、いくつかの制限が現れます。 Mo と Alice が同じチームに所属しており、app1 への読み取りアクセス権が付与されていると仮定します。 次のエントリをテーブルに追加する必要があります。 | ユーザー| 許可| リソース| これは素晴らしいことですが、Alice と Mo は同じチームのメンバーであるため、同じアクセス権を持っているかどうかは明らかではありません。
テーブルに「チーム」列を追加することでこれを修正できますが、より良い代替案は関係を分解することです。
これがどのような違いをもたらすか見てみましょう。これで、2 つの権限マッピング テーブルが作成されました。
| 役割| 許可| リソース| Mo を app1 の管理者にしたい場合はどうすればよいでしょうか? 次のようにしてユーザーにロールを追加できます。 | ユーザー| 役割| ユーザーと権限をロールから分離すると、多数のユーザーと権限を持つ大規模な組織でのセキュリティ管理が容易になることは、すでに想像できます。
Kubernetes の RBACKubernetes は、クラスター内のリソースを保護するために、RBAC モデル (およびその他のモデル) (https://kubernetes.io/docs/reference/access-authn-authz/authorization/#authorization-modules) を実装します。 ロールベースのアクセス制御 (RBAC) は、組織内のユーザーの役割に基づいてコンピューターまたはネットワーク リソースへのアクセスを制御する方法です。 RBAC 認証メカニズムは、rbac.authorization.k8s.io API グループを使用して認証決定を実行し、Kubernetes API を通じてポリシーを動的に構成できるようにします。 RBAC を有効にするには、--authorization-mode パラメータをコンマ区切りのリストに設定して API サーバーを起動し、RBAC が含まれていることを確認します。 kube-apiserver --authorization-mode = 例、 RBAC -- <その他のオプション> -- <その他のオプション> したがって、Kubernetes は、前に説明したのと同じ 3 つの概念、つまり ID、ロール、バインディングを使用します。 ただ、少しだけ違う名前で呼ばれているだけです。 たとえば、Pod やサービスなどのリソースへのアクセスを許可するために必要な次の YAML 定義を調べてみましょう。 APIバージョン: v1 この文書は 3 つの部分に分かれています。
構成がクラスターにコミットされると、サービス アカウントを使用するアプリケーションは次のエンドポイントにリクエストを送信できるようになります。 # 1. Kubernetes 組み込みリソース 結果は成功しましたが、多くの詳細を見落としていました。 どのようなリソースへのアクセスを許可しますか? サービス アカウントとは何ですか?アイデンティティはクラスター内の単なる「ユーザー」ではないのですか? Role に Kubernetes オブジェクトのリストが含まれているのはなぜですか? これらがどのように機能するかを理解するために、Kubernetes RBAC モデルを破棄して、ゼロから再構築してみましょう。 私たちは次の 3 つの要素に焦点を当てます。
ID の割り当て: ユーザー、グループ、ロボット アカウント新しい同僚が Kubernetes インターフェースにログインしたいとします。 この場合、「アカウント」または「ユーザー」というエンティティがあり、それぞれに一意の名前または ID (電子メール アドレスなど) が付けられている必要があります。 クラスターにユーザーをどのように保存すればよいでしょうか? Kubernetes には、通常のユーザー アカウントを表すオブジェクトはありません。 API 呼び出しを通じてクラスターにユーザーを追加する方法はありません。 代わりに、クラスターの証明機関 (CA) によって署名された有効な証明書を提示する参加者は、認証済みとみなされます。 (https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#normal-user)。
一時的なユーザー情報オブジェクトを作成し、それを認証 (RBAC) モジュールに渡します。 コードをさらに深く掘り下げていくと、認証モジュールから収集されたすべての詳細をマッピングする構造が見つかります。 タイプUser 構造体{ ユーザーはクラスター外のユーザーまたはアプリケーションに使用されることに注意してください。 クラスター内のアプリケーションを識別する場合は、代わりにサービス アカウントを使用する必要があります。 このアカウントは通常のユーザーと非常に似ていますが、Kubernetes が管理するという点が異なります。 サービス アカウントは通常、権限を付与するためにポッドに割り当てられます。 たとえば、次のアプリケーションがクラスター内からリソースにアクセスできるようになります。
これらのアプリケーションでは、ServiceAccount (SA) を定義できます。 サービス アカウントはクラスター内で管理されるため、YAML を使用して作成できます。 APIバージョン: v1 Kubernetes の管理を容易にするために、User または ServiceAccount のセットを定義することもできます。 この方法では、特定の名前空間内のすべての ServiceAccounts を簡単に参照できます。 リソースにアクセスする方法を定義したので、次は権限について説明します。 この時点で、リソースにアクセスできるユーザーを決定するメカニズムができました。 それは個人、ボット アカウント、または人々のグループである可能性があります。 しかし、クラスター内のどのリソースにアクセスするのでしょうか? リソースへのアクセスのモデリングKubernetes では、ポッド、サービス、エンドポイントなどのリソースへのアクセスを制御することに興味があります。 これらのリソースは通常、データベース (etcd) に保存され、次のような組み込み API を介してアクセスされます。 / api / v1 / 名前空間/{ 名前空間}/ ポッド/{ 名前} これらのリソースへのアクセスを制限する最善の方法は、これらの API エンドポイントへのリクエストの送信方法を制御することです。 これを行うには、次の 2 つが必要です。
権限については、get、list、create、patch、delete などの動詞を使用します。 Pod、ログ、サービスなどのリソースを取得、一覧表示、監視したいとします。 次のように、これらのリソースと権限を 1 つのリストに組み合わせることができます。 リソース: 以下の情報に基づいて、上記の定義を簡略化できます。
最終的には次のように簡略化できます。 リソース: この定義はよりユーザーフレンドリーであり、関連する権限情報を明確に理解できます。 ただし、権限の構成は上記だけではありません。 Kubernetes は、ポッド、エンドポイント、サービスなどの組み込みオブジェクトの API に加えて、API 拡張もサポートしています。 たとえば、 を使用して Cilium CNI をインストールする場合、スクリプトは CiliumEndpoint カスタム リソース (CR) を作成します。 apiバージョン: apiextensions .k8s .io / v1 これらのオブジェクトはクラスターに保存され、kubectl 経由で利用できます。 $ kubectl get ciliumendpoints .cilium .io - n デモ名前空間 カスタム リソースには、Kubernetes API を介して同様にアクセスできます。 /apis/cilium.io/v2/namespaces/{namespace}/ciliumendpoints YAML ファイルでマッピングする場合は、次のように記述します。 リソース: しかし、Kubernetes はリソースがカスタマイズされていることをどのようにして知るのでしょうか? カスタム リソースと組み込み API の使用をどのように区別しますか? 残念ながら、API エンドポイントから URL を削除するのは良い考えではありません。 少し変更するだけで復元できます。 これを先頭で定義し、後でリソースの URL を拡張するために使用できます。 apiグループ: 名前空間 API を持たない POD などのリソースについてはどうでしょうか? Kubernetes の「空の API グループ」は、組み込みオブジェクトを参照する特別なグループです。したがって、以前の定義は次のように拡張する必要があります。 apiグループ: Kubernetes は API グループを読み取り、自動的に次のように拡張します。
リソースと権限をマッピングする方法がわかったので、次は複数のリソースへのアクセスをグループ化します。 Kubernetes では、リソースと動詞のコレクションはルールと呼ばれ、ルールをリストにグループ化できます。 ルール: 各ルールには、上で説明した apiGroup、リソース、および動詞が含まれています。 ルール: # 承認ルール Kubernetes では、ルールのコレクションにはロールと呼ばれる特定の名前が付けられています。 apiバージョン: rbac .authorization .k8s .io / v1 これまでに、次のことを定義しました。
ついに、両者をつなぐ欠けているピースが見つかりました。 ユーザーに権限を付与するRoleBinding は、ロールで定義された権限をユーザー、サービス アカウント、またはグループに付与します。例を見てみましょう: apiバージョン: rbac .authorization .k8s .io / v1 この定義には 2 つの重要なフィールドがあります。
リソースがクラスターに送信されると、サービス アカウントを使用するアプリケーションまたはユーザーは、ロールにリストされているリソースにアクセスできるようになります。 バインディングを削除すると、アプリケーションまたはユーザーはそれらのリソースにアクセスできなくなります (ただし、ロールは常に他のバインディングで使用できる状態になります)。 主題フィールドは、種類、名前空間、名前を含むリストであることに注意してください。 サービス アカウントおよびグループからユーザーを識別するには、kind 属性が必要です。 しかし、名前空間はどうでしょうか? 多くの場合、クラスターを名前空間に分割し、名前空間リソースへのアクセスを特定のアカウントに制限すると役立ちます。 ほとんどの場合、Roles と RoleBindings は名前空間に関連付けられ、特定の名前空間へのアクセスを許可します。 ただし、2 つのリソースを混在させることもできます。その方法については後で説明します。 理論を終えて実践を始める前に、いくつかの科目の例を見てみましょう。 科目: 複数のグループ、ユーザー、またはサービス アカウントをサブジェクトとして含めることもできます。 科目: これまで学んだことを要約して、アプリケーションにいくつかのカスタム リソースへのアクセスを許可する方法を見てみましょう。 まず、シナリオを紹介しましょう。Cilium によって公開されるリソースにアクセスする必要があるアプリケーションがあります。
これらのリソースへのアクセスを許可するにはどうすればよいですか? サービス アカウント、ロール、ロール バインディングを使用します。
名前空間とクラスター全体のリソースリソースについて説明したとき、エンドポイントの構造は次のようになることを学習しました。 / api / v1 / 名前空間/{ 名前空間}/ ポッド/{ 名前} しかし、永続ボリュームやノードなど、名前空間のないリソースはどうでしょうか? 名前空間リソースは名前空間内でのみ作成でき、名前空間の名前は HTTP パスに含まれます。 リソースがノードなどのグローバルである場合、名前空間名は HTTP パスに表示されません。 / api / v1 / ノード/{ 名前} それらをキャラクターに追加できますか? はい、追加できます。 結局のところ、Roles と RoleBindings を導入したとき、名前空間の制限については何も説明しませんでした。 次に例を示します。 apiバージョン: rbac .authorization .k8s .io / v1 ただし、その構成をコミットしてサービス アカウントに関連付けようとすると、機能しないことに気付くかもしれません。 PersistentVolume と Node はクラスター スコープのリソースです。 ただし、ロールは名前空間スコープでリソースへのアクセスを許可できます。 クラスター全体に適用されるロールを使用する場合は、ClusterRole (および対応する ClusterRoleBinding を使用してサブジェクトを割り当てる) を使用できます。 以前の構成を次のように変更する必要があります。 apiバージョン: rbac .authorization .k8s .io / v1 唯一の変更点は kind プロパティであり、その他はすべて同じままであることに注意してください。 ClusterRoles を使用すると、クラスター内のすべての Pod など、すべてのリソースに権限を付与できます。 この機能は、クラスター スコープのリソースに限定されません。 Kubernetes にはすでに多数のロールとクラスター ロールが付属しています。 見てみましょう。 $ kubectl ロールを取得- n kube-system | grep "^system:" system: プレフィックスは、リソースがクラスター コントロール プレーンによって直接管理されることを示します。 さらに、すべてのデフォルトの ClusterRole と ClusterRoleBinding には、kubernetes.io/bootstrapping=rbac-defaults がマークされています。 ClusterRoles もリストしてみましょう。 kubectlでクラスターロールを取得します- n kube-system | grep "^system:" 次のコマンドを使用して、各 Role と ClusterRole の詳細を確認できます。 $ kubectl get role < ロール> -n kube - system -o yaml これまで、Kubernetes RBAC の基礎を学習しました。 上記の内容を通じて、次のことがわかりました。
最後に、RBAC の珍しいエッジケースをいくつか見てみましょう。 ロール、ロールバインディング、クラスターロール、クラスターバインディングを理解する大まかに言えば、Roles と RoleBindings はクラスター内部にあり、特定の名前空間へのアクセスを許可しますが、ClusterRoles と ClusterRoleBinding は名前空間に依存せず、クラスター全体へのアクセスを許可します。 ただし、これら 2 種類のリソースを組み合わせて使用することも可能です。 たとえば、RoleBinding がアカウントを ClusterRole に関連付けると何が起こりますか? この質問を練習を通して探ってみましょう。 minikube を使用してローカル クラスターを作成しましょう。 $ ミニキューブを起動 まず、4 つの名前空間を作成します。 $ kubectl 名前空間テストを作成します 最後に、名前空間にサービス アカウント テストを作成します。 APIバージョン: v1 リソースは以下の方法で送信できます。 $ kubectl apply -f サービス-account .yaml この時点で、クラスターは次のようになります。 シナリオ 1: Role と RoleBinding が同じ名前空間にあるまず、サービス アカウントにテスト名前空間へのアクセスを許可する Role と RoleBinding を作成します。 種類: 役割 構成は次の方法で送信できます。 $ kubectl apply -f シナリオ1 .yaml クラスターは次のようになります。 すべてのリソース (サービス アカウント、ロール、および RoleBinding) は名前空間内にあります。 ロールはすべてのリソースへのアクセスを許可し、RoleBinding はサービス アカウントをロールに関連付けます。 サービス アカウントがリソースにアクセスできるかどうかをテストするにはどうすればよいですか? kubectl の 2 つの機能を組み合わせることができます。 1. ユーザー偽装アクセスには kubectl --as=jenkins を使用します (https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation)。 2. kubectl auth can-i を使用して API アクセスを確認します (https://kubernetes.io/docs/reference/access-authn-authz/authorization/#checking-api-access)。
myaccount サービス アカウントとしてリクエストを行い、名前空間内の Pod を一覧表示できることを確認するには、次のコマンドを使用します。 $ kubectl auth can-i get pods -n test --as = system : serviceaccount : test : myaccount コマンドを分解してみましょう:
--as= フラグでは、サービス アカウントを識別するためにいくつかの追加のヒントが必要であることに注意してください。セクション全体は次のように分類できます。 --as=system:serviceaccount:{名前空間}:{サービスアカウント名} この Role+ServiceAccount+RoleBindings の組み合わせを通じて、テスト名前空間内のすべてのリソースにアクセスできます。 より複雑な例に移りましょう。 シナリオ 2: 異なる名前空間の Roles と RoleBindings名前空間 test2 に新しい Role と RoleBinding を作成しましょう。 RoleBinding が test2 のロールと test のサービス アカウントをどのように関連付けるかに注目してください。 種類: 役割 リソースは以下の方法で送信できます。 $ kubectl apply -f シナリオ2 .yaml クラスターは次のようになります。 test のサービス アカウントが test2 のリソースにアクセスできるかどうかをテストしてみましょう。 $ kubectl auth can-i get pods - n test2 --as = system : serviceaccount : test : myaccount サービス アカウントに、それが作成された名前空間外のリソースへのアクセスを許可しました。 RoleBinding の roleRef(https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#roleref-v1-rbac-authorization-k8s-io) 属性には名前空間フィールドがないことに注意してください。 種類: RoleBinding つまり、RoleBinding は同じ名前空間内の Role のみを参照できます。 シナリオ 3: ClusterRole を RoleBinding と共に使用する前述したように、ClusterRoles は名前空間に属しません。 つまり、ClusterRole は権限の範囲を単一の名前空間に限定しません。 ただし、ClusterRole が RoleBinding を介してサービス アカウントに関連付けられている場合、ClusterRole の権限は RoleBinding が作成された名前空間にのみ適用されます。 例を見てみましょう。 名前空間に RoleBindingtest3 を作成し、サービス アカウントを ClusterRole cluster-admin に関連付けます。
種類: RoleBinding リソースは以下の方法で送信できます。 $ kubectl apply -f シナリオ3 .yaml クラスターは次のようになります。 test にあるサービス アカウントが test3 のリソースにアクセスできるかどうかをテストしてみましょう。 $ kubectl auth can-i get pods - n test3 --as = system : serviceaccount : test : myaccount ただし、他の名前空間にはアクセスできません。 $ kubectl auth can-i get pods - n test4 --as = system : serviceaccount : test : myaccount この場合、RoleBindings を使用してサービス アカウントを ClusterRole に関連付けると、ClusterRole は通常のロールと同じように動作します。 RoleBinding が存在する現在の名前空間にのみ権限を付与します。 シナリオ 4: ClusterRole と ClusterRoleBinding を使用してクラスター全体のアクセス権限を付与する最後のシナリオでは、ClusterRole をサービス アカウントに関連付ける ClusterRoleBinding を作成します。 apiバージョン: rbac .authorization .k8s .io / v1 roleRef には namespace フィールドがないことに注意してください。 つまり、ロールは名前空間に属し、ClusterRoleBinding (およびそれらが参照する ClusterRolnamespace) には名前空間があるため、ClusterRoleBinding は関連付けるロールを識別できません。 リソースは以下の方法で送信できます。 $ kubectl apply -f シナリオ3 .yaml クラスターは次のようになります。 ClusterRole も ClusterRole も名前空間を定義していませんが、サービス アカウントはすべてにアクセスできるようになりました。 $ kubectl auth can-i get pods - n test4 --as = system : serviceaccount : test : myaccount これらの例から、RBAC リソースのいくつかの動作と制限を確認できます。
おそらく、ここで最も興味深い意味は、RoleBinding によって参照される場合、ClusterRole は単一の名前空間で表現される共通の権限を定義できるということです。この方法では、名前空間内に重複したロールを持つ必要がなくなります。 ボーナス#1:RBACポリシーをより簡潔にするRole または ClusterRole の一般的なルール セクションは次のようになります。 ルール: ただし、上記の構成は次の形式を使用して書き換えることができます。 -apiグループ: [ '' ] このアプローチにより、行数が大幅に削減され、より簡潔になります。 ただし、データベースからコンテンツを取得する場合、Kubernetes は引き続きコンテンツを YAML リストとして管理します。 したがって、Role を取得するたびに、配列はリストにレンダリングされます。 $ kubectlはポッドリーダーを取得します-o yaml ボーナス#2:サービスアカウントを使用したKubernetesアカウントの作成サービスアカウントは通常、APIサーバーによって自動的に作成され、クラスターで実行されているポッドに関連付けられます。 3つの別々のコンポーネントがこのタスクを達成します。
サービスアカウントをクラスターの外側で使用して、ユーザーのアイデンティティを作成したり、Kubernetes APIと話をしたりしたい長年のジョブを作成できます。 サービスアカウントを手動で作成するには、次のコマンドを使用できます。 $ kubectl create serviceaccount demo-sa Secrets ServiceアカウントYAML定義の最後にあるフィールドに気付くかもしれません。 それは何ですか? サービスアカウントを作成するたびに、Kubernetesは秘密を作成します。 秘密は、サービスアカウントのトークンを保持しており、これをKubernetes APIと呼ぶために使用できます。 また、APIサーバー用のパブリック認証局(CA)も含まれています。 $ kubectl get Secret demo-sa-token-hrfq2 - o yaml トークンは署名されたJWTであり、Kube-Apiserverサービスに対して認証するためにベアラートークンとして使用できます。通常、これらの秘密はポッドに取り付けられ、APIサービスへのアクセスに使用されますが、クラスターの外側から使用できます。 ボーナス#3:kubernetesデフォルトの役割いくつかの役割は、kubernetesに組み込まれたデフォルトの役割であり、それらを変更する必要はありません。 デフォルトの役割:
コアコンポーネントの役割: (https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#core-componentロール)。
その他のコンポーネントの役割: (https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#other-componentロール)。
組み込みコントローラーの役割: (https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#controller-ロール)。 Kubernetesコントローラーマネージャー内蔵のKubernetesコントロールプレーンを実行するコントローラー。 -Use-Service-Account-Credentialsパラメーターの使用を開始すると、Kube-Controller-Managerは個別のサービスアカウントを使用して各コントローラーを開始します。各組み込みコントローラーには、システムが付いた対応する役割があります:コントローラー:。 Control Managerが起動するときに使用されている-Service-Account-Credentialsが設定されていない場合、独自のID資格情報を使用してすべてのコントローラーを実行し、そのIDはすべての関連する役割に付与されなければなりません。これらの役割には以下が含まれます。
追加#4:許可のアップグレードの初期化と防止RBAC APIは、ロールまたはロールバインディングを編集することにより、ユーザーがアクセス許可を高めることを防ぎます。これはAPIレベルで実装されているため、RBAC認証コンポーネントが有効になっていない場合でも適切に機能します。 役割の作成または更新に関する制限(https://kubernetes.io/zh/docs/reference/access-authn-authz/RBAC/#%E5%AFA2%AFA8%A7%9 2%E8%89%B2%E5%88%9B%E5%BB%BA%E6%88%96%E6%9B%B4%E6%96%B0%E7%9a%84%E9%99%90%E5%88%B6)。 次の条件のいずれかが満たされている場合にのみ、役割を作成/更新できます。
たとえば、ユーザー1がクラスター内のすべての秘密の許可を列挙していない場合、その許可を含むクラスターロールを作成することはできません。ユーザーが役割を作成/更新できるようにするには: 1.必要に応じて役割を与え、必要に応じて役割またはクラスターロールオブジェクトを作成/更新できるようにします。 2。作成/更新の役割に特別な権限を含めるための権限を付与します。
キャラクターのバインディングの作成または更新の制限(https://kubernetes.io/zh/docs/reference/access-authn-authz/RBAC/#%E5%AFAFAFAB9%E8%A7%92%E8%89%B 2%E7%BB%91%E5%AE%9a%E5%88%9B%E5%BB%BA%E6%88%96%E6%9B%B4%E6%96%B0%E7%9a%84%E9%99%90%E5%88%B6)。 参照される役割に含まれるすべてのアクセス許可が既にある場合、または参照されるロールでバインド動詞を実行する権限がある場合にのみ、ロールバインディングを作成または更新できます。ここでの権限は、役割結合と同じ範囲です。たとえば、ユーザーユーザー1にクラスタースコープ内のすべての秘密を列挙する機能がない場合、許可を付与するためにクラスターロールバインディング参照が参照する役割を作成することはできません。ユーザーがロールバインディングを作成または更新できるようにするには: 1.必要に応じて、ロールバインディングまたはクラスターロールバインディングオブジェクトを作成または更新できるように、役割を提供します。 2.特定の役割をバインドするために必要な権限を許可します。
たとえば、次のクラスターロールとロールバインディングを使用すると、ユーザー1が名前空間ユーザー1名の役割を他のユーザーに割り当て、編集、および表示することができます。 apiバージョン: rbac .authorization .k8s .io / v1 最初の役割と役割のバインディングを起動する場合、最初のユーザーにまだ持っていない権限が付与される必要があります。初期の役割と役割の結合を初期化するときは、次のことが必要です。
まとめKubernetesのRBACは、特定のユーザーまたはユーザーグループがクラスターまたは特定のクラスター名空間のKubernetesオブジェクトと対話する方法を定義するファイン粒子の特定のアクセス許可セットを構成できるメカニズムです。この記事では、次のことを学びました。
参照:https://cloud.google.com/kubernetes-engine/docs/how-to/role based-access-contol?hl=zh-cn。 https://zh.m.wikipedia.org/zh/%E4%A5%A5%E8%A7%92%E8%89%B2%E7%82%ABA%E5%9FA%E7%A4%8E%E7%9A%84%E5%AD%AD%98%8%8EA28EA5 %8%8Eです。 |
<<: クラウドネイティブアプリケーションリンク分析の実践を学習しましたか?
edgenat は比較的活発な VPS マーチャントであり、主に米国ロサンゼルス (cn2 gia、...
企業の SEO 担当者は毎日何をしなければならないのでしょうか? Nanning Aiwen Net...
徐州整形外科ネットワークは運営開始から3年が経ちましたが、6月28日の大幅な降格後、トラフィックはほ...
前回の記事で、NiuShang.com は「マーケティング ウェブサイトのキーワード選択戦略」につい...
老舗ドメイン名販売業者のdomain.comがプロモーションを実施しています。すべてのドメイン名が3...
周知のとおり、現在、オンライン マーケティングにおける同質競争は非常に熾烈です。SEO 担当者を含む...
著者 |ジェユ、バオティアオクラウド データベースは、コンピューティングとストレージを分離し、コンピ...
最近、検索業界は非常に活発です。最近の話題を見ると、Green Radish アルゴリズムと Ali...
背景クラウドネイティブ時代において、国内外の多くのクラウドベンダーが強力な技術的配当をリリースしてい...
中国には数百万のウェブサイトがあり、そのほとんどは一般的な CMS システムに基づいて開発されていま...
Amazon Web Services China Summit 2024 は、5 月 29 日から...
現在、エンタープライズレベルのマルチクラウド戦略の割合が増加しています。最近、Akamai の「ワー...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です前回の記事では、SEOの定義を紹...
ウェブサイト最適化の核となるのはウェブサイトです。適切な方法を使用することで、検索エンジンのホームペ...
kosscloudは中国人が運営する新興企業です。現在の業務は日本IIJ回線のVPSです。ネイティブ...