使用 IRONSECUREDOC

Graylog Docker(它如何为开发人员提供PDF安全性)

发布 2025年三月5日
分享:

什么是Graylog Docker?

Graylog是一个用于日志管理和分析的开源工具。 集中化日志记录是可能的,包括数据丰富以及对IT系统的实时洞察展示。 Graylog Docker镜像利用Docker的帮助,使在容器化环境中部署Graylog变得简单容易。 这简化了设置和扩展,使该工具在现代更受欢迎microservices日志管理中的基于架构。

破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。

通常,Graylog Docker镜像与其他容器一起使用,例如Elasticsearch,它将负责日志和执行搜索功能,以及存储元数据的MongoDB。 作为Docker Compose,所有这些组件都可以编排来创建一个完整的日志堆栈。 Graylog 可以使用多种协议,例如 Syslog、GELF(Graylog 扩展日志格式)和 Beats,来从服务器、应用程序、网络设备和云平台中摄取日志数据。

GrayLog Docker 要求

此外,要使用 Graylog Docker,我们需要在配置目录中包含以下 Docker 映像。

  • MongoDB

    OpenSearch

    Graylog

什么是MongoDB Docker?

MongoDB Docker 是由 MongoDB 提供的 NoSQL 数据库,主要用于非结构化数据,作为一种轻量级且可扩展的解决方案交付给客户,将 MongoDB 实例移植到 Docker 之上。 Graylog 需要一些元数据,这些元数据以默认配置文件、用户数据、环境变量和其他重要数据的形式存在,这对于成功运行至关重要,因此,MongoDB 发挥作用,存储所有必需的元数据。 在 Docker 容器中使用 MongoDB 可以使设置更容易,确保开发和生产环境的一致性,并更轻松地扩展和管理应用程序。

什么是OpenSearch Docker?

OpenSearch,是一个基于Elasticsearch的分布式搜索和分析引擎,实际上是OpenSearch Docker的容器化版本。 OpenSearch 是一种用于在 Graylog Docker 配置中索引、存储和搜索日志数据的索引。 它是允许 Graylog 高效摄取、查询和分析日志的主要组件。

当 OpenSearch 集成到用于 Graylog 的 Docker 环境中时,它可以很好地与 Graylog 服务器配合使用,处理大量日志数据的转换和快速搜索功能。 OpenSearch Docker 通过在容器内运行搜索引擎简化了后端部署和管理,提供了可移植性、可扩展性和配置的便利。

安装 Graylog 和其他 Docker 组件

使用以下代码创建一个 docker-compose 文件,以帮助存储配置数据。 并将其命名为 docker-compose.yml。

version: '3'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: "mongo:6.0.18"
    ports:
      - "27017:27017"   
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "mongodb_data:/data/db"  
  opensearch:
    image: "opensearchproject/opensearch:2.15.0"
    environment:
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "bootstrap.memory_lock=true"
      - "discovery.type=single-node"
      - "action.auto_create_index=false"
      - "plugins.security.ssl.http.enabled=false"
      - "plugins.security.disabled=true"
      # Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a Linux device via:
      # tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom 
 head -c${1:-32}
      - "OPENSEARCH_INITIAL_ADMIN_PASSWORD=+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M"
    ulimits:
      memlock:
        hard: -1
        soft: -1
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9203:9200"
      - "9303:9300"    
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "opensearch:/usr/share/opensearch/data"  
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    hostname: "server"
    image: "graylog/graylog-enterprise:6.0"
    # To install Graylog Open: "graylog/graylog:6.0"
    depends_on:
      mongodb:
        condition: "service_started"
      opensearch:
        condition: "service_started"
    entrypoint: "/usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh"
    environment:
      GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id"
      GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
      # To make reporting (headless_shell) work inside a Docker container
      GRAYLOG_REPORT_DISABLE_SANDBOX: "true"
      # CHANGE ME (must be at least 16 characters)!
      GRAYLOG_PASSWORD_SECRET: "somepasswordpepper"
      # Password: "admin"
      GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://127.0.0.1:9000/"
    ports:
      # Graylog web interface and REST API
      - "9000:9000/tcp"
      # Beats
      - "5044:5044/tcp"
      # Syslog TCP
      - "5140:5140/tcp"
      # Syslog UDP
      - "5140:5140/udp"
      # GELF TCP
      - "12201:12201/tcp"
      # GELF UDP
      - "12201:12201/udp"
      # Forwarder data
      - "13301:13301/tcp"
      # Forwarder config
      - "13302:13302/tcp"
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "graylog_data:/usr/share/graylog/data/data"
      - "graylog_config:/usr/share/graylog/data/config"
      - "graylog_journal:/usr/share/graylog/data/journal"  
