はじめに

こんにちは、ENKです。

今回は「楽にかつ安全にシステムを運用したい」というテーマのもと、AWSクラウドのセキュリティに関するインフラ視点での対応についてお話しします。

セキュリティ対策は、情報システムを保護するために不可欠であり、それを実装し続けることでシステムを安全に保つことが重要です。攻撃者の手法を把握し、システムの特性に合わせた適切な防御策を講じるには、専門的な知識が必要になることが一般的ですが、AWSクラウドが提供するセキュリティサービスを利用することで、特別な専門知識がなくても、セキュリティ対策を実装し、運用することが可能になります。

本テーマでは、AWSクラウドのセキュリティサービスを活用して、環境構築時のみならず、日常の運用でもセキュリティを確保しつつ、効率的な方法についてお話ししたいと考えています。これにより、「楽にかつ安全にシステムを運用する」という目標を達成するための手法をご提案することが目的です。

目次

  1. 本記事の対象範囲
  2. 環境構築時に実施すべきこと
  3. 日々の運用で点検すべきこと
  4. まとめ

1.本記事の対象範囲

本記事では、AWS(Amazon Web Services)が提供するサービスを活用し、私の経験に基づいて、頻繁に実装する構成例でのセキュリティ対策を取り上げます。ここで挙げる構成例は現時点では一般的だと思われるため、多くの方に参考にしていただけると考えています。ただし、ここでは高度なセキュリティ対策については触れませんので、その点は予めご了承ください。

2.環境構築時に実施すべきこと

下表は、先に述べた構成例に従って、環境を構築する際のセキュリティ対策事項です。これらを適用することで、必要最低限の対策ができると思います。しかし、該当のサービスを有効化などの手間のかかる部分がありますが、Cloud Formationなどのテンプレートに組み込んで、再利用可能にしておけば、一貫した品質の環境を提供することができます。これらの準備が整っていれば、環境構築作業を簡略化できるはずです。

利用サービス

設定

解説

Management Console

「IAM でのセキュリティのベストプラクティス」に則り実装

IDおよび各サービスが利用する認証/認可機能は、システムの利用を開始する際に最初に設定する。これにより、セキュリティを確保し、適切なユーザアクセス管理を行う基盤を整えることができる。

Management Console

接続元IPアドレス制限を適用し、さらにスイッチロールを使用するログイン方式を実装

特定のIPアドレスからのみアクセスを許可し、必要な権限を持つユーザーが別のAWSアカウントの役割を一時的に引き受けられるようにすることで、セキュリティを高める

KMS

システム固有データを保存する領域にはカスタマーマスターキーを使用して暗号化

システムに固有のデータを保管する領域では、カスタマーマネージドキー(CMK)を使用してデータを暗号化する。これにより、ユーザーが独自に管理する鍵を使って、保存されるデータのセキュリティをより一層強化することができる。

CloudTrail

有効化

不正な操作が行われた場合などの追跡に利用する。CloudTrailはユーザーのアクションを監視し、ログを保管して、セキュリティ分析や監査、コンプライアンスの報告に活用することが可能。

Config

有効化

リソースの変更履歴と設定の変更を追跡する。AWS Configでは、管理ルールを定めることで、これらのルールに沿った状態を維持するようにリソースを監視し、ルールに違反する変更が発生した際にそれを検出して通知ができる。また、必要に応じて、ルールに沿った既知の良好な状態に復元することができる。

GuradDuty

有効化

完全マネージド型の脅威検出サービスで、アカウント及びワークロードの保護のために有効化する。GuardDutyは機械学習、異常検知、統合された脅威インテリジェンスフィードを利用して、不審なアクティビティや潜在的なセキュリティ脅威を自動的に検出し、アラートを発することができる。

SecurityHub

有効化

適用するセキュリティ基準として、AWSセキュリティのベストプラクティスを集約した「AWS基本セキュリティのベストプラクティス v1.0.0」と、センター・フォー・インターネット・セキュリティ(Center for Internet Security)が策定した「CIS AWS Foundations Benchmark v1.4.0」を基にした設定をする。また、当該基準を用いて検出された不適切な設定については、「CRITICAL」(致命的)および「HIGH」(重大)レベルのものは必ず対処することを強く推奨する。

