Git Product home page Git Product logo

lightspin-tech / eks-creation-engine Goto Github PK

View Code? Open in Web Editor NEW
40.0 3.0 12.0 88 KB

The Amazon Elastic Kubernetes Service (EKS) Creation Engine (ECE) is a Python command-line program created by the Lightspin Office of the CISO to facilitate the creation and enablement of secure EKS Clusters.

Home Page: https://blog.lightspin.io/why-create-an-eks-creation-tool

License: Apache License 2.0

Python 100.00%
devops kubernetes devsecops aws-security kubernetes-deployment container-security compliance security infrastructure-as-code aws-kubernetes

eks-creation-engine's Introduction

Lightspin EKS Creation Engine

The Amazon Elastic Kubernetes Service (EKS) Creation Engine (ECE) is a Python command-line program created by the Lightspin Office of the CISO to facilitate the creation and enablement of secure EKS Clusters, optionally further assured with continual Kubernetes Security Posture Management (KSPM), Runtime Protection, and Application Performance Monitoring (APM) capabilities.

What is this ๐Ÿ‘€ ๐Ÿ‘€ ??

As stated above, the ECE is a Python utility to create a fully functioning EKS Cluster, complete with Nodegroups which are built off of EC2 Launch Templates as it was meant for creating EKS Nodegroups with custom AMIs with custom bootstrapping.

At a high-level ECE...

  • Supports the full lifecycle of EKS management: Creation, Deletion, Rollbacks, and Updates
  • Bootstraps Nodegroups based on IMDSv2 and Custom AMIs (Currently supports Amazon Linux 2 & Ubuntu 20.04LTS Arm64 & Amd64)
  • Authorize additional IAM Principals into your Cluster
  • Will install and configure Microsoft Defender for Endpoint (MDE), Sysdig's Falco & FalcoSidekick, and/or Datadog if desired.
  • Perform Kubernetes Security Posture Management (KSPM) tasks using Aqua Security's Trivy (vulnerability management) and Kube-bench (EKS CIS Benchmarking) into a SARIF JSON Report

After creating a Cluster with ECE, you are free to use your own tools such as eksctl or Terraform to further extend!

It is very easy to get started, just provide a VPC ID and two matching private Subnet IDs

python3 main.py \
    --subnets subnet-123 subnet-456 \
    --vpcid vpc-123

Why use this over IAC ๐Ÿคจ ๐Ÿคจ ??

tl;dr = ECE will create a secure cluster the first time, every time, and support the security of your clusters throughout their lifetime better than AWS' own defaults.

For those using the Console, APIs, CLI, or SDKs to create your Cluster - AWS does not provide the best experience nor secure defaults - but ECE does.

Feature Default-by-AWS Default-by-ECE
Public API Endpoint โœ… โŒ
API Server Logging โŒ โœ…
Audit Logging โŒ โœ…
Authenticator Logging โŒ โœ…
Controller Manage Logging โŒ โœ…
Scheduler Logging โŒ โœ…
Secrets Envelope Encryption โŒ โœ…
Node Volume Encryption โŒ โœ…
Minimum Necessary Secuirty Group Permissions โŒ โœ…
Minimum Necessary IAM Role Permissions โŒ โœ…
KMS Key Generation โŒ โœ…
IMDSv2 on Nodes โŒ โœ…
EDR on Nodes โŒ โœ…
Dynamic Custom AMI bootstrapping โŒ โœ…
Falco Configuration by Default โŒ โœ…
FalcoSidekick Configuration by Default โŒ โœ…
CIS Benchmarking โŒ โœ…
Container Vulnerability Scanning โœ… โœ…

Note: Yes, we realize we are being cheeky with a lot of comparisons and features that AWS shouldn't be expected to provide, it's still concerning that AWS does not conform to their own best practices for defaults.

For those using Infrastructure-as-Code (IAC) such as AWS CloudFormation and HashiCorp's Terraform are the preferred vehicles for defining infrastructure, they can be complicated to write and maintain when getting started with AWS EKS. They also native capabilities to reach into clusters and provide post-provisioning without the usage of custom resources (CFN), locals and external providers (TF). This utility provides similar behavior patterns (creating, update, rollback) and can be used to quickly tune parameters and change conditions which are static within IAC. Further, ECE is also a secure tool used for vulnerability management, runtime protection configuration, and posture management in addition to being an IAC tool - something CloudFormation and Terraform would need additional infrastructure templates and outside tools to achieve.

How do I use this ๐Ÿค” ๐Ÿค” ??

Read the Docs here

FAQ ๐Ÿ˜Œ ๐Ÿ˜Œ ??

Read the FAQ here

How can I contribute โ†—๏ธ โ†—๏ธ ??

We are happy to take contributions from anywhere that will help expand this project. Some things that immediately come to mind...

  • Saving configurations to YAML/JSON and read from them.
  • Support installing more software onto EKS Nodes (e.g., CloudWatch Agent, Kinesis Data Agent, Wazuh, etc.)
  • Functionality for adding Nodegroups to existing Clusters.
  • Spot provider & Fargate Profile support for Nodegroups, and an option to not use Nodegroups
  • Create more Plugins for various utilities (e.g., Calico, OPA, NGINX Ingress Controller, etc.)

Contact Us ๐Ÿ“ž ๐Ÿ“ž

For more information, contact us at [email protected].

License โœณ๏ธ โœณ๏ธ

This repository is available under the Apache License 2.0.

eks-creation-engine's People

Contributors

jonrau-lightspin avatar shay-ul avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

eks-creation-engine's Issues

Failed to create eks node group

Im receive this error during the deployment
Error encountered: Waiter NodegroupActive failed: Waiter encountered a terminal failure state: For expression "nodegroup.status" we matched expected path: "CREATE_FAILED"

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.