クラウドとコンテナの基礎
KubernetesのSecretに、データベースのパスワードを保存する。Secretの説明として、正しいものはどれか。
- ASecretに入れた値は自動的に強い暗号で暗号化されるので、クラスタの中のだれが読み出しても、元のパスワードは分からない
- BSecretの値はコンテナから参照できないので、パスワードはイメージの中の設定ファイルに書いておく必要がある
- C値は既定ではBase64で表されているだけで暗号化ではないので、読める利用者の制限や、保存するときの暗号化を合わせて使う
答えと解説を見る
正解:C. 値は既定ではBase64で表されているだけで暗号化ではないので、読める利用者の制限や、保存するときの暗号化を合わせて使う
Secretは、パスワードやAPIのキーのような機密の値を、イメージやPodの定義から切り離して管理し、環境変数やファイルとしてコンテナに渡すためのリソースです。ただし、マニフェストに書く値はBase64で表しているだけで、だれでも元に戻せます。また、既定では、クラスタの情報を保存する etcd に暗号化されずに保存されます。そのため、RBACでSecretを読める利用者を絞り、etcd に保存するときの暗号化を有効にするなどの対策を合わせて行います。
- A. Base64は符号化で、暗号化ではありません。読む権限があれば、だれでも元の値に戻せます。
- B. Secretは、環境変数やファイルとしてコンテナに渡せます。パスワードをイメージに書くと、イメージを取得できる人に知られてしまいます。
- C. 正しい。Base64は暗号化ではないので、権限の制限や保存時の暗号化と組み合わせます。