CloudWatch

Logs機能を利用

ログの保存はセキュリティ対策の最も根本的な要素になる。AWSでは、多くのサービスのログがAmazon S3に保存されるよう設定されているが、CloudWatch Logsへの転送しかできないサービスも存在している。基本的にはAmazon S3にログを保存し、サービスの要件に応じてCloudWatch Logsを適切に利用することで、効果的なログ管理体制を整えることができる。

ECR

イメージプッシュ時の自動スキャン設定を有効化

AWS環境内でコンテナやミドルウェアの脆弱性スキャンを行う場合、Amazon ECR(Elastic Container Registry)内のスキャナーなどのサービスがこれに該当する。このツールは継続的な脆弱性管理を可能にし、セキュリティリスクを低減するため、適切な設定を施すことができる。

SSM(Patch Manager)

有効化

EC2などの仮想サーバーを使用する際には、その環境のパッチ管理を行う機能を有効化することが重要になる。Patch Managerは、EC2インスタンスやオンプレミスのサーバーを含むAWSおよび非AWS環境のオペレーティングシステムのパッチ適用を自動化、調整、管理するために利用できる。これを有効化しておくことで、セキュリティパッチを継続的に適用し、システムを最新の状態に保つことができ、脆弱性によるリスクを軽減することが可能になる。

SSM(Inventory)

有効化

EC2などの仮想サーバーを使用する際には、その環境での資産管理機能を有効化することも重要である。Inventory(インベントリ)は、AWS環境におけるサーバーインスタンスのソフトウェア、パッチ、アプリケーション設定等を自動で収集し、可視化する機能になる。このInventoryを活用することで、資産管理を効率化し、セキュリティやコンプライアンス状態を追跡・監査することが可能になる。これにより、インフラストラクチャ全体で一貫性を持たせた運用管理が行えるようになる。

ACM

利用
※インターネット公開システムの場合

Amazonが提供するDV(ドメイン検証)SSL/TLS証明書は、AWS Certificate Manager (ACM) を使用して発行される。これらの証明書は暗号化の強度が高く、またACMでは証明書の更新が自動で行われるため、手動での更新作業から解放されるメリットがある。そのため、セキュアな通信を求める際には、ACMを通じてAmazonが発行するDV証明書の利用ができる。これにより、WebサーバーやロードバランサーなどでのHTTPS通信を簡単にセットアップでき、安全性を保ちつつ運用の手間を省くことができる。

CloudFront

利用
※インターネット公開システムの場合

必要に応じて、CloudFront Functionsを使用して、接続元のIPアドレス制限や簡易認証などを実装する。この機能は、サーバーレスのエッジコンピューティング環境で実行され、CloudFrontのディストリビューションに構成を追加することで、リクエストやレスポンスの処理をカスタマイズするのに適している。非公開サイトを構築する際など、特定ユーザーのみにコンテンツのアクセスを許可したいシナリオに特に適しており、柔軟かつ効率的にセキュリティ制御を実装することが可能になる。

WAF

利用

AWSが提供するマネージドルールを使用する。OWASP Top 10などの一般的なセキュリティ脅威に対応する事前構成済みのセキュリティルールを利用することができる。これらのマネージドルールは、AWS WAF(Web Application Firewall)に組み込まれており、ウェブアプリケーションに対する一般的な攻撃や脅威から保護するための簡易かつ効果的な方法を提供する。これにより、ユーザーはセキュリティ対策を容易に実装でき、OWASP Top 10などの広く認識されたセキュリティリスクに基づいた保護を迅速に適用することが可能になる。

S3

利用

