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, 云原生开发, 云计算, 云资源编排, 亚马逊云, 后端开发, 开发环境搭建, 无后门, 模板合成, 特权提升, 自动化部署, 虚拟环境, 规则引擎, 请求拦截, 逆向工具