The Inside Playbook

Ansible と Check Point を使いはじめる

2020年4月13日、寄稿者: Sumit Jaiswal

Ansible と Check Point を使いはじめる

先進的インフラストラクチャは大規模かつ複雑になっているため、ただシステムにセキュリティポリシーを定義できるだけでは十分ではありません。セキュリティポリシーをプログラミングによって適用したり、外部イベントに応答して変更を施したりする能力も要求されます。そのため、適切な措置をすばやく簡単に、一貫性のある方法で適用するためには、適切な自動化ツールが構成要素として欠かせません。

Check Point には Ansible Content Collection の認定済みモジュールがあり、これを使えば組織における応答および修復処理の自動化を支援し、DevOps モデルの導入によって運用効率を向上させてアプリケーションのデプロイを迅速化させることができます。このモジュールは Check Point セキュリティ管理 API* をベースとしており、Ansible Galaxy でも Check Point Collection for the Management Server のアップストリームバージョンの一部として提供されています。

運用フローは Check Point セキュリティ管理 GUI SmartConsole の API とまったく同じで、ログイン > セッションを取得 > 変更作業 > 公開 > ログアウトの手順で使用できます。

セキュリティの専門家はこれらのモジュールを活用して、セキュリティイベントの特定、検索、対応などのさまざまなタスクを自動化できます。さらに、Ansible セキュリティ自動化に含まれるその他のモジュールと組み合わせると、既存の Check Point インフラストラクチャを、複数のセキュリティテクノロジーを利用するオーケストレーションされたプロセスに統合できます。

DevOps の専門家は、自動化されたワークフローで同じモジュールを使用して、物理的および仮想の次世代ファイアウォールのデプロイとメンテナンスをサポートできます。

このような新しいモジュールの使い方をより深く理解していただくため、Ansible セキュリティ自動化のサンプル Playbook を公開している GitHub リポジトリにある、セキュリティ自動化コミュニティプロジェクトのコードを使用した一連のサンプルを紹介します。統合した結果を想定通りに機能させるには、この hotfix が適用された統合で Check Point R80 バージョンがサポートされていることが必要条件になります。

Ansible Check Point モジュール

cp_mgmt_* モジュールは Ansible 2.9 でリリースされました。現在、ドキュメントの latest ブランチにあります。

Check Point アプライアンスを管理するモジュールはたくさんあり、Check Point Mgmt Collection では 2 つのカテゴリに分類されています。

  • cp_mgmt_*:これらのすべてのモジュールは前述した API を使用して、post によって API オブジェクトを Check Point アプライアンスに登録します。
  • cp_mgmt_*_facts:すべてのファクトモジュールは同じ API を使用して、Check Point アプライアンスからファクトを取得します。

たとえば、ホストオブジェクト専用のモジュールを考えてみると、以下のようになります。

  • cp_mgmt_host:オブジェクトの作成、更新、削除など、Check Point デバイス上のホストオブジェクトを管理します。
  • cp_mgmt_host_facts:Check Point デバイス上のホストオブジェクトのファクトを取得します。

Ansible 2.8 には合計 9 個の checkpoint_* モジュールが導入されていますが、これらのモジュールは廃止されており、必要な場合を除き、Ansible 2.9 で導入された最新の cp_mgmt_* モジュールの使用を推奨します。

cp_mgmt_* モジュールの例:ホスト構成を実行する方法

これは、cp_mgmt_host モジュールを使用してホストを構成する方法の例です。

---
- hosts: check_point
  connection: httpapi
  tasks:
    - name: Create host object
	  cp_mgmt_host:
  	    color: dark green
  	    ipv4_address: 192.0.2.2
  	    name: New CP_MGMT Host 1
  	    state: present
  	    auto_publish_session: true

