隔离环境编辑

在受限或封闭网络中运行 Elastic Agent 时,您需要采取额外步骤来确保

  • Kibana 能够访问 Elastic 软件包注册表以下载软件包元数据和内容。
  • Elastic Agent 能够在升级期间下载二进制文件。

有关隔离 离线端点 的信息,请参阅 Elastic 安全解决方案文档。

在升级隔离环境中的所有组件时,建议您按以下顺序进行升级

  1. 升级 Elastic 软件包注册表。
  2. 升级 Elastic Stack,包括 Kibana。
  3. 升级 Elastic 工件注册表,并确保最新的 Elastic Agent 二进制文件可用。
  4. 升级本地 Fleet 服务器。
  5. 在 Fleet 中,对所有 Elastic Agent 发起升级。

为 Fleet 启用隔离模式编辑

在 Kibana 中设置以下属性以在 Fleet 中启用隔离模式。这允许 Fleet 智能地跳过在隔离环境中不应该尝试的某些请求或操作。

xpack.fleet.isAirGapped: true

使用代理服务器访问 Elastic 软件包注册表编辑

默认情况下,Kibana 从位于 epr.elastic.co 的公共 Elastic 软件包注册表下载软件包元数据和内容。

如果您可以通过网络网关将流量路由到 Elastic 软件包注册表的公共端点,请在 Kibana 中设置以下属性以使用代理服务器

xpack.fleet.registryProxyUrl: your-nat-gateway.corp.net

有关更多信息,请参阅 将代理服务器与 Elastic Agent 和 Fleet 配合使用

托管您自己的 Elastic 软件包注册表编辑

Elastic 软件包注册表软件包包含在 软件包验证 中使用的签名。默认情况下,Fleet 使用 Elastic 公共 GPG 密钥来验证软件包签名。如果您需要更改此 GPG 密钥,请使用 kibana.yml 中的 xpack.fleet.packageVerification.gpgKeyPath 设置。有关更多信息,请参阅 Fleet 设置

如果无法选择通过代理服务器路由流量,则可以托管您自己的 Elastic 软件包注册表。

可以使用其中一个可用的 Docker 镜像在本地部署和托管 Elastic 软件包注册表。这些 Docker 镜像包括 Elastic 软件包注册表和精选的软件包。

