はじめに
Akamai Guardicore Segmentationを導入するためには、エージェントの導入が必要です。
数百台以上に導入するようなケースでは効率化のためにインストールを自動化していく必要があるため、今回はLinode Ansible Collectionを利用してAkamai Cloud Computingのインスタンスにエージェントをインストールする方法を紹介します。
Akamai Guardicore Segmentation とは
Akamai Guardicore Segmentationは、サーバーや端末にソフトウェアのエージェントを導入することにより、ネットワークをより細かく制限するマイクロセグメンテーションを実現することができるソリューションです。
エージェント型であるため、導入済みのネットワーク機器やオンプレミスやクラウドに分散したコンピューティングリソースなどの環境に左右されず統一したポリシーをすべての環境で導入できます。
ネットワーク全体を可視化することができ、異常なトラフィックを監視することで攻撃の可能性のあるエリアを特定し、迅速にランサムウェアの攻撃などへの対策を行うことができます。
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を対象としてインストールを行います。
適切な項目を選択し、「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
## 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を利用しています。
export LINODE_ACCESS_TOKEN=xxxxxxxxxx
direnv allow
community.general.linodeを利用して、Guardicore Agentをインストールする対象を[guardicore]と[ubuntu]とTagを付与しているインスタンスに絞っています。
インストール対象を変更したい場合には、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関連など開発者向けの記事を掲載しております。