Mientras desarrollaba un servidor API, necesitaba proporcionar cierta información de la cuenta al servidor API, que no debería mostrarse a nadie. K8s recomienda secret para este tipo de situaciones, así que lo usé.
Pero me pregunto si el secreto es realmente secreto. El secreto es solo texto "codificado" en base 64, no "cifrado".
Cuando veo un secreto arbitrario como el de abajo,
namespace: ZGVmYXVsdA==Puedo saber fácilmente el valor real al decodificar.
namespace: defaultEn tal situación, ¿el secreto es realmente útil para la seguridad? Lo que sé sobre la ventaja de seguridad del secreto es que está en la memoria, no en el sistema de archivos del nodo. Pero creo que eso no es suficiente para la seguridad.
Gracias.
Dela documentación de Kubernetes Secrets :
Riesgos
Consulte también la excelente publicación ¿Puede Kubernetes guardar un secreto? Todo depende de la herramienta que estés usando , especialmente la parte " ¿Qué tiene de malo Kubernetes Plain Secrets? ".
Espero haber respondido a su pregunta, pero en general @Harsh Manvar tiene razón: primero debe tener acceso a ese secreto.
Debe limitar el acceso mediante políticas de autorización como RBAC.
Deberá crear un Role/ClusterRole con los permisos apropiados y luego vincularlo (mediante RoleBinding/ClusterRoleBinding ) a un usuario y/o una cuenta de servicio (se puede usar en la definición de pod entonces), según su caso de uso.
Puede consultar la documentación aquí para crear Role & ClusterRole y los documentos aquí para RoleBinding y ClusterRoleBinding.