プロファイル適用性: レベル2
Kubernetesはシークレットをデータボリュームまたは環境変数としてマウントすることをサポートしています。環境変数シークレットの使用を最小限に抑えてください。
アプリケーションコードがその環境をログアウトすることは合理的に一般的です (特にエラーが発生した場合)。これには環境変数として渡された秘密の値が含まれるため、ログにアクセスできるユーザやエンティティに秘密が簡単に露出する可能性があります。
注意デフォルトでは、シークレットは定義されていません。
|
影響
環境変数の形式でシークレットを読み取ることを期待するアプリケーションコードは、修正が必要です。
監査
次のコマンドを実行して、シークレットから定義された環境変数を使用するオブジェクトへの参照を見つけてください。
echo -e "NAMESPACE\tPOD\tCONTAINER"
kubectl get pods -A -o jsonpath='{range .items[?(@.spec.containers[*].env[*].valueFrom.secretKeyRef)]}{.metadata.name space}{"\t"}{.metadata.name}{"\t"}{.spec.containers[*].name}{"\n"}{end}'
サンプル出力:
NAMESPACE POD CONTAINER default my-app-588f67fd8d-vqc6k my-app-container prod api-6d8b4f79cc-def34 api-container
修復
可能であれば、環境変数ではなく、マウントされた秘密ファイルから秘密情報を読み取るようにアプリケーションコードを書き換えてください。
