
openpolicyagent/demo-elasticsearch-opaElasticsearch-OPA插件Docker镜像是专为Elasticsearch设计的插件镜像,用于集成Open Policy Agent (OPA)——一款开源的通用策略引擎。该镜像简化了在Elasticsearch环境中部署和配置OPA插件的流程,通过统一的策略管理实现细粒度的访问控制,帮助用户基于自定义策略管控对Elasticsearch集群、索引、文档及字段的访问权限。
从镜像仓库拉取最新版本(具体标签需参考官方仓库):
bashdocker pull [镜像仓库地址]/elasticsearch-opa-plugin:[版本标签]
以下示例通过docker run启动Elasticsearch-OPA插件容器,需与Elasticsearch主容器联动:
bashdocker run -d \ --name elasticsearch-opa-plugin \ --link elasticsearch:elasticsearch \ # 关联Elasticsearch主容器 -e ELASTICSEARCH_HOST=elasticsearch \ # Elasticsearch主机地址 -e ELASTICSEARCH_PORT=9200 \ # Elasticsearch HTTP端口 -e OPA_SERVER_URL=[***] \ # OPA服务地址(若使用外部OPA) -v /path/to/policies:/policies \ # 挂载本地策略文件目录(可选) -p 9292:9292 \ # 插件监听端口(供Elasticsearch调用) [镜像仓库地址]/elasticsearch-opa-plugin:[版本标签]
通过docker-compose.yml编排Elasticsearch、OPA与插件容器:
yamlversion: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:[es-version] environment: - discovery.type=single-node ports: - "9200:9200" networks: - es-opa-network opa: image: openpolicyagent/opa:latest command: "run --server --log-level=info" ports: - "8181:8181" volumes: - ./opa-policies:/policies # 挂载OPA策略文件 networks: - es-opa-network elasticsearch-opa-plugin: image: [镜像仓库地址]/elasticsearch-opa-plugin:[版本标签] depends_on: - elasticsearch - opa environment: - ELASTICSEARCH_HOST=elasticsearch - ELASTICSEARCH_PORT=9200 - OPA_SERVER_URL=[***] - PLUGIN_LOG_LEVEL=info # 日志级别:debug/info/warn/error ports: - "9292:9292" networks: - es-opa-network networks: es-opa-network: driver: bridge
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
ELASTICSEARCH_HOST | Elasticsearch主节点主机地址(需与插件容器网络互通) | localhost |
ELASTICSEARCH_PORT | Elasticsearch HTTP端口 | 9200 |
ELASTICSEARCH_USER | Elasticsearch访问用户名(若启用认证) | - |
ELASTICSEARCH_PASSWORD | Elasticsearch访问密码(若启用认证) | - |
OPA_SERVER_URL | OPA服务地址(若使用外部OPA,格式:http://<host>:<port>) | http://localhost:8181 |
PLUGIN_LOG_LEVEL | 插件日志级别(可选:debug/info/warn/error) | info |
POLICY_REFRESH_INTERVAL | 策略自动刷新间隔(单位:秒,0表示禁用自动刷新) | 30 |
以下为简单的索引访问控制策略示例(保存为/policies/elasticsearch.rego并挂载到容器):
regopackage elasticsearch.authz # 允许用户"admin"访问所有索引 default allow = false allow { input.user == "admin" } # 允许用户"dev"只读访问以"dev-"前缀的索引 allow { input.user == "dev" input.action == "read" startswith(input.index, "dev-") }
策略文件需符合OPA Rego语法,具体规则需根据业务需求定义,可通过OPA API或文件挂载更新。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务