networks:
  graylog:
    driver: "bridge"
volumes:
  mongodb_data:
  opensearch:
  graylog_data:
  graylog_config:
  graylog_journal:
version: '3'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: "mongo:6.0.18"
    ports:
      - "27017:27017"   
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "mongodb_data:/data/db"  
  opensearch:
    image: "opensearchproject/opensearch:2.15.0"
    environment:
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "bootstrap.memory_lock=true"
      - "discovery.type=single-node"
      - "action.auto_create_index=false"
      - "plugins.security.ssl.http.enabled=false"
      - "plugins.security.disabled=true"
      # Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a Linux device via:
      # tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom 
 head -c${1:-32}
      - "OPENSEARCH_INITIAL_ADMIN_PASSWORD=+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M"
    ulimits:
      memlock:
        hard: -1
        soft: -1
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9203:9200"
      - "9303:9300"    
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "opensearch:/usr/share/opensearch/data"  
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    hostname: "server"
    image: "graylog/graylog-enterprise:6.0"
    # To install Graylog Open: "graylog/graylog:6.0"
    depends_on:
      mongodb:
        condition: "service_started"
      opensearch:
        condition: "service_started"
    entrypoint: "/usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh"
    environment:
      GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id"
      GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
      # To make reporting (headless_shell) work inside a Docker container
      GRAYLOG_REPORT_DISABLE_SANDBOX: "true"
      # CHANGE ME (must be at least 16 characters)!
      GRAYLOG_PASSWORD_SECRET: "somepasswordpepper"
      # Password: "admin"
      GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://127.0.0.1:9000/"
    ports:
      # Graylog web interface and REST API
      - "9000:9000/tcp"
      # Beats
      - "5044:5044/tcp"
      # Syslog TCP
      - "5140:5140/tcp"
      # Syslog UDP
      - "5140:5140/udp"
      # GELF TCP
      - "12201:12201/tcp"
      # GELF UDP
      - "12201:12201/udp"
      # Forwarder data
      - "13301:13301/tcp"
      # Forwarder config
      - "13302:13302/tcp"
    restart: "on-failure"
    networks:
      - graylog
    volumes:
      - "graylog_data:/usr/share/graylog/data/data"
      - "graylog_config:/usr/share/graylog/data/config"
      - "graylog_journal:/usr/share/graylog/data/journal"  
networks:
  graylog:
    driver: "bridge"
volumes:
  mongodb_data:
  opensearch:
  graylog_data:
  graylog_config:
  graylog_journal:
Private version:
  #MongoDB: https: 'hub.docker.com/_/mongo/
	  #Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a Linux device via:
	  #tr -dc A-Z-a-z-0-9_@#% Xor -_=+ < /dev/urandom
"3"c services: mongodb: image: "mongo:6.0.18" ports: - "27017:27017" restart: "on-failure" networks: - graylog volumes: - "mongodb_data:/data/db" opensearch: image: "opensearchproject/opensearch:2.15.0" environment: - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g" - "bootstrap.memory_lock=true" - "discovery.type=single-node" - "action.auto_create_index=false" - "plugins.security.ssl.http.enabled=false" - "plugins.security.disabled=true" head - ReadOnly Property c$() As
	1:-32
