OrLev-Ari/llm-security-platform-backend

GitHub: OrLev-Ari/llm-security-platform-backend

基于AWS无服务器架构的大模型安全挑战平台后端,提供用户管理、角色授权和LLM安全挑战的全生命周期管理能力。

Stars: 0 | Forks: 0

# 欢迎使用您的 CDK Python 项目! 这是一个使用 Python 进行 CDK 开发的空白项目。 `cdk.json` 文件告诉 CDK Toolkit 如何执行您的应用程序。 此项目采用标准 Python 项目的结构设置。初始化过程还会在此项目中创建一个 virtualenv,存储在 `.venv` 目录下。创建 virtualenv 时,假定您的路径中有一个可以访问 `venv` 包的 `python3`(在 Windows 上为 `python`)可执行文件。如果由于某种原因自动创建 virtualenv 失败,您可以手动创建 virtualenv。 要在 MacOS 和 Linux 上手动创建 virtualenv: ``` $ python -m venv .venv ``` 在初始化过程完成并创建 virtualenv 之后,您可以使用以下步骤来激活您的 virtualenv。 ``` $ source .venv/bin/activate ``` 如果您使用的是 Windows 平台,可以通过以下方式激活 virtualenv: ``` % .venv\Scripts\activate.bat ``` 激活 virtualenv 后,您可以安装所需的依赖项。 ``` $ pip install -r requirements.txt ``` 此时,您可以为此代码合成 CloudFormation 模板。 ``` $ cdk synth ``` 要添加其他依赖项(例如其他 CDK 库),只需将它们添加到您的 `requirements.txt` 文件中,然后重新运行 `python -m pip install -r requirements.txt` 命令。 ## 部署前置条件 ### 0. 配置 AWS CLI **重要提示:** 在部署此项目之前,您必须配置 AWS CLI 凭证。 **安装 AWS CLI:** - 下载地址:https://aws.amazon.com/cli/ - 或通过包管理器安装: - Windows:`winget install Amazon.AWSCLI` - macOS:`brew install awscli` - Linux:`sudo apt install awscli` 或 `sudo yum install awscli` **配置 AWS 凭证:** ``` aws configure ``` 系统将提示您输入: - AWS Access Key ID - AWS Secret Access Key - Default region name(例如,`us-east-1`) - Default output format(按回车键使用默认值) **获取 AWS 凭证:** 1. 登录 AWS 控制台 2. 前往 IAM → Users → 您的用户 → Security Credentials 3. 创建 Access Key → Command Line Interface (CLI) 4. 复制 Access Key ID 和 Secret Access Key **验证您的配置:** ``` aws sts get-caller-identity ``` 这将会显示您的账户 ID、用户 ARN 和用户 ID。CDK 堆栈将自动部署到此账户。 ### 1. Bootstrap AWS CDK(仅限首次) 如果这是您首次在您的账户/区域中使用 AWS CDK,您必须对其进行 bootstrap 操作: ``` cdk bootstrap ``` 这将为 CDK 部署创建必要的 S3 存储桶和 IAM 角色。每个账户/区域组合只需执行一次此操作。 ### 2. Lambda Layer 依赖项 Lambda 函数使用一个 layer 来处理身份验证依赖项(`bcrypt`,`PyJWT`)。该 layer 在 CDK 合成期间**使用 Docker 打包自动构建** - 无需手动操作! **工作原理:** - CDK 会在 `cdk synth` 或 `cdk deploy` 期间自动运行一个 Docker 容器 - `lambda_layer/requirements.txt` 中的依赖项将安装在 Linux 环境中 - 该 layer 打包了适用于 Lambda (Linux ARM64) 的正确二进制文件 **要求:** - Docker 必须处于运行状态(Windows 上为 Docker Desktop) - 无需手动构建命令 - CDK 会处理一切! **更新依赖项:** 1. 编辑 `lambda_layer/requirements.txt` 2. 运行 `cdk deploy`(CDK 将自动重新构建 layer) ### 3. 创建所需的 SSM 参数 应用程序需要 AWS Systems Manager Parameter Store 中的以下参数: **重要提示:** 这些参数必须创建在您部署堆栈的**同一区域**中。 #### JWT Secret(必需) ``` aws ssm put-parameter \ --name /llmplatformsecurity/jwtsecret \ --value "your-strong-random-secret-key-here" \ --type SecureString \ --region us-east-1 ``` **生成一个安全的随机 secret:** ``` import secrets print(secrets.token_urlsafe(32)) ``` #### Hugging Face Token(必需) ``` aws ssm put-parameter \ --name /llmplatformsecurity/hftoken \ --value "hf_your_huggingface_token_here" \ --type SecureString \ --region us-east-1 ``` **获取您的 Hugging Face token:** 1. 在 https://huggingface.co/ 注册 2. 前往 Settings → Access Tokens 3. 创建一个具有读取权限的新 token ## 管理员用户设置 应用程序使用带有基于角色的授权的 JWT 身份验证。管理员用户拥有创建、更新和删除挑战的更高权限。 ### 创建第一个管理员用户 出于安全原因,**无法通过 API** 创建管理员用户。必须使用 AWS 控制台手动将第一个管理员账户插入到 DynamoDB `UsersTable` 中: 1. **导航到 DynamoDB 控制台** - 前往 AWS 控制台 → DynamoDB → Tables - 选择 `UsersTable` 2. **创建管理员项** - 点击 "Explore table items" → "Create item" - 切换到 JSON 视图并插入: { "username": "admin", "passwordHash": "$2b$12$YOUR_BCRYPT_HASH_HERE", "email": "admin@example.com", "country": "US", "dateOfBirth": "1990-01-01", "is_admin": true, "createdAt": 1713312000 } 3. **生成密码哈希** - 使用 Python 生成 bcrypt 哈希: import bcrypt password = "your-secure-password" hash = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) print(hash.decode('utf-8')) - 复制输出并替换上面 JSON 中的 `$2b$12$YOUR_BCRYPT_HASH_HERE` 4. **重要说明** - 将 `is_admin` 设置为 `true`(布尔值,而不是字符串) - 使用当前的 Unix 时间戳作为 `createdAt` - 用户名在应用程序中将规范化为小写 - 所有通过 `/auth/register` 注册的普通用户都将具有 `is_admin: false` 属性 ## 实用命令 * `cdk ls` 列出应用程序中的所有堆栈 * `cdk synth` 发出合成的 CloudFormation 模板 * `cdk deploy` 将此堆栈部署到您的默认 AWS 账户/区域 * `cdk diff` 将已部署的堆栈与当前状态进行比较 * `cdk docs` 打开 CDK 文档 祝您使用愉快!
标签:AWS, AWS CDK, AWS CLI, CloudFormation, DPI, EC2, IaC, IAM配置, Python, virtualenv, 云原生开发, 云计算, 云资源编排, 亚马逊云, 后端开发, 开发环境搭建, 无后门, 模板合成, 特权提升, 自动化部署, 虚拟环境, 规则引擎, 请求拦截, 逆向工具