モジュール引数 auto_publish_sessionTrue に設定すると、Ansible の実行結果が Check Point アプライアンスで即座に反映されます。その後変更を publish で公開しますが、これは auto_publish_session が実行します。デフォルトでは、auto_publish_session の値は False です。このモジュール引数は、ユーザーが変更をタスクレベルで公開したい場合に使用できます。

ただし、変更を play 実行が終わってから公開するには、タスクを “n” 個実行した後、cp_mgmt_publish モジュールを play の最後に実行できます。すると行ったすべての変更が Check Point アプライアンスに反映されます。

Playbook を実行するには、ansible-playbook コマンドを使用します。

Check Point 構成が目的のとおりにうまく変更されたか確認するには、Check Point SmartConsole にログインして、[Network objects] > [Hosts] を確認します。次のように、新しいホストが一覧表示されます。

モジュールは状態を維持できるので (該当する場合)、Playbook を変更せずに再実行すると、OK というメッセージが返されるだけで、Check Point アプライアンスは何も変更されません。これは冪等性とも呼ばれています (Ansible Docs も参照してください)。

cp_mgmt_*_facts のサンプル:ホストのファクトを収集する方法

Check Point の facts モジュールによって、ネットワーク、アドレス、DNS ドメイン、ホストレコードなど、さまざまな Check Point オブジェクトにクエリを実行できます。

先ほどのサンプル Playbook で構成した host に関する情報を取得するための、Ansible Playbook スニペットを見てみましょう。

---
- hosts: check_point
  connection: httpapi
  tasks:
    - name: collect-host facts
	  cp_mgmt_host_facts:
  	    name: New CP_MGMT Host 1
	  register: cp_host
    - name: display host facts
	  debug:
  	    msg: "{{ cp_host }}"

以下の ansible-playbook コマンドで Playbook を実行します。

play の出力:クエリされたホスト名“New CP_MGMT Host 1” に関連するすべてのホストのファクト

上記の Playbook では、Check Point にクエリを実行してオブジェクト (この場合はホスト) に関する特定の情報を収集する方法を示しました。これらのファクトはこの後 Ansible play で使用して、アプライアンスまたはアプライアンスのグループを変化する可能性がある情報の一元化されたソースとして機能させることができます。Ansible の変数、ファクト、set_fact モジュールの詳細については、Ansible 変数のドキュメントを参照してください。

応答および修復のシナリオで Check Point モジュールを使用する方法

Ansible セキュリティ自動化は、SOC またはセキュリティチームが応答および修復作業において使用する多数のセキュリティテクノロジーとの相互運用性をサポートしています。

セキュリティ専門家が Ansible をセキュリティに対する自動化の共通言語として導入できるようサポートするため、すぐに使用してこれらのシナリオでの生産性を迅速に向上できる多数のロールを作成してきました。

これらのロールの一例が acl_manager です。Check Point NGFW などのサポート対象のテクノロジーで、IP や URL のブロックおよびブロック解除などのタスクを自動化するために使用できます。

acl_manager ロールを使用して Check Point で IP をブロックする方法 (参考:Check Point アプライアンスからの IP のブロック)

---
- hosts: checkpoint
  connection: httpapi
  tasks: 
   - include_role:
       name: acl_manager
       tasks_from: blacklist_ip
     vars:
       source_ip: 192.0.2.2
       destination_ip: 192.0.2.12
       ansible_network_os: checkpoint

ロールは、基盤のモジュール機能に手を加えることなく、共通するセキュリティタスクを抽象化して、特定の使用例をシームレスにサポートするために使用できます。

*Check Point 管理 API とその他の Check Point API は、Check Point API リファレンスで定義されています。

これ以外にも、Ansible を使用してサイバーセキュリティ業務に役立てる方法をご紹介しています。Ansible.com で Ansible セキュリティ自動化に関するページをご確認ください。



お問い合わせ・製品のご紹介

Red Hat Ansible Automationについてのお問い合わせは

ansible-jp@redhat.com

Red Hat Ansible Automation製品について

詳細はこちら

自動化と管理