как «секретно» защитить конфиденциальную информацию в Куберне - PullRequest
0 голосов
/ 01 сентября 2018

Я свеж в Кубернетес.

Насколько я понимаю, secret заключается в том, что он кодирует информацию base64. И из ресурсов, которые я видел, утверждается, что secret может защитить конфиденциальную информацию. Я не понимаю этого.

Кроме информации о кодировании с base64, я не вижу никакой реальной разницы между secret и configMap. И мы могли бы так легко расшифровать кодированную base64 информацию. Это значит, что защиты вообще нет ...

Мое понимание неверно?

1 Ответ

0 голосов
/ 01 сентября 2018

То, что защищает Secret, - это тот факт, что он является отдельным типом ресурса в kubernetes и, следовательно, может подвергаться политике RBAC, отличной от ConfigMap.

Если вы в настоящее время можете читать Secret s в своем кластере, это потому, что у вашего ClusterRoleBinding (или RoleBinding) есть правило, которое специально предоставляет доступ к этим ресурсам. Это может быть связано с тем, что вы обращаетесь к кластеру через его «неаутентифицированный» порт с одного из главных узлов, или из-за [Cluster] RoleBinding, связывающего ваши Subject с cluster-admin, что, вероятно, довольно часто встречается в Привет-мир ситуации, но я бы предположил, что менее распространены в настройках производственного кластера.

Это педантичный ответ, однако, на самом деле охранять секреты, содержащиеся в Secret, сложнее, учитывая, что они обычно подвергаются Pod с помощью инъекции среды или монтирования тома. Это означает, что любой, кто имеет exec доступ к Pod, может очень легко отфильтровать секретные значения, поэтому, если секреты очень важны и должны храниться даже в команде, вам необходимо отозвать exec доступ к ваши Pod с тоже. Срединной точкой может быть предоставление команде доступа к Secret с их Namespace, но запрещение этого с другими Namespace с. Это безопасность, так что перестановкам и особым случаям почти нет конца.

...