mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
docs: harden Docker practice security examples
This commit is contained in:
@@ -21,7 +21,7 @@ wordpress/
|
||||
|
||||
### 11.8.2 编写 `compose.yaml`
|
||||
|
||||
这是一个生产可用的最小化配置:
|
||||
这是一个可运行的单机最小配置,不是完整生产安全基线。正式部署前应固定镜像版本、放在反向代理/TLS 后面、限制公开端口、配置备份与监控,并按 WordPress 与插件生命周期做升级测试。
|
||||
|
||||
```yaml
|
||||
services:
|
||||
@@ -50,11 +50,13 @@ services:
|
||||
# WordPress 服务
|
||||
|
||||
wordpress:
|
||||
# 示例保留 latest 以便读者快速体验;生产环境请固定到经过测试的明确版本标签
|
||||
image: wordpress:latest
|
||||
container_name: wordpress_app
|
||||
restart: always
|
||||
ports:
|
||||
- "8000:80"
|
||||
# 本机调试入口;生产环境请通过反向代理发布 HTTPS
|
||||
- "127.0.0.1:8000:80"
|
||||
environment:
|
||||
WORDPRESS_DB_HOST: db:3306
|
||||
WORDPRESS_DB_USER: wordpress
|
||||
|
||||
@@ -29,14 +29,20 @@ $ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-pro
|
||||
|
||||
### 14.7.3 登录
|
||||
|
||||
创建管理员服务账户并获取登录令牌:
|
||||
为历史 Dashboard 创建只读服务账户并获取短期登录令牌。不要为 Dashboard 创建 `cluster-admin` 绑定;如果确实需要临时管理员权限,应走单独的 break-glass 审批和审计流程。
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
将输出的令牌粘贴到登录页面,即可登录。
|
||||
|
||||
@@ -298,8 +298,8 @@ docker push --disable-content-trust myregistry.com/myapp:v1.0.0
|
||||
# 首次推送时会提示创建 Delegation Key
|
||||
# 密钥存储在 ~/.docker/trust/private/root_keys/ 和 ~/.docker/trust/private/tuf_keys/
|
||||
|
||||
# 查看签名信息
|
||||
docker inspect --format='{{.RepoDigests}}' myregistry.com/myapp:v1.0.0
|
||||
# 查看 DCT/Notary 信任数据;RepoDigests 只是内容摘要,不等于签名验证
|
||||
docker trust inspect --pretty myregistry.com/myapp:v1.0.0
|
||||
```
|
||||
|
||||
### 18.6.4 供应链安全最佳实践
|
||||
|
||||
@@ -362,13 +362,14 @@ services:
|
||||
environment:
|
||||
POSTGRES_DB: myappdb
|
||||
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"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
- ./backups:/backups
|
||||
ports:
|
||||
- "5432:5432"
|
||||
# 只暴露给本机调试;生产环境优先不发布数据库端口
|
||||
- "127.0.0.1:5432:5432"
|
||||
networks:
|
||||
- backend
|
||||
restart: unless-stopped
|
||||
@@ -384,7 +385,7 @@ services:
|
||||
depends_on:
|
||||
- postgres
|
||||
environment:
|
||||
PGPASSWORD: postgres_password
|
||||
PGPASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
|
||||
volumes:
|
||||
- ./backups:/backups
|
||||
command: |
|
||||
|
||||
Reference in New Issue
Block a user