これに対処しようとした人が少し見つかりました。hereとhereですが、私にとっては解決しません。Kubernetes ABACモードが動作しない
問題: ABACポリシーを使用して、クラスタ用の読み取り専用ユーザーを作成したいとします。 私のクラスタには、AWSでホストされている3つのマスターと3つのワーカー、バージョン1.4.7があります。
- を - : - (..もちろんのファイルの一番下に、私は、関連するパスなどを搭載し追加これらの3行が)
私はので、すべての3つのマスターにように私のマニフェスト/ apiserver.ymlを編集しましたトークンAUTH-ファイル=の/ etc/kubernetes /ポリシー/ユーザtokens.csv
- --authorizationモード= ABAC
- --authorizationポリシーファイル=の/ etc/kubernetes /ポリシー/ apiusers.yml
私のapiuser.ymlは次のようになります。
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*", "namespace": "*", "resource": "*", "apiGroup": "*"}}
マイユーザー-token.csvは次のようになります。
tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH,bob,bob
マイkubeconfigファイルはそれでこれを持っている:
users:
- name: bob
user:
token: tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH
私はそれが失敗だkubectl get nodes
を試してみてください、私は印刷することができます出力が--v = 8の場合、関連性がありますが基本的にはForbidden(403)
と表示されます。 私はここに何か根本的な欠けているように見えます。ポリシーは正当なものであり、すべてのユーザーとすべてのユーザーをブロックしていますが、認証されたユーザーは読み取り専用のアクセス権を許可する必要があります。
どのようなヘルプや提案があれば幸いです。
ああヨルダンを使用することができます。私はあなたに投票するのに十分なクレジットがありませんが、それはまさに私の正確な状況のための正しい解決策です。 –
もう1つ質問がありますが、別のユーザーを管理者にしたい場合は "spec":{"user": "core-admin"、 "nonResourcePath": "*"、 "namespace": "*" "resource": "*"、 "apiGroup": "*"}}?私のkubeconfigでは、同じクラスタの別のコンテキストを設定します(ユーザ名などを追加します)?それとももっと良い方法がありますか? –
私は自分自身に答えました。私が上に書いたものは正しいです。ポリシーオブジェクトの外観が重要です。つまり、管理者は最初の行にする必要があります。 –