直接的なセキュリティ対策ではないものの、webサイトが攻撃を受けてダウンした際(5xx系のエラーが発生した場合)に用いるソーリーページとしての利用が可能。これは通常、Amazon S3を使って静的コンテンツを環境でデプロイする際に活用される。S3の基本的な用途はデータの保管ですが、これに変更不可能な設定を施すことで静的コンテンツの信頼性を向上させることができる。さらに、MFA Deleteやデータのバージョニング機能を活用することで、より堅牢なデータ保持を実現し、データの誤削除や不正な改変を防ぐことができる。

ALB

利用

AWS Certificate Manager(ACM)で発行されたSSL/TLS証明書をCloudFrontに適用し、エンドツーエンドの通信を保護する。また、AWSのアプリケーションロードバランサー(ALB)を使用する場合は、最新のALBセキュリティポリシーを選択しておくことで、最新のセキュリティスタンダードとプロトコルを使用した安全な通信を確保することができる。これらの組み合わせにより、ウェブアプリケーションに対する悪意のある攻撃を効果的にブロックし、信頼性の高いセキュリティ対策を提供することができる。

ECS

利用

CI/CD(Continuous Integration/Continuous Deployment)のような自動化されたデプロイメントパイプラインを活用することによって、セキュリティの統合を開発プロセスに容易に組み込むことを可能にする。CI/CDにセキュリティテストや脆弱性スキャンを組み込むことで、コード変更が行われるたびに自動的にリスク評価が実行され、潜在的な問題の早期発見と迅速な対応が可能になる。これによって、セキュリティの問題が顕在化した際の対処速度が向上し、継続的なセキュリティ保守と改善が実現します。セキュアコーディングの実践とCI/CDの適用は、開発プロセスの安全性を高め、信頼できるアプリケーションのリリースを可能にする効果的な戦略になる。

EC2

必要に応じて利用

従来の仮想マシンの運用と同様に一定の手間がかかるものの、商用パッケージの導入など特定の目的で使用する場合には欠かせないサービスになる。このサービスのセキュリティ対策としては以下のようなアプローチを取る。

  • オペレーティングシステムやミドルウェアのセキュリティ関連のパラメータや設定を適切に行うことで、システムの堅牢性を高める
  • AWS Marketplaceを活用して、信頼性の高いサードパーティ製のマルウェア対策ソフトウェアを調達し、インスタンスに導入することで、追加的なセキュリティ層を確立する。

このようにして、EC2上で動作するサーバーインスタンスのセキュリティを保つための適切な管理と対策を行う必要がある。これらのAWSの機能と外部ツールの組み合わせにより、運用の効率性と同時にセキュリティの強化を図ることができる

Aurora

利用

このサービスは、自動パッチ適用、ネットワークファイアウォールの設定、暗号化、認証と権限付与を管理するIAM(Identity and Access Management)ポリシーなど、多岐にわたるセキュリティと運用の機能をサポートしている。これらの既成の機能を利用することで、開発と運用の負担を軽減し、セキュリティ確保に必要な手間とコストを削減する。

SecurityGroup

利用

セキュリティグループは、ALB、ECS、EC2、Auroraなどのサービスを利用する際には、これらのセキュリティ設定が必須になる。ALBの背後に配置されたEC2インスタンスやECS上で動作するコンテナ、またはAuroraデータベースに対して、信頼できる特定のネットワークからのみアクセスを許可する安全な環境を構築するためにこれらのセキュリティ設定を用いる。

3.日々の運用で点検すべきこと

攻撃者による攻撃手法がますます多様化しているため、システム環境を構築した時点での対策は時間が経つにつれてその効果が低下し、リスクに晒される可能性があります。絶えず変化する脅威に対応するため、AWSクラウドのシステム運用において以下のような項目を定期的にチェックし、予防保守を実施することが推奨されます。

これらの予防保守作業をできるだけ軽減することが望ましいですが、EC2のような仮想サーバーの運用においては、手動での監視や確認が必要な領域が避けられません。とはいえ、AWSが提供する多くのツールやサービスを活用することで、必要な対応の自動検出やアラート設定が可能になるので大部分は低減することができます。例えば、AWS ConfigやAWS Systems Manager等を利用すれば、問題を即座に特定し、迅速に対応するフローを構築することができます。このような自動化ツールの利用は、管理の手間を大幅に削減し、安全性を維持しながら効率的に実現する手段になります。

