AWSのセキュリティは、クラウドに移行する上でもっとも重要なトピックです。本記事では、セキュアなITインフラを構築するためのAWS 設計原則を初心者向けに解説します。
こんな方におすすめ
- クラウドに自社のデータを置くのは不安だがクラウドに移行したい
- AWSのセキュリティがどうなっているか知りたい
ネクストはこれまで、500社を超えるお客様に技術で支援してきました。お客様の課題として多いのが、AWSを導入したいが社内にクラウド人材がいない、ITコストを抑えたいがノウハウがない、という声です。
むやみにAWSを導入する前に、まずはクラウドやAWSについての基礎を学習し、正しい知識を得ることが大切です。これからAWS導入をはじめたいと考えている方は、ぜひご一読ください。 →AWS導入支援はこちら
設計原則
AWSの公式ページ「セキュリティ – AWS Well-Architected フレームワーク」には7つの設計原則が紹介されており、それをなぞるようですが、本サイトの主旨にしたがい、初心者にわかりやすくクラウドのセキュリティについて解説します。
次に、クラウドでのセキュリティの7 つの設計原則を挙げます。
- 強力なアイデンティティ基盤の実装
- トレーサビリティの実現
- 全レイヤーでセキュリティを適用する
- セキュリティのベストプラクティスを自動化する
- 伝送中および保管中のデータの保護
- データに人の手を入れない
- セキュリティイベントに備える
すべてのクラウドコンピューティングサービスを利用する企業はこの設計原則にしたがってインフラを設計し、構築すべきでしょう。以降は7つの設計原則について解説します。
強力なアイデンティティ基盤の実装
最小権限の原則を実装し、役割分担を徹底させ、各 AWS リソースとの通信において適切な認証を実行します。アイデンティティ管理を一元化し、長期にわたる静的な認証情報に依存しないようにすることを目的とします。
これはAWSのユーザー管理ツール IAM(アイアム、Identity and Access Management)を通じて、利用者の権限を最小に留めることでそれぞれの役割を明確に定めること、二段階認証(MFA)などを義務化することの重要性を示すセクションです。それぞれが意味することは次のようになります。
- 最小権限の原則: 各ユーザーに必要最低限のアクセス権限のみを付与することで、セキュリティリスクを最小限に抑えます。
- 役割分担の徹底: チームや個人が特定のタスクやリソースへのアクセスを担当することで、不正アクセスや誤操作のリスクを減らします。
- 適切な認証の実行: AWSリソースへのアクセスには、適切な認証手段を用いて安全性を確保します。これには、マルチファクタ認証(MFA)の利用が含まれます。
- アイデンティティ管理の一元化: ユーザーのアイデンティティ(認証情報)とアクセス権限を、権限管理ツールであるIAMを通じて一元管理することで、管理の複雑性を軽減し、セキュリティを強化します。
- 静的な認証情報に依存しない: 長期間使用される静的なパスワードやキーに依存せず、可能な限り動的な認証情報を利用することで、セキュリティを高めます。
トレーサビリティの実現
ご使用の環境に対して、リアルタイムで監視、アラート、監査のアクションと変更を行うことができます。ログとメトリクスの収集をシステムに統合して、自動的に調査しアクションを実行します。
AWSのクラウド内にあるシステムをリアルタイムで監視・ロギング・アラート設定・調査を自動化することで、セキュリティインシデントをなるべく早く検知することの重要性を示すセクションです。それぞれが意味することは次のようになります。
- リアルタイム監視: AWS環境内での活動をリアルタイムで監視し、問題が発生した場合には速やかに対応できる体制を整えます。
- アラートと監査: システムに異常が発生した際にはアラートを発し、不正アクセスや誤操作などのセキュリティインシデントが発生した場合に備えて、監査機能を設けることで、問題の発見と対処を迅速に行えます。
- ログとメトリクスの収集: システム内で発生する全てのアクションと変更に関するログを収集し、パフォーマンス指標やその他の重要なメトリクスを統合します。これにより、システムの健全性とセキュリティの状態を継続的に把握できます。
- 自動化された調査とアクション実行: 収集したデータを利用して、問題の自動的な識別と対処を行うことで、人的ミスを減らし、迅速な対応を可能にします。
全レイヤーでセキュリティを適用する
複数のセキュリティコントロールを使用して深層防御アプローチを適用します。ネットワークのエッジ、VPC、ロードバランシング、すべてのインスタンスとコンピューティングサービス、オペレーティングシステム、アプリケーション、コードなど、すべてのレイヤーに適用します。
これはシステムを構成するすべてのレイヤーに対して必要な防御対策を施すプラクティカルなセクションです。以下に用語を解説します。
- 深層防御アプローチの採用: 複数のセキュリティ層を通じて保護措置を施し、潜在的な脅威からシステムを守ります。このアプローチにより、一つの防御が突破されても、他の層がセキュリティを保持できます。
- ネットワークのエッジからの保護: データの入口と出口にセキュリティ措置を施し、不正アクセスやデータ流出のリスクを低減します。ネットワークのエッジを保護するためには、ファイアウォール、侵入検知システム(IDS)、侵入防止システム(IPS)、Webアプリケーションファイアウォール(WAF)、VPNゲートウェイなど、さまざまなセキュリティ技術とプロトコルが利用されます。これらのツールと技術を組み合わせることで、ネットワークのエッジでのセキュリティを強化し、クラウド内部のリソースを外部の脅威から守ります。
- VPCとロードバランシングのセキュリティ: 仮想プライベートクラウド(VPC)内でのデータ流れを管理し、ロードバランサを使用してトラフィックを適切に分散させることで、攻撃への脆弱性を減らします。
- インスタンスとコンピューティングサービスへの適用: 各インスタンスとコンピューティングサービスに対して、適切なセキュリティ対策を施すことで、システム全体のセキュリティを強化します。
- オペレーティングシステムとアプリケーションの保護: ソフトウェアレベルでセキュリティパッチを定期的に適用し、アプリケーション内の脆弱性を積極的に管理します。たとえばオープンソースのソフトウェアの脆弱性パッチのリリースに対応する等です。
- コードのセキュリティ: アプリケーションコードの安全性を保つために、開発プロセスの早い段階でセキュリティレビューを行い、脆弱性のスキャンを定期的に実施します。
セキュリティのベストプラクティスを自動化する
自動化されたソフトウェアベースのセキュリティメカニズムにより、スケール機能を改善して、安全に、より速く、より費用対効果の高いスケールが可能になります。バージョン管理されているテンプレートにおいてコードとして定義および管理されるコントロールを実装するなど、セキュアなアーキテクチャを作成します。
AWSは、ニーズに自動スケールできるところが大きな魅力の1つですが、自動で増減するインフラに対しても自動で脆弱性への対応をしている状態であれば、サーバーが増えても問題ありません。このようにソフトウェアを通じて自動化できるところは自動化することの重要性を示すセクションです。
- 自動化されたソフトウェアベースのセキュリティメカニズム: サーバーの構成のアップサイジング・ダウンサイジングを自動で行う「スケーリング」のプロセス中に、新しく追加したサーバーに対してもセキュリティ設定を自動で適用することを意味します。これにより、システム全体が常に安全な状態を保つことができ、手動での作業ミスや見落としが減少します。自動化されたセキュリティメカニズムを導入することで、システムのスケールアップやスケールダウンを迅速かつ安全に行えます。これにより、需要の変動に柔軟に対応し、リソースの使用効率を最大化しながらセキュリティを維持できます。
- コード化されたセキュリティコントロールの実装: セキュリティポリシーや設定をコードとして定義し、バージョン管理されたテンプレートに組み込むことで、セキュリティ設定の一貫性と再現性を保証します。このアプローチにより、人的ミスを減らし、セキュリティの設定ミスから生じる脅威を最小限に抑えることが可能になります。
- セキュアなアーキテクチャの構築: セキュリティを考慮したアーキテクチャを最初から設計し、自動化ツールを使用してこれを実装します。これにより、開発初期段階からセキュリティを組み込むことができ、後からセキュリティ対策を追加するよりも効率的で費用対効果の高いソリューションを提供できます。
- セキュリティメカニズムの自動化: パッチ適用、設定変更、監視といったセキュリティ関連のタスクを自動化することで、迅速かつ正確にセキュリティ維持活動を実施できます。自動化により、セキュリティチームはより戦略的なタスクに集中できるようになります。
伝送中および保管中のデータの保護
データを機密性レベルに分類し、暗号化、トークン分割、アクセスコントロールなどのメカニズムを適宜使用します。
「伝送中および保管中のデータの保護」とは、データがインターネットやネットワーク上で移動しているとき(伝送中)と、データがサーバーやクラウドストレージに保存されているとき(保管中)の両方に適用されるようなデータ保護について述べています。
- データの機密性レベルに分類: まず、機密性の高さに応じてデータを分類します。例えば、顧客の個人情報やクレジットカード番号などは高機密性データとして扱い、特別な保護を施すべきでしょう。
- 暗号化: データを読むことができるのは、適切な鍵を持つ人だけに限られるように、データを暗号化します。伝送中のデータはSSL/TLSなどの技術を使用して暗号化し、保管中のデータもディスク暗号化などの方法で保護します。
- トークン分割: 特に機密性の高い情報は、トークン化やデータ分割などの手法を使って、元のデータを異なる部分に分割し、それぞれ別々に保管します。これにより、データを完全に再構築するためにはすべての部分へのアクセスが必要となり、セキュリティが向上します。
- アクセスコントロール: データへのアクセスは厳格に管理し、必要な人とシステムだけがアクセスできるようにします。アクセス権は、個々のユーザーや役割に基づいて細かく設定され、不正アクセスを防ぎます。
データに人の手を入れない
データに直接アクセスしたりデータを手動で処理したりする必要を減らしたり、排除したりするメカニズムとツールを使用します。これにより、機密性の高いデータを扱う際の誤処理、変更、ヒューマンエラーのリスクを軽減します。
人間によるデータへの直接介入を最小限に抑えることで、誤処理や改変、ヒューマンエラーのリスクを軽減し、データの機密性を保護することの重要性を示したセクションです。
- 自動化ツールの利用: データの収集、処理、分析、報告などのプロセスを自動化するツールやソフトウェアを導入します。例えば、ログデータの収集や分析を自動化することで、人間が直接ログファイルにアクセスする必要がなくなります。
- プログラムによるデータアクセス: データベースやファイルシステムへのアクセスをプログラム経由で行い、直接的な人間によるアクセスを避けます。これにより、アクセスの際に認証や権限チェックが強制され、機密データへの不正アクセスを防ぐことができます。
- 権限ベースのアクセス制御: 必要最小限の人だけがデータにアクセスできるように、権限をベースとしたアクセス制御を設定します。各ユーザーの役割に応じてアクセス権を細かく設定し、データへの不要なアクセスを排除します。
- 監査とログの自動化: データへのアクセスや変更の記録を自動でログに残し、不審なアクティビティがあった場合には自動でアラートを発するシステムを導入します。これにより、不正アクセスやヒューマンエラーの発生を迅速に検知し、対処することができます。
セキュリティイベントに備える
組織の要件に合わせたインシデント管理および調査のポリシーとプロセスを導入し、インシデントに備えます。インシデント対応シミュレーションを実行し、自動化されたツールを使用して、検出、調査、復旧のスピードを上げます。
セキュリティ上の問題やインシデントが発生した際に迅速かつ効果的に対処するための準備を意味します。
- インシデント管理ポリシーの策定: セキュリティインシデントが発生した際の対応手順を定めたポリシーを策定します。これには、インシデントの報告方法、対応チームの役割と責任、通知の手順などが含まれます。
- インシデント対応プロセスの確立: セキュリティインシデントの検出から対応、復旧、そして事後分析に至るまでの一連のプロセスを確立します。このプロセスは、インシデントの種類や重大性に応じて柔軟に適用されます。
- インシデント対応シミュレーションの実施: 実際のセキュリティインシデントが発生する前に、想定されるシナリオに基づいて対応訓練を行います。この訓練により、対応チームはプロセスを習熟し、実際のインシデント時に冷静かつ迅速に行動できるようになります。
- ツールとオートメーションの利用: インシデントの検出や分析、復旧作業を自動化するツールを導入します。これにより、人的ミスを減らし、インシデントの影響を最小限に抑えるための対応スピードを向上させることができます。
- 連続的な改善: インシデント対応後には、発生したインシデントを詳細に分析し、対応プロセスやセキュリティ対策の改善点を特定します。この連続的なレビューと改善により、将来的なインシデントへの備えを強化します。
まとめ
AWSによるクラウドの7つの設計原則をご紹介しました。セキュリティ対策はひと手間ふた手間かかるような作業が多く、つい余計な権限を与えてしまったり、アカウントを使いまわしてしまったりすることを見かけますが、この設計原則に従えばインシデントを減らす、または予防することができます。とても重要ですね。
AWSとは.com では、AWSの基礎から実践までの学習を通じて、企業や個人のAWS導入を支援していく予定です。
最後までお読みいただきありがとうございました