繁体   English   中英

在 Gitlab CI 中以非 root 用户身份运行 Elasticsearch

[英]Running Elasticsearch within Gitlab CI as non-root user

从版本 6 开始,不能再以 root 用户身份启动 Elasticsearch。 在此之前,可以使用es.insecure.allow.root标志。 现在,出于安全原因,ES 团队决定完全禁用该选项。

当您使用基于 docker 执行器的 Gitlab CI 运行器并且您想在其中运行 Elasticsearch 时,就会出现问题。 CI 作业的script部分由 root 用户执行。 使用 docker 执行器时无法更改用户。 不允许以 root 身份启动 ES。 那么如何解决呢?

我没有找到答案,所以我将在这里发布一个。 我在我的 Ruby on Rails 项目中遇到了这个问题,所以这个例子将基于 RoR。 我不得不从 RSpec 和https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-extensions内部运行 elasticsearch 帮助我。 配置 gem 有点超出 scope 所以我将跳过这部分。

关键是在您用于 Gitlab CI 的 docker 映像中创建一个新的非 root 用户。 这意味着使用自定义图像或更新图像(如果您已经在使用自定义图像)。

以下是对我有用的示例。

Dockerfile

FROM ruby:2.5.1-stretch

# install elasticsearch
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-amd64.deb
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-amd64.deb.sha512
RUN shasum -a 512 -c elasticsearch-7.5.2-amd64.deb.sha512
RUN dpkg -i elasticsearch-7.5.2-amd64.deb

# adjust ownership and permissions to make it possible to run elasticsearch as a custom user
RUN chmod -R 750 /usr/share/elasticsearch/bin
RUN chmod -R 770 /var/log/elasticsearch
RUN chown elasticsearch:elasticsearch -R /usr/share/elasticsearch
RUN chown elasticsearch:elasticsearch -R /var/log/elasticsearch
RUN chown elasticsearch:elasticsearch -R /var/lib/elasticsearch
RUN chown elasticsearch:elasticsearch -R /etc/default/elasticsearch
RUN chown elasticsearch:elasticsearch -R /etc/elasticsearch

# create a user and add it to elasticsearch group
RUN useradd non_root -m
RUN usermod -a -G elasticsearch non_root

# select this user to make it run gitlab script section instead of root
USER non_root

.gitlab-ci.yml

image: your_image

your_job:
  script:
    # run elasticsearch here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM