According to the latest CNCF survey of 1,340 technical experts in companies of all sizes, 78% of respondents use open source container orchestration tools in production. This is an increase from 58% last year.
However, although
Kubernetes is one of the most popular projects on GitHub, many organizations are still shocked by its complexity.
Organizations have seen the value of building
microservices-delivering applications as discrete functional parts, each part can be delivered as a container and managed separately. But for each application, there are more parts to manage, especially in terms of scale.
Kubernetes solves this problem by providing a scalable, declarative platform that can automate container management to achieve high availability, resilience, and scale. However, Kubernetes is a huge, complex, rapidly developing, and sometimes confusing platform that requires users to develop new skills. The Kubernetes project itself recently completed a security audit.
Companies that develop
cloud-native strategies (including which platforms and tools should be used to ensure the secure deployment of cloud-native applications) may benefit from understanding the security challenges of Kubernetes, which comes down to four main aspects.
The following are the challenges you will face and suggestions to mitigate them.
1. Strengthening and compliance
When using Kubernetes, you must focus on what is open and not open by default. For example, the pod security strategy is the key to protecting multi-tenant clusters, but this feature is still beta and is not enabled by default. A feature-rich Kubernetes platform may make understanding the default features challenging, but it is essential to understand the default features.
Organizations can use security benchmarks to strengthen
Kubernetes. For example, the Internet Security Center provides configuration guidelines to strengthen systems (including Kubernetes) to resist evolving cyber threats.
Having this type of step-by-step list can greatly ensure the protection of complex systems like Kubernetes. However, because security is always related to risk management, organizations need to assess the impact of certain settings on performance and weigh the risks and benefits.
Some organizations do not have the skills or time to strengthen Kubernetes on their own. Ensuring the configuration required to set up and maintain the cluster to include tasks such as ensuring that the API server is always accessed through HTTPS and using X.509 certificates to authenticate communications between platform components can be a daunting task. etcd data storage is encrypted.
Even this relatively short list of overwhelmed organizations may wish to consider the commercial implementation of Kubernetes that has been enhanced.
2. Manage the configuration of all workloads deployed on the cluster
In addition to
managing the configuration of the cluster, the organization also needs to manage the configuration of all workloads running on the cluster. You can use the open source tool helmet chart to automate application provisioning and configuration, as well as deploy simple or several independent services from complex applications Kubernetes.
However, although Helm is very useful for managing day 1 operations, it does not extend to day 2 operations, which is the highlight of Kubernetes operators.
Operators are a way to package, deploy and manage complex applications designed to run on Kubernetes. Operators acquire human operation knowledge and encode it as software that is packaged and shared with applications.
They make it easier for application developers to provide automated lifecycle management for services running on Kubernetes. Helm Charts can also be wrapped in Kubernetes operators and used together.
In terms of security, operators ensure that services deployed on Kubernetes maintain supported configurations. If an unsupported configuration is made to a deployed service, the operator can reset the service to its original declared configuration.
What's really interesting is that you can use Kubernetes operators to manage Kubernetes itself, making it easier to deliver and automate secure deployments.
3. Manage multi-tenant clusters
As Kubernetes expands, it becomes increasingly difficult to manage all workloads deployed on the cluster and the cluster itself. Multi-tenancy is one of the most effective ways to deal with things that can easily become confusing. In fact, Kubernetes support for multi-tenancy has come a long way.
Key features include the following features (you should note that it is not always turned on by default):
Namespaces, when used with RBAC (defined below) and network policies, allow organizations to isolate multiple teams in the same physical cluster.
Role-based access control (RBAC) determines whether users are allowed to perform a given operation within a cluster or namespace. To help simplify the use of RBAC, consider using default roles, which can be bound to users and groups within the entire cluster or local to each namespace.
Resource quotas in
Kubernetes limit the total resource consumption of each namespace, making the system less vulnerable to attacks such as denial of service. By default, all resources in a Kubernetes cluster are created with unlimited CPU and memory requests/limits.
Micro-segmented network policies specify how Pod groups communicate with each other and with other network endpoints. The strategy is based on the namespace. By default, if no policy is set in the namespace, traffic to and from Pods in that namespace is allowed.
4. Balance security and agility
Organizations are constantly under pressure to innovate, which makes it easy to consider security as an afterthought. Ideally, security is built into the DevOps cycle, but organizations can benefit by explicitly adding "sec" in the middle of DevOps, or by building as much security automation in the pipeline as possible.
To ensure that application development organizations can implement best security practices, please take a step back and then revisit the CI/CD pipeline. Do they use automated unit testing and functional testing? Do they integrate automatic security gates, such as integrated vulnerability scanners?
By adding functionality to development and production clusters, Ops can help DevSecOps, allowing application development teams to easily utilize monitoring, alerting, and logging services in a unified manner, while developing and deploying microservice-based applications.
In addition, although adding a service mesh to a Kubernetes cluster seems to increase complexity, it actually makes important business logic more visible. Previously, developers needed to build logic in their code. Now, these functions can be used as part of the Kubernetes platform, which saves the developer's workload and speeds up the delivery of microservices.
The service grid also provides operational teams with more visibility into microservice interactions, especially when observability and visualization of east-west cluster traffic is part of the service grid solution.
But this is not just a tool. This is also related to culture and process. Ideally, this self-assessment work and changes to the CI/CD pipeline are done in collaboration with the organization's security team, thus providing developers with an opportunity to learn more about security and vice versa. After all, there is a shortage of security professionals, so let us work together to spread our wealth.
Building security features in your software can make your organization achieve its security goals as easily as possible without having to rely on a large number of point products that may work together or work together.
It’s great to see that the Kubernetes community not only invests in traditional security assessments (such as Kubernetes security audits), but also invests in all the features that enhance security. These features include hardening guidelines, RBAC, pod security strategy, network strategy, Service grid, and operators.