項目

対応

解説

各サービスのテクノロジーアップデートの確認

手動確認

AWSの多くのマネージドサービスでは更新が自動で行われますが、SecurityHubやALBなど特定のサービスでは手動更新が必要な場合があります。これらのサービスにおいても、最新のセキュリティ基準とポリシーを維持することが重要で、更新情報を定期的にチェックし、最新状態に保つことが推奨されます。効率的にアップデートを管理するために、AWSの公式発表をチェックするとともに、Amazon SNSを活用してアップデート通知を自動で受け取るなどの対策や、マネージドアップデート機能を使用することが有効です。

パッチ情報の確認

自動適用

システム運用では、OS、ミドルウェア、アプリケーションのパッチ管理が重要です。これにより、コンポーネントの安全性と機能性を維持し、セキュリティ脆弱性を防ぎます。パッチ適用は定期的に検査し、必要なアップデートは早急に行うべきです。適切なパッチ管理がないと、システムは悪意ある攻撃に対して脆弱になります。ツールを使用した自動化とスケジューリング、例えばAWS Systems Managerを使って、予防保守を行い、システムの健全性維持とセキュリティ保護を強化することが推奨されます。効果的な運用管理には自動化、アラート、レポーティングのツールが必要です。

SecurityHubで検出されたリスクの撲滅

自動検出/
手動対応

セキュリティ対策では、最も重大(CRITICAL)と高(HIGH)レベルのリスクを排除することが必要です。システムの運用時には設定変更により新たなリスクが発生することがあるため、これらのリスクを検出し迅速に対応するためには予防保守と定期的な点検が欠かせません。セキュリティポリシーとコンプライアンス基準を継続的に見直し、適切に保っておく必要があります。脅威が検出された際にはすぐに対処策を立て実施し、これを文書化して運用手順を更新することでシステムセキュリティを維持・強化します。予防保守と定期的なリスク評価を行うことで、脆弱性を迅速に特定し、リスクを継続的に減少させることが可能となります。

商用ソフトウェアのサポート期日の確認

手動確認

システム運用において、ソフトウェアのサポート期限を見逃す問題がしばしば発生し、特に長期間運用されるシステムでは、導入時に最新だったソフトウェアも時間が経つとサポート終了になるリスクがあります。サポートが終了するとセキュリティアップデートがなくなり、攻撃に対処できなくなることが問題です。サポート終了の期日を監視し、適時に確認するためにカレンダーマーク、リマインダー設定、資産管理システムによる自動通知などが有効です。運用チームは、サポート期限情報を含めた重要な運用情報を明確に伝達し、ドキュメント化して属人化を防ぎ、知識を共有することが大切です。定期的なレビューとサポート期限に基づいたアクション計画の策定がセキュリティリスクを低減させる効果的な手段です。

4.まとめ

 「楽にかつ安全にシステムを運用する」をテーマに、ポイントを絞って内容をご紹介しましたが、AWSクラウドでは、提供されているサービスを活用することで、セキュリティ対策を格段に簡易化し、作業の負担を大幅に軽減することが可能です。

AWSのセキュリティおよび運用管理サービスを利用することで、自動化されたセキュリティモニタリング、継続的なコンプライアンスの評価、セキュリティイベントへの迅速な対応、定期的なパッチ適用の効率化など、システム運用を複雑化させがちな作業を簡素化できます。これによって、リソースの確保、リスクの軽減、アジリティの向上に集中することができるため、安心してシステムを運用するだけでなく、ビジネス上の競争力を保持することも可能になります。

 AWSの全体的なベストプラクティスとしては、セキュリティは設計段階から組み込んでいくこと、最小限のアクセス権限で運用すること、継続的にセキュリティ設定を評価および最適化することなどが含まれ、これらは「AWS Well-Architected Framework」で詳しく説明されています。常に進化するクラウドの可能性を活かしながら楽に安全な運用を目指していくことが、クラウド利用の鍵と言えるでしょう。