docs: harden Docker practice security examples

This commit is contained in:
yeasy
2026-05-20 15:58:46 -07:00
parent 1b651e5f8c
commit d47afa7e75
4 changed files with 20 additions and 11 deletions
+4 -2
View File
@@ -21,7 +21,7 @@ wordpress/
### 11.8.2 编写 `compose.yaml` ### 11.8.2 编写 `compose.yaml`
这是一个生产可用的最小化配置 这是一个可运行的单机最小配置不是完整生产安全基线正式部署前应固定镜像版本放在反向代理/TLS 后面限制公开端口配置备份与监控并按 WordPress 与插件生命周期做升级测试
```yaml ```yaml
services: services:
@@ -50,11 +50,13 @@ services:
# WordPress 服务 # WordPress 服务
wordpress: wordpress:
# 示例保留 latest 以便读者快速体验;生产环境请固定到经过测试的明确版本标签
image: wordpress:latest image: wordpress:latest
container_name: wordpress_app container_name: wordpress_app
restart: always restart: always
ports: ports:
- "8000:80" # 本机调试入口;生产环境请通过反向代理发布 HTTPS
- "127.0.0.1:8000:80"
environment: environment:
WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress WORDPRESS_DB_USER: wordpress
+10 -4
View File
@@ -29,14 +29,20 @@ $ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-pro
### 14.7.3 登录 ### 14.7.3 登录
创建管理员服务账户并获取登录令牌 为历史 Dashboard 创建只读服务账户并获取短期登录令牌不要为 Dashboard 创建 `cluster-admin` 绑定如果确实需要临时管理员权限应走单独的 break-glass 审批和审计流程
```bash ```bash
$ kubectl create sa dashboard-admin -n kubernetes-dashboard $ kubectl create sa dashboard-readonly -n kubernetes-dashboard
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin $ kubectl create clusterrole dashboard-readonly \
--verb=get,list,watch \
--resource=pods,deployments,services,configmaps,namespaces,nodes
$ kubectl create token dashboard-admin -n kubernetes-dashboard $ kubectl create clusterrolebinding dashboard-readonly \
--clusterrole=dashboard-readonly \
--serviceaccount=kubernetes-dashboard:dashboard-readonly
$ kubectl create token dashboard-readonly -n kubernetes-dashboard --duration=1h
``` ```
将输出的令牌粘贴到登录页面即可登录 将输出的令牌粘贴到登录页面即可登录
+2 -2
View File
@@ -298,8 +298,8 @@ docker push --disable-content-trust myregistry.com/myapp:v1.0.0
# 首次推送时会提示创建 Delegation Key # 首次推送时会提示创建 Delegation Key
# 密钥存储在 ~/.docker/trust/private/root_keys/ 和 ~/.docker/trust/private/tuf_keys/ # 密钥存储在 ~/.docker/trust/private/root_keys/ 和 ~/.docker/trust/private/tuf_keys/
# 查看签名信息 # 查看 DCT/Notary 信任数据;RepoDigests 只是内容摘要,不等于签名验证
docker inspect --format='{{.RepoDigests}}' myregistry.com/myapp:v1.0.0 docker trust inspect --pretty myregistry.com/myapp:v1.0.0
``` ```
### 18.6.4 供应链安全最佳实践 ### 18.6.4 供应链安全最佳实践
+4 -3
View File
@@ -362,13 +362,14 @@ services:
environment: environment:
POSTGRES_DB: myappdb POSTGRES_DB: myappdb
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres_password POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=en_US.UTF-8" POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=en_US.UTF-8"
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
- ./backups:/backups - ./backups:/backups
ports: ports:
- "5432:5432" # 只暴露给本机调试;生产环境优先不发布数据库端口
- "127.0.0.1:5432:5432"
networks: networks:
- backend - backend
restart: unless-stopped restart: unless-stopped
@@ -384,7 +385,7 @@ services:
depends_on: depends_on:
- postgres - postgres
environment: environment:
PGPASSWORD: postgres_password PGPASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
volumes: volumes:
- ./backups:/backups - ./backups:/backups
command: | command: |