问题标签 [kubernetes-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 允许使用 oc/kubectl 端口转发的角色的名称是什么?
我想创建一个允许oc port-forward
在 OpenShift.com Online(kubectl port-forward
Kubernetes 上的又名)上执行的服务帐户,但我一生都无法弄清楚我看到的众多角色中的哪一个oc get clusterrole
允许这样做?(oc get role
为空。)
因此,基于此错误消息,我尝试了“pods/portforward”,但效果不佳:
也只是“前锋”是不好的:
它适用于https://github.com/OASIS-learn-study/oc-port-forward-container。
ssl - 使用 TLS 保护 Kubernetes 服务
我有一个内部应用程序,仅通过具有集群 IP 的服务向集群上的其他应用程序公开。其他服务正在通过它的 DNS ( serviceName-namespace.svc.cluster.local
) 访问此应用程序。此应用程序处理敏感数据,因此尽管所有通信都在集群内,但我想使用 TLS 来保护与此应用程序的通信。
我的问题是 - 如何在服务上启用 TLS?是否已经存在某些东西或者我应该在应用程序代码上处理它?此外,是否已经有一个可以在集群上使用的 CA 来签署证书.svc.cluster.local
?
澄清一下,我知道我可以为此目的使用入口。唯一的问题是仅将此服务保持在内部 - 因此只有集群内的服务才能访问它。
谢谢, 奥马尔
spring - Kubernetes Secret 和 Spring Boot 配置
我们的服务在 Kubernetes 集群中运行。我正在尝试使我们的服务受到 SSL 的保护。
为此,我添加到 application.properties:
我想从集群中定义的 kubernetes 机密中获取的密钥库密码。
当服务开始运行时,我收到一个错误Password verification failed
:
“org.apache.catalina.LifecycleException: 无法启动组件 [Connector[HTTP/1.1-8080]]\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)\n\tat org .apache.catalina.core.StandardService.addConnector(StandardService.java:225)\n\tat org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviousRemovedConnectors(TomcatWebServer.java:256)\n\tat org.springframework .boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:198)\n\tat org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300)\n\tat org .springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)\n\tat org.springframework.context.support.AbstractApplicationContext。刷新(AbstractApplicationContext.java:553)\n\tat org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication. java:759)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:327)\n\tat org. springframework.boot.SpringApplication.run(SpringApplication.java:1255)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)\n\tat com.ibm.securityservices.cryptoutils.Application.main( Application.java:9)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java: 48)\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:87)\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:50)\n\tat org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)\n原因:org.apache.catalina.LifecycleException: 协议处理程序启动失败\n\tat org.apache.catalina.connector.Connector.startInternal( Connector.java:1020)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)\n\t... 省略了 21 个常用框架\n原因:java.lang.IllegalArgumentException: Keystore被篡改,或密码不正确\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint。createSSLContext(AbstractJsseEndpoint.java:116)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87)\n\tat org.apache.tomcat.util.net.NioEndpoint.bind( NioEndpoint.java:225)\n\tat org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)\n\tat org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591) \n\tat org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)\n\t... 省略了 22 个常用帧\n原因:java.io.IOException: Keystore was tampered with, or password不正确\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:780)\n\tat sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)\n\tat sun。 security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)\n\tat sun.security.provider。JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)\n\tat java.security.KeyStore.load(KeyStore.java:1445)\n\tat org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase. java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil. java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: Password验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}getStore(SSLUtilBase.java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil。 getKeyManagers(JSSEUtil.java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security .UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}getStore(SSLUtilBase.java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil。 getKeyManagers(JSSEUtil.java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security .UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java: 778)\n\t...省略了 35 个常用帧\n"}createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java: 778)\n\t...省略了 35 个常用帧\n"}
我的调查:
1.如果我在代码中打印
我看到了它的正确价值。
2. 如果我在应用程序属性中设置硬编码常量密码值,它可以工作,服务启动并运行。
所以我想问题是为应用程序属性设置秘密值。
您的帮助和建议将不胜感激
spring-boot - Spring boot service in kubernetes always responses with HTTP status 400
We have Spring Boot service running in Kubernetes.
This service has endpoint:
- GET /healthz
We have liveness probe that uses this endpoint. Probe runs successfully.
It means that the endpoint is reachable from the service pod (localhost).
When I run in the service pod :
wget https://localhost:8080/healthz
I get an answer (OK)
When I try to call this endpoint outside the pod wget https://myhost:8080/healthz
, I get response 400 without body.
I don't see any logs of Sprint. It seems that it does not reach the Sprint .
When I added flag -Djavax.net.debug=all
I see in log that TLS handshake finished and then:
and immediately
When I try wget https://myhost:8080/blahblah
(non existing endpoint),
I still get 400, not 404!
When I try wget https://myWronghost:8080/healthz
(wrong host), I get an error Bad address
. It means that host 'myhost' is correct (otherwise I would get this error).
Docker file:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8
ENTRYPOINT ["java","-Djavax.net.debug=all", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080
Summing up:
The service endpoints are accessible from within service pod, but not accessible from outside the pod.
Any idea why?
Update:
The problem was solved by calling the service with fully qualified domain name : serviceName.namespaceName.svc.cluster.local
Tomcat didn't accept calls with short domain serviceName.namespaceName, it responded 400.
kubernetes - Kubernetes kubelet 安全问题
我们正在使用与 Vault 集成的 EKS,使用 Kubernetes 作为 Vault 的“身份验证后端”。我们看到的一个安全漏洞是,如果有人可以访问 kubelet 证书,他们可以冒充 kubelet,因此可以获得 pod 已映射到的服务帐户的机密(根据Vault 角色定义)并使用 Vault 验证自身并从 Vault 获取数据库凭据。有没有办法缓解这种情况。基本上我们如何才能降低有人冒充 kubelet 的风险。
kubernetes - chown:更改“/data/db”的所有权:不允许操作
我们可以使用 nfs 卷插件来维护 kubernetes 集群之间的高可用性和灾难恢复吗?
我正在使用 MongoDB 运行 pod。得到错误
chown:更改“/data/db”的所有权:不允许操作。
云任何机构,请建议我如何解决错误?(或者)
是否有任何替代卷插件可以在 kubernetes 集群中实现 HA-DR?
kubernetes - 我可以使用 Ambassador 来验证 Kubernetes 集群内的服务到服务通信吗?
我有一个带有服务的 Kubernetes 集群,我使用 Ambassador 作为外部世界和我的服务之间的 API 网关。
有了大使,我知道我可以使用我拥有的服务来检查传入请求的身份验证和授权,但这是否仅适用于来自集群外部的请求?
我也想拦截服务到服务的调用。
ssl - 如何配置 Kubernetes Ingress Nginx 注释白名单仅适用于 http
我已经配置了我的入口支持 SSL:
在我上面的配置中,只有白名单中的 IP 可以访问 HTTP 和 HTTPS 的域。但我想配置所有 IP 地址都可以访问https://example.com
(HTTPS),白名单中的一些 IP 地址可以在没有 SSL 的情况下访问 - http://example.com
。
kubernetes - Kubernetes 中的 RBAC 错误
我已经在我的工作场所部署了 kubernetes v1.8。3 个月前,我为管理员创建了角色并查看了对命名空间的访问权限。在初始阶段,RBAC 根据授予用户的访问权限工作。现在 RBAC 并没有发生,每个有权访问集群的人都拥有 clusteradmin 访问权限。
您能建议必须完成的错误/更改吗?
kubernetes - Kubernetes Secrets 卷与环境变量
有没有推荐的方式来使用Kubernetes Secrets?它们可以作为环境变量公开或使用卷安装。一个比另一个更安全吗?