kubernetes戦闘(二十から九):Kubernetes RBACは、異なる名前空間の異なるユーザに異なる権限を達成

1、基本的な説明

 

  後でK8Sを使用して、本番環境では、ほとんどのアプリケーションは、メンテナンスコストを削減するだけでなく、簡素化アプリケーションの展開は、多くの費用がかかるが、それはまた、多くの問題をもたらします。だけでなく、高可用性を実現しています 例えば、開発者は、そのアプリケーションの状態、接続情報を確認するログ、コマンドを実行することをお勧めします。

  ビジネスアプリケーションで使用K8S、ポッドユニット後、サーバの前単位とは異なり、直接サーバに操作​​ログに関連し得ます。K8Sビジネスアプリケーションの展開を使用する場合は、あなたが、ログを表示するコマンドなどの基本的な操作を実行しますが、運用、保守要員として、操作、または自分自身の範囲外ポッドの発展を見たくない、我々はRBACを使用しなければならないことができますが、正式なダッシュボードをK8S権限設定を関連します。

  主に二つの問題についてこの記事:

    • ダッシュボードで使用するユーザー名パスワードログイン
    • アクセス権がユーザ設定ログインし、唯一のポッドの独自の名前空間の動作を実現することができます、あなたは他の不正な名前空間の中に入ることができません

 

2、認証ダッシュボードを変更

 

  ダッシュボードのログを開発・運用・保守要員を容易にするために、ダッシュボードには、ログインユーザー名とパスワードによる認証(ユーザー名およびパスワードトークンが同時にオンすることができます)にする必要があります。

  kubectl編集は、変更を行うために使用することができます--authenticationモードのRatelのkubernetes-ダッシュボードの展開は、基本的に変更することができ、Ratelがインストールされていない使用し、変更が自動的に再起動し、完全な意志です。

 

  設定KUBE-apiserverを変更した後--basic-AUTH-ファイル=は/ etc / kubernetes / basic_auth_fileを追加

  次の形式でbasic_auth_fileファイルストレージアカウントのパスワード:

xxx1_2019、XXX1、3" システム認証" 
xxx2_2019、XXX2、4" システム認証" 
xxx3_2019、xxx3、5" システム認証" 
xxx4_2019、xxx4、6" システム認証"

  認証、需要の変化に:グループが設定システムとなりましたので、以下は、ログインしているユーザーのために認可されるように、パスワード、ユーザー名、ID番号、ユーザーグループが続きます。

 

3、既定のアクセス許可を追加

 

  まず、システムを構成:認証グループは、クエリの名前空間のリストを(指定した名前空間へのエントリーは、クラスタのリストの名前空間にできる必要があるため)ことができます:

apiVersion:rbac.authorization.k8s.io/のV1の
種類:ClusterRole 
メタデータ:
  注釈:
    rbac.authorization.kubernetes.io /自動更新:" " 
  のラベル:
    kubernetes.io /ブートストラップ:rbac- デフォルトは
    rbac.authorization.k8s.io /集計・ツー・編集:
  名:ratel -namespace- 読み取り専用
ルール:
 - apiGroups:
   - 「」
  リソース:
   - 名前空間の
  動詞:
   - 取得
   - リスト
   - 腕時計
- apiGroups:
   - metrics.k8s.io 
  リソース:
   - ポッドの
  動詞:
   - 取得
   - リスト
   - 腕時計
 --- 
apiVersion:rbac.authorization.k8s.io / v1の
種類:ClusterRoleBinding 
メタデータ:
  名前:ratel -namespace- 読み取り専用
roleRef:
  apiGroup :rbac.authorization.k8s.io 
  種類:ClusterRoleの
  名前:ratel -namespace- 読み取り専用
科目:
 - apiGroup:rbac.authorization.k8s.io 
  種類:グループ
  名:システム:認証

 

  ビューの名前空間のリソースのアクセス権を作成します。

apiVersion:rbac.authorization.k8s.io/のV1の
種類:ClusterRoleの
メタデータ:
  名前:ratel -resource- 読み取り専用
ルール:
 - apiGroups:
   - "" 
  リソース:
   - configmaps
   - エンドポイント
   - persistentvolumeclaims
   - ポッド
   - replicationcontrollers
   - replicationcontrollers / スケール
   - serviceaccounts
   - サービスの
  動詞:
   - 取得
   - リスト
   - 腕時計
 - apiGroupsを:
   -"" 
  リソース:
   - バインディング
   - イベント
   - limitranges
   -名前空間/ ステータス
   -ポッド/ ログ
   -ポッド/ ステータス
   - replicationcontrollers / ステータス
   - resourcequotas
   - resourcequotas / ステータス
  動詞:
   - GET
   - 一覧
   - 腕時計
 - apiGroups:
   - "" 
  リソース:
   - 名前空間
  動詞:
   - 取得
   - リスト
   - 時計を
 -apiGroups:
   - アプリの
  リソース:
   - controllerrevisions
   - daemonsets
   - 展開
   -展開/ スケール
   - replicasets
   - replicasets / スケール
   - statefulsets
   - statefulsets / スケールの
  動詞:
   - 取得
   - リスト
   - 腕時計
 - apiGroups:
   - 自動スケーリング
  資源を:
   - horizo​​ntalpodautoscalersの
  動詞は:
   - 取得します
   - リスト
   - 腕時計
