2016-04-28 17 views

答えて

3

は、私の知る限りでは、直接CRLを経由して、証明書を失効させる方法はありません。しかし、どのような作業を行い、そして私たちが現在使用している、(証明書の共通名を介して設定された)ユーザを識別し、それらがKubernetes上の特定のリソースへのアクセス権を持っているかどうかをするABAC policiesです。

たとえば、「random」というユーザーがいるとします。指定された認証局から「ランダム」という一般名でクライアント証明書を生成します。

そこから、各行がJSONのビットであるcsvファイルを持つことができます。ユーザーに「ランダム」のアクセス権が設定されているため、Kubernetes APIへの一定のアクセスレベルが提供されます。すべての名前空間や特定の名前空間やその他のAPIパラメータにアクセスできるようにすることができます。権限を取り消す必要がある場合は、そのユーザをABACポリシーファイルから削除するだけです。これをテストしたところ、うまくいきました。残念なことに、私はあなたがは、これらの変更が有効になるようにKubernetes APIサービスを再起動しなければならないと言います。そのため、この変更が発生するまでに数秒のダウンタイムが発生することがあります。明らかに開発環境では、これは大きな問題ではありませんが、本番環境ではユーザーを追加する時間をスケジュールする必要があります。

うまくいけば、将来的には、単純な「KUBE-apiserverリロード」は、ABACポリシーファイルの再読み込みを可能にします。

最後にもう一つの事は注意する:ABAC認証用のクライアント証明書を使用しているとき、あなたは個別のユーザーの権限を設定する必要があります。 ABACの認証トークンとは異なり、クライアント証明書のユーザーは「グループ」に設定できません。私たちの頭痛を引き起こした何か、それは渡す価値があると考えられた。 :)

これが役に立ちます。

+0

解決方法、説明、アドバイスありがとうございます。現在、私のk8sクラスターには、「apiserver」、「他のマスターコンポーネント」、「ミニオン」、そして最後の「kubectl」の4セットのキーとcrtがあります。最初に、私はそのうちの1人が失ったような問題を解決する方法を考えています。今は、ABACポリシが最善の選択だと思われます。ポッドだけを作ることができるkubectlには、パーマの種類が適切であるばかげた質問ですか? – Yang

+1

@Yang証明書の失効は間違いなく残念ですが、残念ながら答えはABACからそのユーザーを削除し、新しいユーザーを作成することです。たとえば、「ランダム」が証明書を失った場合、そのユーザーの新しい証明書を持つ「random2」ユーザーを作成する必要があります。私はコミュニティがKubernetesの新しいバージョンにCRLサポートを追加することについて話していたことは知っていますが、今は証明書を取り消すことができません。可能性のある回避策の1つは、Kube APIの前でHAProxy/NGINXを取り消した証明書をチェックすることです。 –

+1

非常に多くの詳細な実装をありがとう、私は非常に感謝している、特にHAProxy/NGINXのアイデアは、それはXD – Yang

関連する問題