HardenEKS 项目使用教程
1. 项目目录结构及介绍
HardenEKS 项目的目录结构如下:
hardeneks/
├── hardeneks/
│ ├── __init__.py
│ ├── cluster_wide/
│ ├── harden.py
│ ├── namespace_based/
│ ├── report.py
│ └── resources.py
├── setup.py
├── README.md
└── requirements.txt
目录结构介绍
- hardeneks/: 项目的主目录,包含了所有核心代码文件。
- init.py: 初始化文件,用于标识该目录为一个 Python 包。
- cluster_wide/: 包含与集群范围相关的检查和验证代码。
- harden.py: 核心文件,负责执行 EKS 集群的最佳实践验证。
- namespace_based/: 包含与命名空间相关的检查和验证代码。
- report.py: 负责生成报告的代码文件。
- resources.py: 资源管理相关的代码文件。
- setup.py: 项目的安装配置文件,用于安装项目依赖。
- README.md: 项目的说明文档,包含项目的基本介绍和使用说明。
- requirements.txt: 项目依赖的 Python 包列表。
2. 项目启动文件介绍
HardenEKS 项目的启动文件是 harden.py
。该文件是项目的核心入口,负责执行 EKS 集群的最佳实践验证。
harden.py
文件介绍
from pathlib import Path
from pkg_resources import resource_filename
import yaml
from botocore.exceptions import EndpointConnectionError
import boto3
import kubernetes
from rich.console import Console
import typer
from resources import (
NamespacedResources,
Resources
)
from harden import harden
app = typer.Typer()
def _config_callback(value: str):
config = Path(value)
if config.is_dir():
raise typer.BadParameter(f"[config] is a directory")
elif not config.exists():
raise typer.BadParameter(f"[config] doesn't exist")
with open(value, "r") as f:
try:
yaml.load(f, Loader=yaml.FullLoader)
except yaml.YAMLError as exc:
raise typer.BadParameter(exc)
return value
def _get_current_context(context):
if context:
return context
_
NamespacedResources(region, context, cluster, ns)
resources.set_resources()
harden(resources, rules, "namespace_based")
console.print()
主要功能
- 配置回调函数 (
_config_callback
): 用于验证配置文件的路径和内容。 - 获取当前上下文 (
_get_current_context
): 获取当前的 Kubernetes 上下文。 - 资源设置 (
resources.set_resources
): 设置需要检查的资源。 - 执行验证 (
harden
): 执行 EKS 集群的最佳实践验证。
3. 项目的配置文件介绍
HardenEKS 项目的配置文件通常是一个 YAML 文件,用于指定需要检查的 EKS 集群的配置。
配置文件示例
region: us-east-1
context: my-eks-context
cluster: my-eks-cluster
namespace: default
配置文件字段介绍
- region: 指定 EKS 集群所在的 AWS 区域。
- context: 指定 Kubernetes 上下文。
- cluster: 指定 EKS 集群的名称。
- namespace: 指定需要检查的命名空间(默认为所有命名空间)。
通过以上配置文件,HardenEKS 可以针对指定的 EKS 集群和命名空间执行最佳实践验证。