End Property
  #Graylog: https: 'hub.docker.com/r/graylog/graylog/
	#To install Graylog Open: "graylog/graylog:6.0"
	  #To make reporting (headless_shell) work inside a Docker container
	  #CHANGE ME (must be at least 16 characters)!
	  #Password: "admin"
	  #Graylog web interface and REST API
	  #Beats
	  #Syslog TCP
	  #Syslog UDP
	  #GELF TCP
	  #GELF UDP
	  #Forwarder data
	  #Forwarder config
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'- "OPENSEARCH_INITIAL_ADMIN_PASSWORD=+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M" ulimits: memlock: hard: -1 soft: -1 nofile: soft: 65536 hard: 65536 ports: - "9203:9200" - "9303:9300" restart: "on-failure" networks: - graylog volumes: - "opensearch:/usr/share/opensearch/data" graylog: hostname: "server" image: "graylog/graylog-enterprise:6.0" depends_on: mongodb: condition: "service_started" opensearch: condition: "service_started" entrypoint: "/usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh" environment: GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id" GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000" GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200" GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog" GRAYLOG_REPORT_DISABLE_SANDBOX: "true" GRAYLOG_PASSWORD_SECRET: "somepasswordpepper" GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" GRAYLOG_HTTP_EXTERNAL_URI: "http://127.0.0.1:9000/" ports: - "9000:9000/tcp" - "5044:5044/tcp" - "5140:5140/tcp" - "5140:5140/udp" - "12201:12201/tcp" - "12201:12201/udp" - "13301:13301/tcp" - "13302:13302/tcp" restart: "on-failure" networks: - graylog volumes: - "graylog_data:/usr/share/graylog/data/data" - "graylog_config:/usr/share/graylog/data/config" - "graylog_journal:/usr/share/graylog/data/journal" networks: graylog: driver: "bridge" volumes: mongodb_data: opensearch: graylog_data: graylog_config: graylog_journal:
$vbLabelText   $csharpLabel

这个 Docker Compose 配置文件将设置一个集中的日志解决方案堆栈,包含三个主要服务:MongoDB、OpenSearch 和 Graylog。 这些服务通过一个名为 Graylog 的共享桥接网络互相连接。

MongoDB在此使用图像mongo:6.0.18作为元数据存储; 它将数据持久化在卷 mongodb_data 中并公开端口 27017。OpenSearch 使用镜像 opensearchproject/opensearch:2.15.0,这是一种日志索引和存储引擎;环境变量将应用程序配置为单节点安装,禁用安全插件,用于开发、内存优化、密码保护,数据持久化在卷 OpenSearch 中并公开端口 9203 和 9303。

Graylog 设置运行在上述 Docker Compose 文件中提到的 Graylog/Graylog-enterprise:6.0 镜像上。它在这里被用作一个中央日志接口。 要运行,需要 MongoDB 和 OpenSearch。 这些用于配置节点、加密密码和创建外部URI。 Graylog打开了多个端口,例如9000,用于网络界面和其他与日志摄取相关的协议。 这样做时,它会将数据、配置、默认文件和日志保存在相应的卷中。 这确保了容器在发生故障时重新启动,是可靠日志记录生态系统的核心。

运行组合使用up命令以下载所有映像并创建容器:

docker-compose up

Graylog Docker(为开发人员提供的PDF安全性工作原理):图2 - Docker Compose

安装完成后,我们现在可以使用以下URL http://localhost:9000/ 和默认凭证登录。

Graylog Docker(开发者如何用于PDF安全):图3 - Graylog登录

以下是登录后的Graylog仪表板页面。

破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。

什么是 IronSecureDoc?

IronSecureDoc是一个文档管理和安全工具,利用高级加密、复杂的PDF处理和数字签名。 它为公司和开发人员提供了顺畅的访问,并允许更轻松地处理PDF文档,而无需任何直接或间接依赖。 如果其功能使开发人员能够以编程方式自动创建、上传、操作和保护 PDF 文件和文档,则可以称其为一种进取的 PDF API。

Graylog Docker(如何为开发人员使用 PDF 安全性):图 5 - IronSecureDoc:PDF 安全性和合规性服务器

IronPDF 是一个 PDF API,它允许从任何类型的数据输入创建 PDF,并通过文本、图像或元数据等参数添加或编辑内容。 它还具有合并多个PDF、创建合成文件、拆分文档,甚至添加评论、突出显示或水印以进行注释的功能。

