使用 IRONSECUREDOC

Graylog Docker(它如何為開發人員提供PDF安全性)

發佈 2025年3月5日
分享:

什麼是 Graylog Docker?

Graylog是一個開源工具,用於日誌管理和分析。 集中式日誌記錄是可能的,包括資料增強和對 IT 系統的即時見解呈現。 Graylog Docker 映像透過 Docker 的幫助,使在容器化環境中部署 Graylog 變得容易。 這簡化了設置和擴展,使該工具對於現代更加受歡迎微服務日誌管理中的基於架構。

損壞的圖片 從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 資料庫,主要用於非結構化數據,作為輕量級且可擴展的解決方案,通過 Docker 提供給客戶的 MongoDB 實例。 Graylog 需要一些元數據,以預設配置文件、用戶數據、環境變量和其他重要數據的形式,這對於成功運行 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,用於 Web 介面及其他與日誌攝入相關的協定。 這樣處理可以在相應的卷中保存資料、配置、預設檔案和日誌。 這確保容器在失敗時重啟,是可靠日誌系統的核心。

使用 up 命令運行 compose,以下載所有映像並創建容器:

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 中,請按照以下步驟操作:

  • 在左側欄點擊系統 > 輸入。
  • 在輸入類型下,點擊 GELF UDP 或 GELF TCP(如果偏好使用 TCP)。 點擊啟動新輸入。

    設定輸入:

  • 標題:為它給予一個好的描述性名稱,例如 IronSecureDoc Logs。
  • 綁定地址:新增 0.0.0.0 接收來自任何 IP 的日誌或使用 127.0.0.1 接收本地日誌。
  • 埠:預設選擇12201作為GELF埠。
  • 儲存:然後啟動以啟用輸入。

    Graylog Docker(開發者如何為 PDF 安全性使用):圖 8 - 使用 IronSecureDoc 的 Graylog

    如果 IronSecureDoc 有一個網頁介面,請在您的瀏覽器中打開伺服器的 IP 地址和指定的端口,例如:http://:8080。完成應用程式所需的任何初始設置。

    以下是 IronSecureDoc 網頁介面和 REST API:

    Graylog Docker(開發者的 PDF 安全性工作原理):圖 9 - IronSecureDoc 網頁介面

使用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產品的詳細配置信息,請參考程式庫套件頁面.

里根普恩

里根普恩

軟體工程師

 LinkedIn

Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
Guacamole Docker(開發人員如何使用它來進行 PDF 安全性)
下一個 >
immich Docker Compose(開發人員如何運作)