织梦cms sql注入破解网站后台管理员账号密码,wordpress快速插图,怎样安装wordpress,建立网站站点的过程中正确的是前言我们在实际的docker运行环境下#xff0c;大都会遇到多用户的情况#xff0c;为了安全起见#xff0c;有些用户我们不想给予其全面的docker控制权限#xff0c;比如不想某些用户执行docker stop 以及docker rm 等危险指令#xff0c;当然我们可以从系统账号权限来控制…前言我们在实际的docker运行环境下大都会遇到多用户的情况为了安全起见有些用户我们不想给予其全面的docker控制权限比如不想某些用户执行docker stop 以及docker rm 等危险指令当然我们可以从系统账号权限来控制但docker在实际生产环节中大都以集群方式部署都是通过docker守护进程接口来操作docker系统控制实现起来略显麻烦还好docker官方提供了非常方便的扩展插件来实现对用户权限细粒度控制可细到只允许指定用户执行指定的docker命令本文详细介绍如何来实现。Docker 插件Docker 引擎允许用户使用第三方插件的形式扩展 Docker 功能。Docker 的插件类型分为以下三种大类Network plugins 网络插件可以提供容器间互联网络模型。Volume plugins 数据卷插件可以使 Docker 数据卷跨多个主机。Authorization plugins 验证插件可以提供基于权限的访问控制也是本文主要讲的插件比较出名的就是 Twistlock AuthZ Broker 。Twistlock AuthZ BrokerTwistlock AuthZ Broker 是一个直接运行在主机或容器中的 Dockers 授权插件,基于简单的用户审计策略可以过滤命令是否允许执行。源码地址https://github.com/deathmemory/authzAuthz Build编译需要依赖 go 语言。在 Ubuntu 下可直接执行 sudo apt-get install golang 进行安装。安装完成后需要配置 GOPATH 环境变量 GOPATH 是 golang 的扩展库目录。golang 会首先搜索标准库目录然后搜索 GOPATH 扩展库目录。所以开发时可以把非标准库都放在 GOPATH 目录下。配置好开发环境后就可以下载源码到本地执行以下命令就可以成功编译并 Build 成 Docker 镜像文件。$cd broker/$go build$mv broker ../authz-broker$cd ..$docker build .本地Build 源码修改在上面的 Build 中可以根据个人需要来修改一些配置比如修改虚拟机引用和生成文件。diff --git a/Dockerfile b/Dockerfileindex 2cfb355..c459421 100755--- a/Dockerfile b/Dockerfile -1,4 1,4 -FROM alpine:3.3FROM ubuntu:16.04MAINTAINER Liron Levin # Indicates basic authorization is enforced -13,6 13,7 ENV AUDITOR-HOOK VOLUME /var/lib/twistlock/policy.jsonVOLUME /run/docker/plugins/-ADD ./authz-broker /usr/bin/authz-brokerADD ./authz-broker /usr/bin/authz-dmCMD [/usr/bin/authz-dm]-CMD [/usr/bin/authz-broker]\ No newline at end of file项目依赖默认是引用了 github 上的库想要修改库里的代码实现自定义功能需要把引用改为本地引用然后再修改相应的功能即可。diff --git a/authz/basic.go b/authz/basic.goindex 0ed708d..042a904 100755--- a/authz/basic.go b/authz/basic.go -3,11 3,13 package authzimport (encoding/jsonfmtgithub.com/Sirupsen/logruslogrus_syslog github.com/Sirupsen/logrus/hooks/sysloggithub.com/docker/docker/pkg/authorizationgithub.com/howeyc/fsnotify- github.com/twistlock/authz/core authz/coreio/ioutillog/syslogosdiff --git a/broker/main.go b/broker/main.goindex 0526811..f3e76f0 100755--- a/broker/main.go b/broker/main.go -3,11 3,13 package mainimport (fmt osTwistlock AuthZ Broker 插件的使用安装插件Twistlock AuthZ Broker 可以在容器中直接安装也可以在Docker外的主机中安装。在容器中安装在容器中安装直接运行$ docker run -d --restartalways -v /var/lib/authz-broker/policy.json:/var/lib/authz-broker/policy.json -v /run/docker/plugins/:/run/docker/plugins twistlock/authz-broker在主机中安装在主机中安装需要编辑 docker 服务配置文件。sudo systemctl edit --full docker.service添加 authz 运行参数。# add plugin flagExecStart/usr/bin/dockerd --authorization-pluginauthz-broker重启服务# reload deamonsystemctl daemon-reloadsystemctl restart docker授权配置在路径 /var/lib/authz-broker/policy.json 下配置授权内容{name:policy_1,users:[alice],actions:[]}此处配置指明方案 policy_1 的用户 alice 可以执行的命令 actions 为所有命令。{name:policy_3,users:[alice,bob],actions:[container_create]}方案 policy_3 用户 alice 和 bob 可以执行的命令只有创建容器。检查结果允许结果docker versionClient:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built:OS/Arch: linux/amd64Server:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built:OS/Arch: linux/amd64#and log output: Sep 04 15:08:29 mj authz-broker[28646]: {allow:true,err:,fields.msg:action docker_version allowed for user by policy policy_1,level:info,method:GET,msg:Request,time:2016-09-04T15:08:2901:00,uri:/v1.24/version,user:}拒绝结果Client: Version: 17.03.1-ceAPI version: 1.27Go version: go1.7.5Git commit: c6d412e Built: Mon Mar 27 17:14:09 2017OS/Arch: linux/amd64Error response from daemon: authorization denied by plugin authz-broker: no policy applied (user: action: docker_version)错误处理no such file or directory这是 authz Dockerfile 引用的是 FROM alpine:3.3 这个系统没有 bash 改成 FROM ubuntu:16.04 就可以了。还有其他的情况导致这个报错32位64位程序和系统不兼容导致Dockerfile 指定的文件没有打包到 image 中可以用 docker run -it image/name [/bin/sh | /bin/bash] 进入image 环境看看里面的文件是否齐全。前期文章《docker容器的全面安全防护》《配置一个安全的docker宿主机》后续预告《docker镜像安全扫描器的实现》《docker最佳安全实践详解》《docker内容信任详解》《docker安全管理平台的架构设计》欢迎订阅关注我们