- apiGroups:
   - バッチ
  資源:
   - cronジョブ
   - ジョブの
  動詞:
   - 取得
   - リスト
   - 腕時計
 - apiGroups:
   - 拡張
  リソース:
   - daemonsets
   - 展開
   -展開/ スケール
   - ingresses
   - networkpolicies
   - replicasets
   - replicasets / スケール
   - replicationcontrollers / スケールの
  動詞:
   - 取得
   - リスト
  - 腕時計
 - apiGroups:
   - 政策
  資源:
   - poddisruptionbudgetsの
  動詞:
   - 取得
   - リスト
   - 腕時計
 - apiGroups:
   - networking.k8s.io 
  リソース:
   - networkpoliciesの
  動詞:
   - GET
   - 一覧
   - 腕時計
 - apiGroups:
   - metrics.k8s.ioの
  リソース:
   - ポッドの
  動詞:
   - 取得
   - リスト
   -腕時計

 

  ポッドは、実行権限を作成します

apiVersion:rbac.authorization.k8s.io/のV1の
種類:ClusterRoleの
メタデータ:
  名前:ratel -pod- のexec 
ルール:
 - apiGroups:
   - "" 
  リソース:
   - ポッド
   -ポッド/ ログ
  動詞:
   - 取得
   - リスト
 - apiGroups:
   - " 「
  リソース:
   -ポッド/ execの
  動詞:
   -作成

 

  ポッド削除の権限を作成します

apiVersion:rbac.authorization.k8s.io/のV1の
種類:ClusterRoleの
メタデータ:
  名前:ratel -pod- 削除
ルール:
 - apiGroups:
   - "" 
  リソース:
   - ポッドの
  動詞:
   - GET
   - 一覧
   -削除

 

  権限が作成された後、対応する利用者を拘束する権限、別のユーザーが別の名前空間に異なるアクセス許可を達成実装するだけで必要性に対応します。

  参照することが不慣れなRBAC https://www.cnblogs.com/dukuan/p/9948063.htmlを

  または参考書第II章では、「ピット上もはやステップは、実用的なガイドをKubernetes。」

 

4、アクセス許可を構成します

  

  例:、リソースのデフォルトの名前空間への必要性へのアクセスをjava7という名前のユーザーを想定、あなたはコマンドを実行し、コンテナ内のログを表示することができます

  権限を追加する前にすべての情報を表示することはできません。

 

 

  アクセス許可を構成します:

    方法1:使用Ratelキー設定、対応するクラスタを選択し、名前空間、ユーザー名は、権限を確認するために作成]をクリックします。 

 

     あなたが再び成功したログを作成したら、名前空間の情報を表示することができます

 

    ログの表示:

 

 

     コマンドを実行します。

 

 

 

    しかし、また、他の名前空間のリソースを表示することはできません

    

    第二の方法:設定ファイルを使用してYAML

    使用Ratel进行权限配置,在配置权限后在对应的namespace下创建对应的RoleBinding,如下:

[root@k8s-master01 ~]# kubectl get rolebinding 
NAME                            AGE
gitlab                          112d
ratel-pod-delete-java7          11m
ratel-pod-exec-java7            11m
ratel-resource-readonly-java7   11m

    内容如下:

ource-readonly-java7 -o yaml
apiVersion: v1
items:
- apiVersion: rbac.authorization.k8s.io/v1
  kind: RoleBinding
  metadata:
    creationTimestamp: "2019-12-03T07:34:24Z"
    name: ratel-pod-delete-java7
    namespace: default
    resourceVersion: "35887290"
    selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ratel-pod-delete-java7
    uid: 547f5d42-159f-11ea-b1b5-001e674e3dd6
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: ratel-pod-delete
  subjects:
  - apiGroup: rbac.authorization.k8s.io
    kind: User
    name: java7
- apiVersion: rbac.authorization.k8s.io/v1
  kind: RoleBinding
  metadata:
    creationTimestamp: "2019-12-03T07:34:24Z"
    name: ratel-pod-exec-java7
    namespace: default
    resourceVersion: "35887289"
    selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ratel-pod-exec-java7
    uid: 547c5768-159f-11ea-b1b5-001e674e3dd6
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: ratel-pod-exec
  subjects:
  - apiGroup: rbac.authorization.k8s.io
    kind: User
    name: java7
- apiVersion: rbac.authorization.k8s.io/v1
  kind: RoleBinding
  metadata:
    creationTimestamp: "2019-12-03T07:34:24Z"
    name: ratel-resource-readonly-java7
    namespace: default
    resourceVersion: "35887288"
    selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ratel-resource-readonly-java7
    uid: 5476577f-159f-11ea-b1b5-001e674e3dd6
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: ratel-resource-readonly
  subjects:
  - apiGroup: rbac.authorization.k8s.io
    kind: User
    name: java7
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

    在没有安装Ratel的情况下,可以使用上述yaml内容直接创建至对应的namespace下即可完成权限配置。

     上述只是实现了对常用资源的权限控制,其他权限控制类似。

     Kubernetes多集群资源管理平台Ratel安装可以参考:https://github.com/dotbalo/ratel-doc

 

 

 

おすすめ

転載: www.cnblogs.com/dukuan/p/11976406.html