0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Akamai Cloud ComputingのインスタンスにGuardicore AgentをAnsibleでインストールする

Posted at

はじめに

Akamai Guardicore Segmentationを導入するためには、エージェントの導入が必要です。
数百台以上に導入するようなケースでは効率化のためにインストールを自動化していく必要があるため、今回はLinode Ansible Collectionを利用してAkamai Cloud Computingのインスタンスにエージェントをインストールする方法を紹介します。

Akamai Guardicore Segmentation とは

Akamai Guardicore Segmentationは、サーバーや端末にソフトウェアのエージェントを導入することにより、ネットワークをより細かく制限するマイクロセグメンテーションを実現することができるソリューションです。
エージェント型であるため、導入済みのネットワーク機器やオンプレミスやクラウドに分散したコンピューティングリソースなどの環境に左右されず統一したポリシーをすべての環境で導入できます。
ネットワーク全体を可視化することができ、異常なトラフィックを監視することで攻撃の可能性のあるエリアを特定し、迅速にランサムウェアの攻撃などへの対策を行うことができます。

image.png

Linode Ansible Collection とは

Linode Ansible Collectionは、Akamai Cloud ComputingのサービスをAnsibleで管理するためのモジュールやプラグイン集になります。
インスタンス、ボリューム、ドメイン、ファイアウォールなど、様々なLinodeリソースを作成・管理をすることが可能です。
ソースコードはGitHub上でオープンソースとして公開されており、利用する際にはAnsible Galaxyからインストールできます。
インベントリプラグインも含まれており、LinodeのインスタンスをAnsibleのインベントリとして動的に取得できます。

Ansibleを利用したGuardicore Agentのインストール

Ansible実行環境の前提条件

  • LinodeインスタンスのLabel名と一致しているhostnameでsshd_configを設定
  • Guardicore Agentをインストールしたいインスタンスを区別できるようにTags[guardicore],[ubuntu]と設定
  • Ansible versions: 2.9.10以降

インストール情報の準備

Akamai Guardicore Segmentationのダッシュボードから、Inventory、Installation Instructionsを選択し、インストール対象となるOSを選択します。
今回はUbuntuを対象としてインストールを行います。

image.png

適切な項目を選択し、「Run the following commands」の内容を控えておきます。

Guardicore Agentのインストール

Guardicore AgentをAnsibleでインストールする際のサンプルのplaybookを作成しましたので、今回はこちらを利用してインストールを行います。

Linode Ansible Collectionのインストール

インベントリーを動的に取得してAnsibleを実行するために、Linode Ansible Collectionをインストールします。

ansible-galaxy collection install linode.cloud

playbookをダウンロード

gitなどを利用してplaybookをダウンロードします。

git clone git@github.com:isss802/ansible-guardicore-deploy.git
cd ansible-guardicore-deploy

ディレクトリ構成の説明

./
├── ansible.cfg 
├── group_vars
│ └── guardicore_ubuntu.yml #vars新規作成
├── guardicore_deploy.yml #Guardicore Agentインストール
└── linode.yml #Linodeインスタンス情報の取得

Vault設定

インストールするクレデンシャル情報を暗号化するため、Vaultを利用します。

openssl rand -base64 32 > .vault-pass

インストールに必要なvarsを設定

Ansible Vaultを利用してファイルを暗号化します。

ansible-vault create group_vars/guardicore_ubuntu.yml

一番はじめに取得したインストール情報を利用してvarsを埋めます。

guardicore_ubuntu.yml
# Guardicore

## Base URL variable
gc_base_url: 'aggr-xxxxxxxxxxxx.cloud.guardicore.com'

## Install Profile
gc_ui_um_password: 'xxxxxxxxxxx'
gc_profile: 'xxxxxxxx'
gc_expected_checksum: 'xxxxxxxx'
gc_ssl_addresses: '{{ gc_base_url }}:443'
gc_cert_url: 'https://{{ gc_base_url }}/guardicore-cas-chain-file.pem'
gc_cert_path: '/tmp/guardicore_cas_chain_file.pem'
gc_get_install_file_cmd: 'wget --ca-certificate={{ gc_cert_path }} -O /tmp/guardicore_install.sh https://{{ gc_base_url }}'
gc_installation_cmd: 'sudo -E bash /tmp/guardicore_install.sh'

インストール対象のLinodeインスタンス情報を動的に取得するために、Tokenを設定します。
環境変数への読み込みにはdirenvを利用しています。

.envrc
export LINODE_ACCESS_TOKEN=xxxxxxxxxx
direnv allow

community.general.linodeを利用して、Guardicore Agentをインストールする対象を[guardicore]と[ubuntu]とTagを付与しているインスタンスに絞っています。
インストール対象を変更したい場合には、linode.ymlを編集します。

linode.yml
plugin: community.general.linode
keyed_groups:
  - key: tags
    separator: ''
groups:
  guardicore_ubuntu: "'guardicore' in (tags|list) and 'ubuntu' in (tags|list)"

インベントリが取得できているかどうか確認します。

ansible-inventory --graph

@all:
  |--@guardicore_ubuntu:
  |  |--linode-
  |  |--linode-
  |  |--linode-

Ansibleを実行します。

ansible-playbook guardicore_deploy.yml

正常に実行完了できたことを確認します。

PLAY RECAP ************************************************************************************************************************************************************************************
linode-   : ok=10    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
linode-   : ok=10    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
linode-   : ok=10    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
linode-   : ok=10    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
linode-   : ok=10    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

念の為に対象のインスタンスにSSHで接続してステータスを確認しても問題はありませんでした。

root@localhost:~# gc-agent status
[*] Guardicore agent modules:
[-]     Module 'controller' [Running]
[*] Agent Version: 
[*] IP Addresses:
[*] Guardicore Aggregation server(s):
[-] 		aggr-customer-xxxxxxxx.cloud.guardicore.com:443 - OK
[*] Installed modules: controller reveal
[*] Current user: root
[*] Hostname: localhost
[*] System uptime:  06:21:53 up 17:24,  2 users,  load average: 0.09, 0.13, 0.08
[*] Kernel version: 
[*] Kernel config hash:  

以上でインストールは完了です。

まとめ

Linode Ansible Collectionを利用することで、今回のGuardicoreのようなソフトウェアのインストールなどを自動化し、運用を効率化していくことができます。
Linode Ansible Collectionでは、インスタンス構築や変更なども行うことができるため、構成管理にも活用することができます。
Akamai Cloud Computingでは他にもDevOpsを加速させることができる、API、CLI、Terraformなども提供しておりますので、ぜひご活用していただければと思います。

Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談があれば、お気軽にお問い合わせください

関連記事

アカマイ・テクノロジーズ合同会社はQiitaでAkamai Cloud Computing Services関連など開発者向けの記事を掲載しております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?