
awsでのコンテナサービスは、アプリケーションを動かすランタイムやライブラリを一元管理する事ができる機能です。管理の工数を減らすことができるため、awsの設計が複雑になればなるほどその恩恵を受けることができます。
しかし、一元管理しているため、セキュリティ上ブラックボックスになりがちなのがデメリットです。コンテナ設置の際には、専用の監視モニタリングを入れる事で万全のセキュリティ体制を敷くことができます。
関連記事:awsのec2を監視するのにcloudwatchだけで十分か
awsのコンテナとは
awsはクラウドを利用したデータ管理ツールです。オンプレミスとの接続や、既存システムとの連携など汎用性が高く、またセキュリティ面でもしっかりとした対策を施されていることから、大企業でも利用されているサービスです。
awsには各種機能が備わっていますが、最近注目を集めているのがコンテナ機能です。DockerやKubernetesなどの名称でお馴染みなのがコンテナです。コンテナが注目されている理由は、アプリケーションを動かすためのランタイムやエンジン、ライブラリやパッケージ、アプリケーションコードなどをすべてコンテナのなかにまとめて収納して一元管理することができる点です。
通常、アプリケーションを動かす環境はソースコードに加えてランタイムやライブラリを使用します。これらは、アプリケーションのローカル環境、テスト環境、本番環境など環境によってそれぞれ設定する事になるため、バージョン違いなどが原因で動作が正常に行われないことが多発します。
そのため、各環境と設定しているランタイムやライブラリのバージョンなどを常に一致させておく必要があります。参考情報>>AWS運用|CloudCREW
アプリケーションの数が多くなるとこの作業が繁雑になることもしばしば起こります。コンテナは環境に依存せずに一つにまとめておくことができるため、バージョン違いなどを気にせずにアプリケーションを管理する事ができます。
今まで管理が大変であった課題を解決できるサービスとして人気になっています。
コンテナを拡張するための関連サービス

コンテナは単純に一元管理する事で管理を簡単にしただけではありません。様々な関連サービスを展開しており、コンテナならではの拡張サービスを利用することができます。もっともおすすめな拡張機能はAmazon ECSです。
Amazon ECSはコンテナのオーケストレーションサービスを実行してくれるサービスで、例えば複数のインスタンスに対してコンテナを実行する事などが可能です。更に同時稼働数を制御し、ロードバランサーなどに接続するなど応用した活用方法もあります。
awsサービス同士を接続することも可能なので、コンテナの良さを最大限活用することができます。aws Fargateもおすすめの機能です。コンテナを実行するには仮想マシンが必要であり、EC2インスタンスを必要なだけ用意しておかなければなりません。
しかし、aws Fargateを利用するとコンテナを実行する環境運用を自動化し、すべて全自動で制御できるようになります。セキュリティパッチをあてたりする工数を削減することができます。コンテナを多用すればするほど、恩恵を受ける機能です。
他にもオンプレミスを接続している場合に活用できる拡張機能がAmazon EKSです。Amazon EKSはオンプレミスを含めたより高度な運用を実現するKubernetesをコントロールすることができます。
Kubernetes自体は設定の自由度や拡張性は高いものの、操作性が難しい難易度の高いツールですが、Amazon EKSを介することでより簡単に利用できるようになります。
コンテナのデメリット
便利な機能を持つコンテナですが、デメリットもあります。コンテナのメリットは、ランタイムやライブラリを含めアプリケーションを一元管理できる事ですが、反面、監視とセキュリティに対してブラックボックスになってしまうデメリットがあります。
コンテナ自体が一つのアプリケーションとして判断されてしまうため、障害などが発生したときに真の原因を瞬時に突き止めるのが難しくなります。また、拡張機能を用いている場合、何が原因で障害が発生したのかを把握できず、システム全体やアプリケーション全体を停止させざるを得ない状況になってしまいます。
コンテナの健全性とパフォーマンスを両立させるためには、コンテナ内部に対してセキュリティ対策を施す必要があります。
コンテナのセキュリティを高める監視機能
コンテナの稼働を監視するためには、Devopsワークフローを作成するのが最も効果的な方法です。Devopsワークフローは、セキュリティ、コンプライアンス、モニタリングを統合したセキュアなワークフローでコンテナの監視を強固なものにしてくれます。
ワークフロー導入の効果として、セキュリティポリシーと設定を検証することでデプロイのスピードをアップしたり、パフォーマンスに影響を与えずにランタイムの脅威を阻止できます。コンテナの中で何が起きているのかを詳細に把握する事で、障害の原因の追及やその対策を短時間で行う事ができます。
Devopsワークフローの仕組みは、awsのコンテナサービス上にセキュリティを埋め込み、コンテナライフサイクル全体でセキュリティを担保しています。そのためコンテナに仕込むことでインフラストラクチャ、サービス、アプリケーション全体を保護していることにもつながります。
コンテナの利用する場合には、Devopsワークフローを取り入れる事で、awsのセキュリティホールを作らずに運用の安全性を高めることができます。
コンテナの監視方法
コンテナの監視は通常のawsの監視と同様です。コンテナサービスの中を詳細に監視する仕組みが搭載されているだけなので、awsの監視機能で同時に監視する事ができます。もちろん、セキュリティ監視の拡張機能を用いる事で、セキュリティの監視だけではなく、設定した閾値を超えた段階で一定のアクションを起こすことも可能です。
インスタンス毎の監視やアプリケーション毎の監視を行うのと同様にコンテナ毎の監視の設定も可能であるため、特定のコンテナに異常が発見された時に該当のコンテナだけを停止するような制御も可能です。コンテナ単位で監視させることは、アプリケーション単位で監視するのと同じ意味を持つため、細かい制御ができるのが特徴です。
関連記事:awsでVPC nat gatewayの利用も監視もできる
awsのコンテナへのセキュリティ監視はDevopsワークフローがおすすめ
awsのコンテナはアプリケーションを稼働させる際に環境に依存せずにバージョン統一させることができるなど、便利な機能を備えているawsの機能です。便利さとは裏腹にセキュリティ上のブラックボックスになりやすいデメリットを持っています。
コンテナを利用する際にはDevopsワークフローを用いた監視システムを入れる事がセキュリティホールを作らない唯一の方法です。