前提
DBのユーザ名・パスワード等の機密情報をSecretリソースで記述することを検討しています。
一般的に、このような機密情報はConfigMapではなくSecretで管理するものと思いますが、例えば以下のようなマニフェストから作成する場合、 username
password
は base64エンコードされている状況になりますが、暗号化されている訳ではないのでRead権限さえあればデコードが可能かと思います。
Secretの例
yml
1apiVersion: v1 2kind: Secret 3matadata: 4 name: sample-db-auth 5type: Opaque 6data: 7 username: cm9vdA== # 'root' をエンコードしたもの 8 password: cm9vdHBhc3N3b3Jk # 'rootpassword' をエンコードしたもの
このままではGitHubでコード管理する際にセキュリティリスクとなってしまうので、kubesec のようなOSSを用いて暗号化してからGitHubにプッシュするのが常套手段なのかと認識しておりますが、ここで疑問が生じました。
疑問
- Secretのvalueはbase64エンコードのみで暗号化する前提でないのはなぜ?
エンコードするくらいなら、いっそのこと暗号化まで公式でサポートすれば良い
のでは?
そもそもマニフェストをGitHub等でコード管理することを想定していない?
だから、GitHubで管理したい有志によってkubesecのようなOSSが開発された?
- どうせ暗号化するならConfigMapのマニフェストを暗号してしまえば事足りるのではないか?
わざわざSecretというものがあるのはなぜ?
見えてもよい情報と機密情報とで使い分けるため?
Kubernetes初学者で知識不足や根本的な概念を勘違いしていたら申し訳ありませんが、ご教授いただけるとありがたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 07:05
2020/12/07 02:55