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

    グレイログ

MongoDB Dockerとは何ですか?

MongoDB DockerはMongoDBによるNoSQLデータベースで、主に非構造化データを対象としており、Docker上のMongoDBインスタンスの軽量でスケーラブルな移植ソリューションとして顧客に提供されます。 Graylogには、デフォルトの設定ファイル、ユーザーデータ、環境変数、およびさらなる重要なデータの形でいくつかのメタデータが必要です。これらはGraylogを成功裏に動作させるために不可欠であるため、すべての必要なメタデータを保持するMongoDBが必要となります。 Dockerコンテナ内でMongoDBを使用することで、セットアップが容易になり、開発および本番環境の一貫性を確保し、アプリケーションのスケールと管理をより簡単にすることができます。

OpenSearch Dockerとは何ですか?

OpenSearch は分散型検索および分析エンジンであり、Elasticsearch をベースにしており、実際には OpenSearch Docker のコンテナ化バージョンです。 OpenSearchは、Graylog Docker構成におけるログデータのインデックス作成、保存、検索のためのインデックスです。 これは、Graylogがログを効率的に取り込み、クエリし、分析することを可能にする主要なコンポーネントです。

OpenSearchをDocker環境に統合してGraylogに使用すると、高いログデータの変換と迅速な検索機能を備えた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の3つのメインサービスを使用して集中ロギングソリューションスタックをセットアップします。 これらのサービスは、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は、Webインターフェースやログの取り込みに関連する他のプロトコルのために、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を作成し、テキスト、画像、メタデータなどのパラメータを使用してコンテンツを追加または編集できるPDF APIです。 また、複数の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)、アプリケーションは指定されたポートでローカルにアクセス可能です。 2つの環境変数が設定されています: HTTP_PORTS=8080はコンテナのHTTPポート設定であり、ENVIRONMENT=Developmentは開発環境です。 開発環境において、この構成は、ポート8080でアクセス可能なWebアプリケーションを実行しながら、Graylogを使用した効果的なログ管理を可能にします。

Graylog Docker(開発者のためのPDFセキュリティにおける動作): 図7 - Dockerコンテナ

IronSecureDocを使用したGraylogへのログイン

IronSecureDocの実際のログデータをSystem/Input機能を使用してGraylogに統合するには、以下の手順に従ってください:

  • 左のサイドバーで「システム」>「入力」をクリックします。
  • 入力タイプの下で、「GELF UDP」またはTCPが好ましい場合は「GELF TCP」をクリックします。 新しい入力を起動をクリックします。

    入力の設定:

  • タイトル: IronSecureDoc Logsのように、適切な説明的な名前を付けてください。
  • バインドアドレス: 任意のIPからログを受信するには 0.0.0.0 を追加するか、ローカルログの場合は 127.0.0.1 を使用します。
  • ポート: デフォルトで12201をGELFポートとして選択します。
  • 保存: 入力を有効にするために起動します。

    Graylog Docker(開発者向けPDFセキュリティの仕組み):図8 - IronSecureDocを使用したGraylog

    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を使用することで、Web、モバイル、および企業システムの開発者が開発するアプリケーションに、安全な印刷、効率的なPDFフォーマット、エラーハンドリングを簡単に統合できます。 IronSecureDocのライセンスに関する情報は、こちらをご覧ください。ライセンスページ. Iron Software の製品に関する詳細な設定情報については、ライブラリスイートを参照してください。ページ.

Kannaopat Udonpant

カンナパット・ウドンパント

ソフトウェアエンジニア

 LinkedIn

ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
グアカモーレDocker(開発者のためのPDFセキュリティの仕組み)
次へ >
immich Docker Compose(開発者向けの仕組み)