有不同的发行版可用

  • 8.14.2(推荐):docker.elastic.co/package-registry/distribution:8.14.2 - 从 Elastic Stack 8.14.2 发布的生产存储库中选择软件包。
  • lite-8.14.2:docker.elastic.co/package-registry/distribution:lite-8.14.2 - 从 Elastic Stack 8.14.2 发布的生产存储库中最常用软件包的子集。此镜像是在隔离环境中开始使用 Fleet 的理想选择。
  • production:docker.elastic.co/package-registry/distribution:production - 生产注册表中可用的软件包(https://epr.elastic.co)。
  • lite:docker.elastic.co/package-registry/distribution:lite - 生产注册表中可用的最常用软件包的子集(https://epr.elastic.co)。

要更新发行版镜像,请重新拉取镜像,然后重新启动 Docker 容器。

每个发行版都包含可供不同版本的 Elastic Stack 使用的软件包。Elastic 软件包注册表 API 公开了一个 Kibana 版本约束,允许过滤与特定版本兼容的软件包。

这些步骤使用标准 Docker CLI,但您可以根据此信息创建 Kubernetes 清单。这些镜像也可以与其他与 Docker 镜像兼容的容器运行时一起使用。

  1. 从公共 Docker 注册表拉取 Docker 镜像

    docker pull docker.elastic.co/package-registry/distribution:8.14.2
  2. 在本地保存 Docker 镜像

    docker save -o package-registry-8.14.2.tar docker.elastic.co/package-registry/distribution:8.14.2

    检查镜像大小以确保您有足够的磁盘空间。

  3. 将镜像传输到隔离环境并加载它

    docker load -i package-registry-8.14.2.tar
  4. 运行 Elastic 软件包注册表

    docker run -it -p 8080:8080 docker.elastic.co/package-registry/distribution:8.14.2
  5. (可选)您可以通过请求根路径来监控 Elastic 软件包注册表的运行状况

    docker run -it -p 8080:8080 \
        --health-cmd "curl -f -L http://127.0.0.1:8080/health" \
        docker.elastic.co/package-registry/distribution:8.14.2
将 Kibana 连接到您托管的 Elastic 软件包注册表编辑

使用 Kibana 配置中的 xpack.fleet.registryUrl 属性来设置您托管的软件包注册表的 URL。例如

xpack.fleet.registryUrl: "http://package-registry.corp.net:8080"
Elastic 软件包注册表的 TLS 配置编辑

您可以将 Elastic 软件包注册表配置为使用 TLS 在安全的 HTTPS 端口上侦听。

例如,假设在 /etc/ssl 中有一个密钥和证书对,您可以使用以下命令启动 Elastic 软件包注册表,使其在 443 端口上侦听

docker run -it -p 443:443 \
  -v /etc/ssl/package-registry.key:/etc/ssl/package-registry.key:ro \
  -v /etc/ssl/package-registry.crt:/etc/ssl/package-registry.crt:ro \
  -e EPR_ADDRESS=0.0.0.0:443 \
  -e EPR_TLS_KEY=/etc/ssl/package-registry.key \
  -e EPR_TLS_CERT=/etc/ssl/package-registry.crt \
  docker.elastic.co/package-registry/distribution:8.14.2
使用自定义 CA 证书编辑

如果您使用的是自签名证书或由自定义证书颁发机构 (CA) 颁发的证书,则需要在 Kibana 启动文件中的 NODE_EXTRA_CA_CERTS 环境变量中设置 CA 的文件路径。

NODE_EXTRA_CA_CERTS="/etc/kibana/certs/ca-cert.pem"

托管您自己的工件注册表以供二进制文件下载编辑

Elastic Agent 必须能够访问 Elastic 工件注册表才能在升级期间下载二进制文件。默认情况下,Elastic Agent 从 https://artifacts.elastic.co/downloads/ 下载工件。

要在隔离环境中提供二进制文件,您可以托管您自己的自定义工件注册表,然后将 Elastic Agent 配置为从中下载二进制文件。

  1. 在 Elastic Agent 可以访问的位置创建自定义工件注册表

    1. 从位于 https://artifacts.elastic.co/downloads/ 的公共 Elastic 工件注册表下载最新的发行版工件。例如,以下 cURL 命令下载升级在 Linux x86_64 上运行的 Elastic Agent 可能需要的所有工件。您可以将 x86_64 替换为 arm64 以获取 ARM64 版本。确切的列表取决于您使用的集成。确保还下载每个二进制文件对应的 sha512 和 PGP 签名 (.asc) 文件。这些文件用于在安装和升级期间进行文件完整性验证。

      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.14.2-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.14.2-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.14.2-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.14.2-linux-x86_64.tar.gz.asc
    2. 在您的 HTTP 文件服务器上,将工件分组到遵循 Elastic 工件注册表使用相同约定的目录和子目录中

      <source_uri>/<artifact_type>/<artifact_name>-<version>-<arch>-<package_type>

      其中 <artifact_type> 可以是 beats/elastic-agentbeats/filebeatfleet-serverendpoint-dev 等等。

      确保您有一个计划或自动化来在 Elastic Agent 的新版本可用时更新您的工件注册表。

  2. 将代理二进制文件下载位置添加到 Fleet 设置

    1. 打开 Fleet → 设置
    2. 代理二进制文件下载 下,单击 添加代理二进制文件源 以添加您的工件注册表的位置。有关这些设置的更多详细信息,请参阅 代理二进制文件下载设置。如果您希望所有 Elastic Agent 都从此位置下载二进制文件,请将其设置为默认值。
  3. 如果您的工件注册表不是默认值,请编辑您的代理策略以覆盖默认值

    1. 转到 Fleet → 代理策略 并单击策略名称进行编辑。
    2. 单击 设置
    3. 代理二进制文件下载 下,选择您的工件注册表。

      当您触发对注册到该策略的任何 Elastic Agent 进行升级时,二进制文件将从您的工件注册表而不是公共存储库下载。

不使用 Fleet? 对于独立的 Elastic Agent,您可以在 elastic-agent.yml 文件的 agent.download.sourceURI 下设置二进制文件下载位置,或者使用指定的 --source-uri 标志运行 elastic-agent upgrade 命令。