Dockerを用いたEAA connectorの導入
Enterprise Application Accessについて
Akamai EAA (Enterprise Application Access) は、クラウドベースのゼロトラスト・ネットワーク・アクセス(ZTNA)ソリューションで、従来のVPNやファイアウォールを使わずに安全なリモートアクセスを実現します。従業員や契約者が企業の内部アプリケーションへアクセスする際、アプリケーションを非公開に保ちながら必要なアクセス権のみを提供し、悪意のあるアクセスを未然に防ぎます。
EAAでは、認証と認可のプロセスを細かく管理することで、ユーザーが認可されたリソースにのみアクセス可能となり、セキュリティリスクを大幅に低減します。また、クラウド上でアプリケーションアクセスを管理するため、インフラコストを削減し、迅速な導入と拡張が可能です。
今回はZTNAを実現するEAAの Connectorを、Dockerを用いて導入する方法についてご紹介します。
EAA Connectorについて
Akamai EAA Connectorは、EAAの一部として、企業のネットワーク内にあるアプリケーションとクラウド上のAkamaiプラットフォームを安全に接続する役割を担います。このコネクターは、リバースプロキシ方式を利用し、オンプレミスまたはクラウド内の内部アプリケーションをインターネットに直接公開することなく、安全なアクセスを可能にします。
従来のVPNとは異なり、EAA Connectorはゼロトラストモデルを採用しており、認証を受けたユーザやデバイスに対してのみ特定のリソースへのアクセスを許可するため、セキュリティリスクが大幅に軽減されます。管理者はリモートからアクセス権を細かく設定・管理でき、アクセスを許可されたユーザーに対してのみアプリケーションを提供するため、企業の内部システムが外部に露出することはありません。
また、EAA Connectorは高いデプロイの柔軟性を備えており、Akamaiが提供する仮想アプライアンスとして、VMware、AWS、Azure、GCP等といった各種プラットフォームで利用可能です。さらに、Dockerを使用することで、他のプラットフォームにも迅速に導入することができます。
今回導入するネットワーク構成
Akamai EAAにてZTNAを構成し、企業のオフィスや出先、自宅など、どの場所からでもインターネット経由で安全に企業内システムへアクセスが可能です。接続方式が一貫しているため、利用者は使いやすく、管理者にとっても運用が容易であり、高いセキュリティメリットがあります。
今回は、AkamaiのIaaSプラットフォーム「Akamai Cloud Computing」を使用し、Linodeインスタンス上にDockerをインストールして、EAA Connectorコンテナを展開します。この構成では、EAA Connectorがアウトバウンド接続でEAAクラウドと通信することで、外部からの直接接続を防ぎます。下図のAkamai Cloud Computing上に構築された、App1やApp2などの社内システムはVPC(仮想プライベートクラウド)を経由し、EAA Connectorからのみ接続が可能な設定とします。これにより、アプリケーションはインターネット上に直接公開されることなく安全に管理されます。
さらに、EAA Connectorおよび各アプリケーションには簡易的にファイアウォールを設定し、アクセスを制御します。なおAkamai Guardicore Segmentation(マイクロセグメンテーション)を適用することで、通信の細かい可視化とセキュリティ制御が可能になり、全体的なセキュリティ対策が一層強化できます。
Dockerを用いたEAA Connectorの導入
本記事では画面などを用いて流れをご紹介しますが、詳細な手順については以下をご参照ください。
https://techdocs.akamai.com/eaa/docs/install-a-docker-based-connector
Dockerコンテナの展開
Akamai Cloud Manager(https://cloud.linode.com/)にて、VPC、Firewall、Linodes(コンピューティングインスタンス)を作成します。
VPCはEAA Connector 、App1 、 App2を所属させるためサブネットを構成します。
Firewallは、Docker展開時に特定のIPアドレスからのSSHアクセスのみを許可する設定にします。展開後はSSHアクセスも削除し、必要な場合にのみ許可するか、WebコンソールであるLISHを使用して運用する方法でも問題ありません。
インスタンスを作成します。DockerはあらかじめMarketplaceに用意されており自動でインストールすることが可能なため、本機能を活用します。
Docker展開用のメニューが表示されるので、必要事項を記入します。
今回は大阪リージョンにて構築します。Planは、「Dedicated CPU 8GB」を選択します。
作成したVPCおよびFWを適用します。Public IPもアサインします。
EAA Connectorの作成
Akamai Control Center にてEAA Connectorの作成を行います。Package typeをDockerとし、EAA Connectorを作成します。
Docker用Connectorのセットアップ手順は、TechDocsで「STEP 2A」と「STEP 2B」に分かれています。今回は、HTTPアプリケーションに加えてトンネルタイプのクライアントアクセスアプリケーションも利用する想定のため、「STEP 2B」に従って進める必要があります。
Tunnel Type利用に必要なパッケージをConnectorインスタンスへインストールします。
$ sudo apt install libnetfilter-queue-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
(省略)
No VM guests are running outdated hypervisor (qemu) binaries on this host.
$
モジュールをロードします。
$ su -
# modprobe nfnetlink_queue && sudo echo "nfnetlink_queue" >> /etc/modules
# exit
logout
$
$ lsmod | grep nfnetlink_queue
nfnetlink_queue 24576 0
nfnetlink 20480 5 nfnetlink_queue,nft_compat,nf_conntrack_netlink,nf_tables
ダウンロードしたtar.gzイメージをインスタンスへSCPでアップロードしてDockerへロードします。
$ ls -l | grep tar
-rw-r--r-- 1 user01 user01 1057875240 Nov 10 01:58 19b99677-b8e8-4bd0-9051-a41f78515bba.tar.gz
$ gunzip 04eac314-caae-4d80-a3ca-702c90525b43.tar.gz
$ sudo docker load -i 19b99677-b8e8-4bd0-9051-a41f78515bba.tar
2573e0d81582: Loading layer 80.41MB/80.41MB
782459b8c5ec: Loading layer 57.7MB/57.7MB
0cf894de3542: Loading layer 1.162GB/1.162GB
(省略)
$
$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
akamai_docker_connector_19b99677-b8e8-4bd0-9051-a41f78515bba latest c3c9446cf832 15 hours ago 2.73GB
$
Image IDを書き留めます。
永続化のためにDockerボリュームを作成します。
$ sudo docker volume create docker-conn01
docker-conn01
$
EAA ConnectorのDockerコンテナを起動します。
$ sudo docker run --cap-add=NET_RAW --cap-add=NET_ADMIN --name docker-conn01 --restart=always --volume docker-conn01:/opt/wapp -v /lib/modules:/lib/modules -d [Image ID]
$
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4fe916c541a9 c3c9446cf832 "/bin/sh -c 'supervi…" 25 seconds ago Up 20 seconds 22/tcp docker-conn01
$
コンテナ IDを書き留めます。
コンテナが起動したら、再度Akamai Control Centerへ戻り確認すると、EAA ConnectorがREADYステータス(イイネアイコン)になりますのでクリックして展開を完了させます。
展開が完了したコンテナをイメージ化します。何かしら問題が発生しコンテナを再作成しないといけない場合のベースイメージになります。
$ sudo docker commit 4fe916c541a9 docker-conne01
$
これでEAA Connectorの準備が完了しました。
あとは、App1およびApp2用のEAAアプリケーションを作成することで、ZTNAを通じてアクセスできる環境が整います。EAAアプリケーションの作成についてはTechDocsをご参考ください。
なお、App1、App2は外部からアクセスの許可は不要のため、以下のようにInbound RulesをVPCのみ、もしくはConnectorのみに制限することも可能です。
まとめ
本記事ではAkamaiのZTNAソリューションであるEAA ConnectorをDockerで導入する方法について詳述しました。Akamai Cloud Computingを利用し、Linodeインスタンス上でDockerを展開し、セキュアなリモートアクセスを実現するためのステップを紹介しました。さらに、EAA Connectorの展開後には、VPCやファイアウォールを適切に設定することで、社内システムへのアクセスを安全に管理できます。ぜひAkamaiのソリューションを活用して、セキュリティレベルの高いシステム導入をご検討ください。
Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談がございましたら、お気軽にお問い合わせください。