安装IronSecureDoc

您可以使用下面提供的存储库在命令提示符或打开的终端窗口中使用以下命令获取IronSecureDoc的Docker镜像。

docker pull ironsoftwareofficial/ironsecuredoc

Graylog Docker(开发人员如何为PDF安全性工作):图6 - IronSecureDoc

使用 Graylog 运行 IronSecureDoc

docker container run -dit --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 --rm -p 8080:8080 -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest

此 Docker 命令使用 GELF 日志驱动程序以分离的交互模式从 ironsoftwareofficial/ironsecuredoc:latest 镜像启动一个容器(-dit)并将容器日志转发到监听地址为 udp://127.0.0.1:12201 的 Graylog 服务器。当它结束时,--rm 标志会自动删除该容器。

由于容器将主机上的端口8080映射到容器内部的端口8080(-p 8080:8080)该应用程序可以在指定端口上本地访问。 设置了两个环境变量:HTTP_PORTS=8080,这是容器的HTTP端口配置,ENVIRONMENT=Development,这是开发环境。 在开发环境中,该配置允许使用Graylog进行有效的日志管理,同时执行可通过8080端口访问的Web应用程序。

Graylog Docker(开发人员如何为 PDF 安全性工作):图 7 - Docker 容器

使用IronSecureDoc登录Graylog

要使用系统/输入功能将IronSecureDoc的实际日志数据集成到Graylog中,请按照以下步骤操作:

  • 在左侧边栏中点击系统 > 输入。
  • 在输入类型下,如果偏好 TCP,请点击 GELF UDP 或 GELF TCP。 点击启动新输入。

    设置输入:

  • 标题:为其提供一个好的描述性名称,例如 IronSecureDoc Logs。
  • 绑定地址:添加 0.0.0.0 以接收来自任何 IP 的日志,或使用 127.0.0.1 以接收本地日志。
  • 端口:默认选择12201作为GELF端口。
  • 保存:然后启动以启用输入。

    Graylog Docker(开发人员如何使用它进行PDF安全):图8 - Graylog与IronSecureDoc

    如果IronSecureDoc有一个网页接口,请在浏览器中使用指定端口打开服务器的IP地址,例如:http://:8080。完成应用程序所需的任何初始设置。

    以下是 IronSecureDoc 的 Web 界面和 REST API:

    Graylog Docker(如何为 PDF 安全性工作:图 9 - IronSecureDoc Web 接口)

使用IronSecureDoc加密PDF

使用类似 Curl 或 Postman 的工具向 IronSecureDoc API 发送加密请求。 例如

curl -X 'POST' \
  'http://localhost:8080/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'

这将发布到IronSecureDoc API我们甚至可能想请求一个权限密码,用用户密码来加密请求到一个文档。

上述操作将记录在所有的ironsecuredoc容器操作中。 并生成指标。

Graylog Docker(开发人员如何使用 PDF 安全性):图 10 - 加密 PDF

结论

与Graylog的集成为您带来了强大的日志记录和监控解决方案,可以实现集中管理,并提供对加密活动和应用程序行为的实时洞察。 它可以利用Graylog在搜索、警报和可视化方面的强大功能,更高效地跟踪IronSecureDoc日志,实时识别问题,并确保文档的无缝和安全处理。 将IronSecureDoc与Graylog集成增强了操作透明度,提高了故障排除能力,并加强了整体系统可靠性,使其成为安全和高效日志管理的重要补充。

它可以进行全面审计,保证最高安全性。 现在,使用IronSecureDoc REST API,安全打印、高效的PDF格式和错误处理可以轻松集成到由网页、移动和企业系统开发人员开发的应用程序中。 有关IronSecureDoc许可证的信息,请访问许可页面. 有关 Iron Software 产品的详细配置信息,请参阅库套件页码.

Kannaopat Udonpant

坎那帕·乌东攀

软件工程师

 LinkedIn

在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
Guacamole Docker(开发人员如何通过PDF安全性进行操作)
下一步 >
immich Docker Compose(它对开发人员的作用)

准备开始了吗? 版本: 2024.10 刚刚发布

免费下载查看许可证 >