AWS SOA無料問題集です。正解と解説を確認する際は右側のボタンを押下してください。
問題集の完全版は以下Udemyにて発売しているためお買い求めください。問題集への質問はUdemyのQA機能もしくはUdemyのメッセージにて承ります。Udemyの問題10問抜粋しております。
多くの方にご好評いただき、講師評価 4.5/5.0 を獲得できております。ありがとうございます。

特別価格: 通常2,600円 → 1,500円
講師クーポン適用で42%OFF
講師クーポン【全出題範囲網羅+詳細解説】AWS SOA-C03日本語問題300問+(Cloud Operations Engine)
問題文:
ある物流会社は、単一のAWSリージョンにあるAmazon EC2インスタンス上で配送管理システムのワークロードを実行しています。この会社は、各EC2インスタンスの日次バックアップを作成する必要があります。インフラ担当者は、バックアップ作成プロセスを自動化するソリューションを実装する必要があります。最小の運用オーバーヘッドでこの要件を満たすソリューションはどれですか?
選択肢:
A. AWS CLIを使用するシェルスクリプトを作成する。すべてのインスタンスをリストアップし、各インスタンスのスナップショットを作成するようにシェルスクリプトを構成する。シェルスクリプトをホストする新しいインスタンスを起動する。24時間ごとにシェルスクリプトを実行するcron jobを設定する
B. EC2コンソールを使用して、各インスタンスのAuto Recoveryオプションを有効にする。Auto Recoveryオプションを24時間ごとに実行するようにスケジュールする
C. インスタンス上に日次cron jobを作成するシェルスクリプトを作成する。AWS CLIを使用して各インスタンスのスナップショットを作成するようにcron jobを構成する。インスタンスプロファイルにスナップショットを作成するために必要な権限があることを確認する。インスタンスのユーザーデータの一部として実行されるようにシェルスクリプトを追加する
D. AWS Backupを使用して、日次デフォルトテンプレートを使用するバックアッププランを作成する。バックアップ対象のリソースとしてEC2インスタンスを指定する
正解:D
A. AWS CLIを使用するシェルスクリプトを作成する。すべてのインスタンスをリストアップし、各インスタンスのスナップショットを作成するようにシェルスクリプトを構成する。シェルスクリプトをホストする新しいインスタンスを起動する。24時間ごとにシェルスクリプトを実行するcron jobを設定する
不正解 この方法は技術的には機能しますが、運用オーバーヘッドが非常に高くなります。スクリプトをホストする専用のEC2インスタンスを維持する必要があり、そのインスタンス自体の可用性管理、パッチ適用、コスト管理が必要になります。また、スクリプトのメンテナンス、エラーハンドリング、ログ管理なども手動で実装する必要があります。新しいインスタンスが追加された場合、スクリプトを更新してそのインスタンスを含める必要があり、スケーラビリティにも課題があります。
B. EC2コンソールを使用して、各インスタンスのAuto Recoveryオプションを有効にする。Auto Recoveryオプションを24時間ごとに実行するようにスケジュールする
不正解 Auto Recoveryはバックアップ機能ではありません。Auto Recoveryは、EC2インスタンスのシステムステータスチェックが失敗した際に、同じハードウェア上でインスタンスを自動的に再起動する機能です。インスタンスID、プライベートIPアドレス、Elastic IPアドレス、メタデータなどは保持されますが、スナップショットやバックアップを作成する機能はありません。また、Auto Recoveryを定期的にスケジュールする機能も存在しません。この選択肢は要件を満たしません。
C. インスタンス上に日次cron jobを作成するシェルスクリプトを作成する。AWS CLIを使用して各インスタンスのスナップショットを作成するようにcron jobを構成する。インスタンスプロファイルにスナップショットを作成するために必要な権限があることを確認する。インスタンスのユーザーデータの一部として実行されるようにシェルスクリプトを追加する
不正解 各インスタンス上でcron jobを実行する方法は、分散管理となり運用オーバーヘッドが高くなります。すべてのインスタンスでスクリプトとcron jobを個別に管理する必要があり、インスタンス数が増えるほど管理コストが増大します。インスタンスが停止している場合はバックアップが実行されず、Auto Scalingで新しいインスタンスが起動する際にはユーザーデータで毎回スクリプトを適用する必要があります。バックアップの一元管理や監視も困難です。
D. AWS Backupを使用して、日次デフォルトテンプレートを使用するバックアッププランを作成する。バックアップ対象のリソースとしてEC2インスタンスを指定する
正解 AWS Backupは、AWSリソースのバックアップを一元管理できるフルマネージドサービスです。バックアッププランを一度設定するだけで、タグベースまたはリソースIDベースで複数のEC2インスタンスのバックアップを自動化できます。スケジュール設定、保持期間管理、ライフサイクルポリシー、クロスリージョンコピーなどの機能が組み込まれています。スクリプトやインフラの保守が不要で、バックアップの状態を中央コンソールで監視でき、最小の運用オーバーヘッドで要件を満たせます。
全体的な説明
問われている要件
- 単一リージョン内のすべてのEC2インスタンスの日次バックアップを自動化すること
- バックアップ作成プロセスの運用オーバーヘッドを最小限に抑えること
- 定期的なスケジュール実行により継続的なバックアップを確保すること
- 新しいインスタンスの追加やインスタンス数の変動に対応できるスケーラブルなソリューションであること
- バックアップの管理と監視を効率的に行えること
前提知識
EC2スナップショットとバックアップの基本
- EC2のバックアップは、EBSボリュームのスナップショットを作成することで実現されます。スナップショットはAmazon S3に保存され、増分バックアップとして機能します。初回は完全コピーですが、2回目以降は変更された部分のみが保存されるため、ストレージコストが最適化されます。スナップショットからは新しいEBSボリュームを作成でき、そのボリュームを使用して元のインスタンスを復元したり、新しいインスタンスを起動したりできます。手動でのスナップショット作成も可能ですが、自動化が推奨されます。
AWS Backupの特徴
- AWS Backupは、複数のAWSサービスのバックアップを一元管理できるフルマネージドサービスです。EC2、EBS、RDS、DynamoDB、EFS、FSx、Storage Gatewayなど多様なリソースに対応しています。バックアッププランではスケジュール、保持期間、ライフサイクルルールを定義でき、タグベースでリソースを自動的に選択できます。クロスリージョン、クロスアカウントのバックアップコピーもサポートし、コンプライアンス要件への対応も容易です。AWS BackupではAWS Backup Vaultでバックアップを暗号化して保存し、バックアップの削除を防ぐVault Lockも提供します。
EC2 Auto Recoveryの目的
- EC2 Auto Recoveryは、インスタンスの自動復旧機能であり、バックアップソリューションではありません。システムステータスチェックが失敗した場合、たとえばハードウェア障害やネットワーク接続の問題が発生した場合に、Amazonは自動的にインスタンスを復旧します。インスタンスは同じインスタンスID、プライベートIPアドレス、Elastic IPアドレス、メタデータを保持したまま再起動されます。ただし、データのバックアップやスナップショットの作成は行わず、あくまでインスタンスの可用性を維持するための機能です。
スクリプトベースのバックアップ自動化
- AWS CLIやSDKを使用してスクリプトでバックアップを自動化することも可能です。この方法では、スクリプトでインスタンスをリストアップし、CreateSnapshotAPIを呼び出してスナップショットを作成します。Lambda関数やEC2インスタンス上のcron jobでスクリプトを定期実行できます。柔軟性は高いですが、エラーハンドリング、ログ管理、リトライロジック、通知機能などをすべて自分で実装する必要があり、運用負荷が高くなります。また、スクリプトを実行するインフラの維持管理も必要です。
解くための考え方
この問題のキーポイントは「最小の運用オーバーヘッド」という要件です。すべての選択肢は技術的にはバックアップを実現できる可能性がありますが、運用の複雑さと保守の手間が大きく異なります。運用オーバーヘッドを評価する際には、初期設定の複雑さ、継続的な保守作業、スケーラビリティ、障害時の対応、監視と管理の容易さなどを考慮する必要があります。
シェルスクリプトとcron jobを使用する方法は、カスタマイズ性が高い反面、すべてを手動で構築し保守する必要があります。専用のEC2インスタンスでスクリプトを実行する場合、そのインスタンス自体の可用性管理が必要になり、インスタンスが停止すればバックアップも停止します。各EC2インスタンス上でcron jobを実行する方法は、さらに管理が複雑になります。インスタンスごとにスクリプトを配置し、更新があればすべてのインスタンスで変更する必要があります。
Auto Recoveryは、名前から誤解を招きやすい選択肢ですが、バックアップ機能ではありません。インスタンスの復旧機能であり、データのスナップショットを作成する機能は持っていません。そもそも定期的なスケジュール実行の機能もないため、この選択肢は要件を満たしません。
AWS Backupは、まさにこのような要件のために設計されたマネージドサービスです。バックアッププランを一度作成すれば、指定したリソースの自動バックアップが継続的に実行されます。タグベースでリソースを選択できるため、新しいインスタンスが追加されても、適切なタグが付与されていれば自動的にバックアップ対象に含まれます。スケジュール管理、保持期間の自動管理、バックアップの状態監視などがすべて組み込まれており、スクリプトやインフラの保守が不要です。クロスリージョンバックアップやコンプライアンスレポート機能も標準で提供されるため、将来的な要件拡張にも対応できます。運用オーバーヘッドを最小限に抑えるという要件に最も適した選択肢です。
参考資料
問題文:
あるメディア企業は、Application Load Balancer(ALB)の背後にある3つのAmazon EC2インスタンス上でニュース配信Webアプリケーションを運用しています。速報ニュースの発生時など、予測できないタイミングでトラフィックが急増し、アプリケーションのパフォーマンスが低下することが確認されています。CloudOpsエンジニアは、突発的なトラフィック増加に対応できるようアプリケーションをスケーリングする必要があります。これらの要件を満たすソリューションはどれですか?
選択肢:
A. Amazon CloudWatchアラームを作成してアプリケーションのレイテンシーを監視し、目標の閾値に達した場合に各EC2インスタンスのサイズを増やす
B. Amazon EventBridge(Amazon CloudWatch Events)ルールを作成してアプリケーションのレイテンシーを監視し、目標の閾値に達した場合にEC2インスタンスをALBに追加する
C. ターゲット追跡スケーリングポリシーを持つEC2インスタンスのAuto Scalingグループにアプリケーションをデプロイする。Auto ScalingグループにALBをアタッチする
D. スケジュールされたスケーリングポリシーを持つEC2インスタンスのAuto Scalingグループにアプリケーションをデプロイする。Auto ScalingグループにALBをアタッチする
正解:C
A. Amazon CloudWatchアラームを作成してアプリケーションのレイテンシーを監視し、目標の閾値に達した場合に各EC2インスタンスのサイズを増やす
不正解 CloudWatchアラームでレイテンシーを監視し、インスタンスサイズを増やす方法は、垂直スケーリング(スケールアップ)のアプローチです。インスタンスサイズの変更には、インスタンスの停止と再起動が必要で、ダウンタイムが発生します。また、手動操作が必要となり、ランダムなトラフィック増加に迅速に対応できません。さらに、インスタンスサイズには上限があり、無限にスケールアップすることはできません。水平スケーリング(スケールアウト)の方が、可用性とコスト効率の面で優れています。
B. Amazon EventBridge(Amazon CloudWatch Events)ルールを作成してアプリケーションのレイテンシーを監視し、目標の閾値に達した場合にEC2インスタンスをALBに追加する
不正解 EventBridgeルールを使用してEC2インスタンスをALBに追加する方法は、カスタムの自動化ソリューションですが、Auto Scalingが提供する包括的な機能を再実装することになります。インスタンスの起動、ヘルスチェック、ターゲットグループへの登録、スケールインの処理など、すべてを手動で実装する必要があり、複雑で保守が困難です。また、複数のメトリクスに基づく高度なスケーリング戦略や、クールダウン期間の管理なども自分で実装する必要があります。Auto Scalingを使用する方が、運用オーバーヘッドが大幅に削減されます。
C. ターゲット追跡スケーリングポリシーを持つEC2インスタンスのAuto Scalingグループにアプリケーションをデプロイする。Auto ScalingグループにALBをアタッチする
正解 ターゲット追跡スケーリングポリシーを持つAuto Scalingグループは、指定したメトリクス(CPU使用率、リクエスト数、ネットワークトラフィックなど)を目標値に維持するように自動的にインスタンス数を調整します。トラフィックが増加するとメトリクスが上昇し、Auto Scalingが自動的にインスタンスを追加してメトリクスを目標値に戻します。トラフィックが減少すると、不要なインスタンスを削除してコストを最適化します。ALBとの統合により、新しいインスタンスは自動的にロードバランサーに登録され、トラフィックの分散が行われます。ランダムなトラフィック増加に対して最も効果的なソリューションです。
D. スケジュールされたスケーリングポリシーを持つEC2インスタンスのAuto Scalingグループにアプリケーションをデプロイする。Auto ScalingグループにALBをアタッチする
不正解 スケジュールされたスケーリングポリシーは、予測可能なトラフィックパターンに適しています。たとえば、毎日午前9時にトラフィックが増加し、午後6時に減少するといった定期的なパターンがある場合に有効です。しかし、問題文では「予測できないタイミングのトラフィック増加」と明記されており、速報ニュースのような突発的なトラフィックパターンです。スケジュールされたスケーリングでは、突発的なトラフィック増加に対応できず、パフォーマンスの低下を防ぐことができません。また、トラフィックがない時間帯でも余分なインスタンスが稼働し、コストが無駄になる可能性があります。
全体的な説明
問われている要件
- ランダムに発生するトラフィック増加に自動的に対応すること
- トラフィック増加時のアプリケーションパフォーマンスの低下を防ぐこと
- Application Load Balancerと統合してトラフィックを効率的に分散すること
- 手動介入なしに動的にスケーリングを実行すること
- トラフィック減少時にはコストを最適化するためにスケールインすること
前提知識
Auto Scalingグループの基本概念
- Amazon EC2 Auto Scalingは、アプリケーションの需要に応じてEC2インスタンスの数を自動的に調整するサービスです。最小容量、希望容量、最大容量を定義し、その範囲内でインスタンス数を動的に変更します。ヘルスチェック機能により、異常なインスタンスを自動的に検出して置き換え、アプリケーションの可用性を維持します。複数のアベイラビリティーゾーンにインスタンスを分散配置し、ゾーン障害に対する耐性を提供します。Application Load BalancerやNetwork Load Balancerと統合することで、新しく起動されたインスタンスは自動的にロードバランサーのターゲットグループに登録されます。
ターゲット追跡スケーリングポリシー
- ターゲット追跡スケーリングポリシーは、特定のメトリクスを目標値に維持するように自動的にスケーリングを調整します。平均CPU使用率、リクエスト数、ネットワーク使用量などの事前定義されたメトリクスや、カスタムCloudWatchメトリクスを使用できます。たとえば、平均CPU使用率を50%に維持するように設定すると、Auto ScalingはCPU使用率が50%を超えるとインスタンスを追加し、50%を下回るとインスタンスを削除します。内部的にCloudWatchアラームを自動作成し、継続的に監視します。スケールアウトとスケールインの両方を自動的に処理し、アプリケーションのパフォーマンスとコストのバランスを取ります。
スケジュールされたスケーリングポリシー
- スケジュールされたスケーリングは、特定の日時や定期的なスケジュールに基づいてキャパシティを変更します。予測可能なトラフィックパターンがある場合に有効で、たとえば営業時間中はインスタンス数を増やし、夜間は減らすといった設定が可能です。Cron式を使用して、毎週月曜日の午前8時にスケールアウトするといった複雑なスケジュールも定義できます。しかし、実際のトラフィック状況に関係なくスケジュールに従って実行されるため、突発的なトラフィック変動には対応できません。ターゲット追跡スケーリングと組み合わせて使用することで、ベースラインのキャパシティをスケジュールで管理し、追加の変動をターゲット追跡で処理することも可能です。
動的スケーリングとステップスケーリング
- 動的スケーリングには、ターゲット追跡スケーリング、ステップスケーリング、シンプルスケーリングの3種類があります。ターゲット追跡は最もシンプルで推奨される方法で、目標値を設定するだけで自動的に調整されます。ステップスケーリングは、メトリクスの変化の大きさに応じて異なるスケーリングアクションを実行します。たとえば、CPU使用率が60%から70%の場合は1インスタンス追加、70%から80%の場合は2インスタンス追加といった段階的な対応が可能です。シンプルスケーリングは、単一のスケーリング調整のみを実行し、クールダウン期間を待つ必要があるため、現在は推奨されていません。
Application Load Balancerとの統合
- Application Load BalancerをAuto Scalingグループと統合すると、新しく起動されたEC2インスタンスは自動的にALBのターゲットグループに登録されます。ALBはヘルスチェックを実行し、健全なインスタンスにのみトラフィックをルーティングします。Auto Scalingグループは、ALBのヘルスチェック結果を使用して、インスタンスの健全性を判断できます。ALB RequestCountPerTargetメトリクスを使用したターゲット追跡スケーリングにより、各インスタンスが処理するリクエスト数を一定に保つことができます。これにより、トラフィックが増加すると自動的にインスタンスが追加され、各インスタンスの負荷が均等に保たれます。
垂直スケーリングと水平スケーリングの比較
- 垂直スケーリング(スケールアップ)は、既存のインスタンスのサイズを大きくすることで容量を増やします。実装は簡単ですが、インスタンスの停止と再起動が必要でダウンタイムが発生します。また、インスタンスサイズには上限があり、単一障害点のリスクも高まります。水平スケーリング(スケールアウト)は、インスタンス数を増やすことで容量を増やします。ダウンタイムなしにスケーリングでき、複数のインスタンスに負荷を分散することで可用性が向上します。コスト効率も良く、需要に応じて柔軟にスケールインできます。クラウド環境では、水平スケーリングが推奨されるアプローチです。
解くための考え方
この問題の核心は、ランダムに発生するトラフィック増加に対して、自動的かつ効率的にスケーリングを実行する方法を選択することです。キーワードは「ランダムな期間のトラフィック増加」と「パフォーマンスの低下を防ぐ」です。
まず、スケーリングのアプローチには垂直スケーリングと水平スケーリングがあります。インスタンスサイズを増やす方法は垂直スケーリングですが、これにはいくつかの問題があります。インスタンスの停止と再起動が必要でダウンタイムが発生し、手動操作が必要で自動化が困難です。さらに、インスタンスサイズには上限があり、コストも急激に増加します。
次に、スケーリングの自動化方法を考えます。EventBridgeとLambdaを組み合わせてカスタムソリューションを構築することも技術的には可能ですが、これはAuto Scalingが提供する機能を再実装することになります。インスタンスの起動、ヘルスチェック、ロードバランサーへの登録、スケールインのロジック、クールダウン期間の管理など、すべてを自分で実装する必要があり、複雑で保守が困難です。既存のマネージドサービスを使用する方が、運用効率が高くなります。
スケーリングのタイミングについて、スケジュールベースと動的スケーリングがあります。スケジュールされたスケーリングは、予測可能なトラフィックパターンには効果的ですが、問題文では「ランダムな期間」と明記されています。これは予測不可能なトラフィック変動を意味しており、スケジュールベースでは対応できません。スケジュールされたスケーリングでは、トラフィックが増加していないのにインスタンスを起動したり、トラフィックが増加しているのにスケールアウトが遅れたりする可能性があります。
ターゲット追跡スケーリングポリシーを使用するAuto Scalingグループは、この要件に最も適しています。平均CPU使用率やALBのリクエスト数などのメトリクスを継続的に監視し、目標値を維持するように自動的にインスタンス数を調整します。トラフィックが増加するとメトリクスが上昇し、Auto Scalingは自動的に新しいインスタンスを起動します。新しいインスタンスはALBに自動登録され、ヘルスチェックに合格するとトラフィックを受け取り始めます。これにより、アプリケーションのパフォーマンスが維持されます。トラフィックが減少すると、不要なインスタンスは自動的に終了され、コストが最適化されます。
このソリューションは、完全に自動化されており、手動介入は不要です。ランダムなトラフィック変動に迅速に対応し、高可用性を維持しながら、コスト効率も最適化できます。ALBとの統合により、新しいインスタンスへのトラフィック分散も自動的に処理されます。これが、問題の要件を満たす最適なソリューションです。
参考資料
- Amazon EC2 Auto Scaling とは – Amazon EC2 Auto Scaling
- ターゲット追跡スケーリングポリシー – Amazon EC2 Auto Scaling
- スケジュールされたスケーリング – Amazon EC2 Auto Scaling
- 動的スケーリング – Amazon EC2 Auto Scaling
- Elastic Load Balancing での Auto Scaling グループの使用 – Amazon EC2 Auto Scaling
- Application Load Balancer とは – Elastic Load Balancing
- Auto Scaling グループのヘルスチェック – Amazon EC2 Auto Scaling
- ステップスケーリングポリシーとシンプルスケーリングポリシー – Amazon EC2 Auto Scaling
問題文:
ある医療機関は、患者データの管理システムを AWS 上で運用しています。システム担当者は、ファイルシステム ID が fs-3d92c17a の Amazon Elastic File System (EFS) ボリュームを作成し、8台の Amazon EC2 インスタンスにマウントして電子カルテデータの共有ストレージとして使用しています。
コンプライアンス審査の結果、このファイルシステムが暗号化されていないことが判明し、早急な対応が求められています。EFS を暗号化するための最適な方法を選択してください。
選択肢:
A. 各 EC2 インスタンスに接続されているローカルの EBS ボリュームで暗号化を有効にし、インスタンスを再起動して暗号化を適用します。
B. AWS マネジメントコンソールまたは AWS CLI を使用して、既存の EFS ボリュームに対して保存時暗号化を有効化します。
C. 暗号化を有効にした新しい EFS ボリュームを作成し、既存ボリュームのデータをすべて新しいボリュームにコピーします。その後、8台すべての EC2 インスタンスのマウント設定を新しいボリュームに更新します。
D. 各 EC2 インスタンスから EFS への接続を再作成し、接続ごとに暗号化オプションを有効にして再マウントします。
正解:C
A. 各 EC2 インスタンスに接続されているローカルの EBS ボリュームで暗号化を有効にし、インスタンスを再起動して暗号化を適用します。
不正解 ローカルドライブの暗号化はEC2インスタンスのEBSボリュームを暗号化する機能で、EFSファイルシステム自体の暗号化とは別の仕組みです。EFSはネットワークファイルシステムとして動作するため、クライアント側のローカル暗号化ではファイルシステム本体のデータ保護にはなりません。EFS暗号化は保存時暗号化として、ファイルシステムレベルでAES-256暗号化により実装される必要があります。
B. AWS マネジメントコンソールまたは AWS CLI を使用して、既存の EFS ボリュームに対して保存時暗号化を有効化します。
不正解 Amazon EFSでは、ファイルシステム作成後に暗号化設定を変更することは技術的に不可能です。保存時暗号化はファイルシステムの作成時にのみ設定でき、既存の未暗号化ファイルシステムを後から暗号化に変更するAPIやCLIコマンドは存在しません。この制限はEFSの設計上の特性であり、暗号化を行うには新しいファイルシステムの作成が必須となります。
C. 暗号化を有効にした新しい EFS ボリュームを作成し、既存ボリュームのデータをすべて新しいボリュームにコピーします。その後、8台すべての EC2 インスタンスのマウント設定を新しいボリュームに更新します。
正解 EFSの暗号化を実現する唯一の方法は、暗号化を有効にした新しいファイルシステムを作成し、既存データを移行することです。この手順では、AWS DataSyncやrsyncなどのツールを使用してデータを効率的にコピーし、すべてのEC2ホストのマウント設定を新しいファイルシステムIDに更新します。移行中はダウンタイムが発生しますが、データの完全性を保ちながら暗号化要件を満たせる確実な方法です。
D. 各 EC2 インスタンスから EFS への接続を再作成し、接続ごとに暗号化オプションを有効にして再マウントします。
不正解 EFSには接続レベルで暗号化を設定する機能は存在しません。保存時暗号化はファイルシステム全体の属性として設定されるもので、個別のマウント接続やクライアント単位で制御することはできません。転送時暗号化はマウント時にTLSを有効化することで可能ですが、これは保存時のデータ暗号化とは異なる仕組みであり、今回の要件には対応できません。
全体的な説明
問われている要件
- 既存の未暗号化EFSファイルシステムを暗号化状態に変更すること
- 複数のEC2ホストからアクセス可能な暗号化ファイルシステムを構築すること
- データの整合性と可用性を維持しながら暗号化を実装すること
- 運用中のシステムへの影響を最小限に抑えた移行手順を実行すること
- セキュリティとコンプライアンス要件を満たす暗号化レベルを達成すること
前提知識
ファイルストレージサービスの特徴
- Amazon EFS はNFSv4.1およびv4.0プロトコルをサポートする完全マネージド型のファイルストレージサービスです。ペタバイト規模まで自動拡張し、数千の同時接続をサポートします。保存時暗号化はAES-256アルゴリズムを使用し、ファイルシステム作成時にのみ設定可能です。暗号化設定の変更は技術的に不可能で、複数のアベイラビリティーゾーン間での冗長化により高可用性を実現し、大規模なファイル共有や並列アクセスが必要なアプリケーションに適用されます。
- Amazon EBS は最大80TBまでサポートするブロックストレージサービスで、EC2インスタンス専用の持続性ストレージを提供します。保存時暗号化は作成時または既存ボリュームのスナップショット作成時に設定でき、転送時暗号化はEC2とEBS間で自動的に実装されます。EBSは単一インスタンスからのアクセスに限定され、ファイルシステムレベルでの共有アクセスには適していません。
データ転送・移行ツールについて
- AWS DataSync は最大10Gbpsの転送スループットを持つフルマネージド型データ転送サービスで、自動的なデータ整合性チェックとEnd-to-End暗号化を提供します。ファイル属性、タイムスタンプ、アクセス権限を含むメタデータの完全保持をサポートし、ネットワーク最適化により効率的な転送を実現します。大容量データの一括移行や定期的な同期処理に適用されます。
- rsync はオープンソースのファイル同期ツールで、差分転送アルゴリズムにより変更されたデータのみを転送します。SSH経由での暗号化転送や詳細なファイル属性保持機能を持ちますが、手動設定が必要で大規模環境では運用負荷が高くなります。小中規模のデータ移行や手動制御が必要な環境に適用されます。
暗号化・セキュリティサービスについて
- AWS Key Management Service(KMS)は最大4KBのデータキー暗号化と年間数百万のオペレーションをサポートする暗号鍵管理サービスです。カスタマーマネージドキーとAWSマネージドキーを提供し、キーの自動ローテーション、細粒度アクセス制御、CloudTrailとの統合による操作ログ記録機能を持ちます。EFSの保存時暗号化では必須のサービスとして、データ暗号化キーの生成と管理に適用されます。
- 保存時暗号化(Encryption at Rest)はデータがストレージに書き込まれる前に自動的に暗号化し、読み取り時に透過的に復号化する仕組みです。EFSではAES-256暗号化が使用され、アプリケーションレベルでの変更は不要です。転送時暗号化(Encryption in Transit)はクライアントとEFS間の通信をTLS 1.2で保護し、マウント時にstunnelプロセスを使用して実装されます。
解くための考え方
この問題の核心は、Amazon EFSの暗号化設定に関する技術的制約を理解することです。EFSでは保存時暗号化がファイルシステムの根本的な属性として扱われ、作成後の変更は不可能という重要な特性があります。
既存の未暗号化ファイルシステムを暗号化するには、新しい暗号化済みファイルシステムを作成し、データを移行する以外に方法はありません。この移行プロセスでは、データの整合性を保ちながら、効率的で信頼性の高い転送を実現する必要があります。
データ移行の方法として、AWS DataSyncが最も適しています。DataSyncは自動的なデータ検証機能を持ち、ファイル属性やタイムスタンプを含むメタデータを完全に保持できます。また、転送の進捗監視や失敗時の自動リトライ機能により、大規模なデータ移行でも安全に実行できます。
代替手段としてrsyncも利用可能ですが、手動での設定と監視が必要になります。移行手順では、まず新しい暗号化ファイルシステムを作成し、適切なKMSキーを設定した後、データ転送を実行します。転送完了後は、全てのEC2インスタンスのマウント設定を更新し、アプリケーションの動作確認を行います。
この方式により、既存システムへの影響を最小限に抑えながら、セキュリティ要件を満たす暗号化されたファイルシステムに移行できます。
参考資料
- Amazon EFS でのデータの暗号化 – Amazon Elastic File System
- 保管中のデータの暗号化 – Amazon Elastic File System
- 転送中のデータの暗号化 – Amazon Elastic File System
- AWS DataSync を使用したデータ転送 – Amazon Elastic File System
- とは AWS DataSync – AWS DataSync
- Amazon EFS とは – Amazon Elastic File System
- 暗号化されたファイルシステムへのアクセスの管理 – Amazon Elastic File System
- Amazon EBS 暗号化 – Amazon EBS
問題文:
ある医療機関では、患者情報システムへのすべてのアクセスログを10年間アーカイブする必要があります。また、将来の改ざんからログを保護する仕組みが求められています。
この要件を満たす最適なソリューションを選択してください。
選択肢:
A. Amazon S3 Glacier ボールトにデータを保存し、ボールトロックポリシーを Write-Once Read-Many (WORM) アクセス用に構成します。
B. Amazon S3 標準 – 低頻度アクセス (S3 標準 – IA) にデータを保存し、多要素認証 (MFA) を構成します。
C. Amazon S3 標準 – 低頻度アクセス (S3 標準 – IA) にデータを保存し、サーバー側の暗号化を構成します。
D. Amazon Elastic Block Store (Amazon EBS) ボリュームにデータを保存し、AWS Key Management Service (AWS KMS) 暗号化を構成します。
正解:A
A. Amazon S3 Glacier ボールトにデータを保存し、ボールトロックポリシーを Write-Once Read-Many (WORM) アクセス用に構成します。
正解 Amazon S3 Glacier Vault Lockは規制要件とコンプライアンス要件に対応するWORM機能を提供します。ボールトロックポリシーを設定することで、指定期間中のアーカイブ削除を防止でき、365日などの保持期間を設定してアクセスログを確実に保護できます。ただし現在のベストプラクティスでは、S3 Glacierストレージクラス(Deep Archive)とS3 Object Lockの組み合わせが推奨されており、こちらの方がより柔軟で管理しやすい仕組みです。
B. Amazon S3 標準 – 低頻度アクセス (S3 標準 – IA) にデータを保存し、多要素認証 (MFA) を構成します。
不正解 S3標準-IAは頻繁にアクセスしないデータ向けのストレージクラスで、10年間の長期アーカイブには適していません。MFAは削除操作に対する追加認証を提供しますが、WORM機能は提供しないため、権限のあるユーザーでも削除を防止する規制要件には対応できません。長期保存のコスト効率性も悪く、医療機関のアクセスログ保管要件を満たしません。
C. Amazon S3 標準 – 低頻度アクセス (S3 標準 – IA) にデータを保存し、サーバー側の暗号化を構成します。
不正解 サーバー側暗号化はデータ保護のための暗号化機能を提供しますが、データの編集や削除を防止するWORM機能ではありません。暗号化されたデータでも適切な権限があれば変更や削除が可能であり、規制や監査要件で求められる不変性は実現できません。また、S3標準-IAは長期アーカイブには不適切でコストも高くなります。
D. Amazon Elastic Block Store (Amazon EBS) ボリュームにデータを保存し、AWS Key Management Service (AWS KMS) 暗号化を構成します。
不正解 Amazon EBSはEC2インスタンス向けのブロックストレージサービスで、長期アーカイブストレージには設計されていません。EBSボリュームは単一インスタンスに接続され、インスタンス終了時にデータが失われるリスクがあります。WORM機能も提供されておらず、KMS暗号化は保存時の暗号化のみで削除防止効果はありません。10年間のアクセスログ保管には不適切です。
全体的な説明
問われている要件
- アクセスログを10年間という長期間にわたって確実に保管できること
- 将来的な編集や改ざんから完全にログを保護する仕組みがあること
- 規制要件やコンプライアンス要件に対応できる不変性の実現
- 大容量データの長期保存に適したコスト効率性を持つこと
- 監査証跡として法的な証明力を持つ信頼性のあるストレージであること
前提知識
アーカイブストレージサービスの特徴
- Amazon S3 Glacier(従来サービス)は専用のボールトロックポリシーにより強固なWORM機能を提供します。ボールトロックポリシーは一度設定されると変更や削除ができず、最大365日以上の保持期間設定が可能です。SEC 17a-4、CFTC、FINRAなどの金融規制に準拠した設計となっており、監査や規制要件の厳しい業界での長期データ保管に適用されます。ただし現在は後継のS3 Glacierストレージクラスの使用が推奨されています。
- S3 Glacierストレージクラス(S3 Glacier Flexible Retrieval、Deep Archive)は現在推奨される長期アーカイブソリューションで、S3 Object Lockと組み合わせてWORM機能を実現します。Deep Archiveは最小180日の保持期間があり、12時間以内での復元が可能です。オブジェクトあたり40KBの追加メタデータが必要ですが、AWSで最も低コストなストレージオプションとして長期データ保管に適用されます。
データ保護・セキュリティサービスについて
- S3 Object Lockは現在の標準WORM実装で、保持期間とリーガルホールドの2つの方法でオブジェクト保護を管理します。Cohasset Associates による規制適合性評価を受けており、SEC、CFTC、FINRA規制環境での使用が認定されています。ガバナンスモードとコンプライアンスモードを提供し、柔軟性と厳格性のバランスを取った運用が可能で、現代的な監査ログ保護に適用されます。
- AWS Key Management Service(KMS)は暗号鍵管理サービスで、保存時および転送時の暗号化を提供します。年間数百万のオペレーションに対応し、カスタマーマネージドキーとAWSマネージドキーを選択できます。CloudTrail統合による操作ログ記録機能を持ちますが、データの削除防止機能は提供せず、WORM要件には対応できません。
ストレージクラス・ブロックストレージサービスについて
- Amazon S3標準-IAは月1回程度のアクセス頻度のデータに適したストレージクラスで、最小30日の保持期間があります。ミリ秒レベルの高速アクセスが可能ですが、長期アーカイブには不適切でコスト効率性も低くなります。10年間の監査ログ保管では年間コストが大幅に増加し、企業の予算に大きな負担となるため適用されません。
- Amazon EBSは最大80TBまでサポートするEC2専用ブロックストレージで、高IOPS性能と低遅延アクセスを提供します。単一インスタンス接続の制限があり、インスタンス終了時のデータ消失リスクや可用性の課題があります。長期アーカイブストレージとしては設計されておらず、10年間の継続運用には不適切で運用コストも高くなります。
解くための考え方
この問題は監査ログの長期保管要件を満たすストレージソリューションの選択問題です。10年間という長期保管と編集防止という2つの要件を同時に満たす必要があります。
長期アーカイブの観点では、コスト効率性が重要な要素となります。S3標準-IAのような頻繁アクセス用ストレージでは10年間の保管コストが非常に高額になります。一方、Glacierストレージは長期保管に最適化されており、大幅なコスト削減が可能です。
編集防止の観点では、WORM(Write-Once Read-Many)機能が必須となります。単なる暗号化やアクセス制御では、適切な権限を持つユーザーによる意図的または意図しない削除を防げません。真の不変性を実現するには、技術的にデータの変更や削除を不可能にする仕組みが必要です。
従来のS3 Glacier Vault Lockは、この要件を満たす確実な方法です。ボールトロックポリシーは一度ロック状態になると、AWS自体でも変更できない強固な保護を提供します。金融業界などの厳格な規制要件にも対応しており、監査ログの保護には適しています。
ただし現在のAWSベストプラクティスでは、S3 GlacierストレージクラスとS3 Object Lockの組み合わせが推奨されています。これは管理の柔軟性と統合性の面で優れており、新規システム構築時はこちらを検討すべきです。しかし、選択肢に含まれていないため、従来のGlacier Vault Lockが正解となります。
参考資料
- S3 Glacier ボールトロック – Amazon S3 Glacier
- S3 Object Lock を使用したオブジェクトのロック – Amazon Simple Storage Service
- 長期データストレージとしての S3 Glacier ストレージクラスを理解する – Amazon Simple Storage Service
- ボールトロックポリシー – Amazon S3 Glacier
- Amazon S3 Glacier とは – Amazon S3 Glacier
- アーカイブされたオブジェクトの復元 – Amazon Simple Storage Service
- AWS Backup Vault Lock – AWS Backup
- Amazon S3 ライフサイクルを使用したオブジェクトの移行 – Amazon Simple Storage Service
問題文:
ある医療機関は、患者情報管理システムを Amazon EC2 インスタンスでホストしています。また、患者データの保存には Amazon RDS for PostgreSQL を使用しています。
医療コンプライアンス要件に従い、データベースインスタンスへのすべての接続を暗号化しなければなりません。この要件を満たす最適なソリューションを選択してください。
選択肢:
A. カスタム PostgreSQL 拡張機能を導入し、データベースに SSL/TLS 機能を追加適用します。
B. AWS Key Management Service (AWS KMS) の暗号化キーを使用して、データベースインスタンスを暗号化します。
C. カスタムパラメーターグループを作成し、データベースへの SSL 接続を強制する設定を適用します。
D. インバウンドセキュリティグループルールを設定して、データベースへの SSL 接続のみを許可します。
正解:C
A. カスタム PostgreSQL 拡張機能を導入し、データベースに SSL/TLS 機能を追加適用します。
不正解 PostgreSQLのSSL/TLSサポートは標準機能として組み込まれており、カスタム拡張機能やパッチ適用は不要です。RDS for PostgreSQLは標準でTLSバージョン1.1、1.2、1.3をサポートしており、追加の拡張機能を使用することなくSSL/TLS暗号化を実現できます。このアプローチは不必要に複雑で、RDSの管理されたサービスの利点を無効化してしまいます。
B. AWS Key Management Service (AWS KMS) の暗号化キーを使用して、データベースインスタンスを暗号化します。
不正解 AWS KMSは保存時暗号化(encryption at rest)を提供するサービスで、ディスク上のデータを暗号化します。転送時暗号化(encryption in transit)とは異なる仕組みであり、クライアントとデータベース間の接続を暗号化する機能は提供しません。データベース接続の暗号化にはSSL/TLSが必要で、KMS暗号化では要件を満たすことができません。
C. カスタムパラメーターグループを作成し、データベースへの SSL 接続を強制する設定を適用します。
正解 カスタムパラメーターグループを作成し、rds.force_sslパラメーターを1に設定することで、すべてのクライアント接続でSSL/TLS暗号化を強制できます。デフォルトパラメーターグループは変更不可のため、カスタムパラメーターグループの作成が必要です。このパラメーターが有効な場合、暗号化されていない接続は自動的に拒否され、確実にすべての接続が保護されます。
D. インバウンドセキュリティグループルールを設定して、データベースへの SSL 接続のみを許可します。
不正解 セキュリティグループはネットワークレベルでのアクセス制御を提供し、ポートやプロトコル、ソースIPアドレスベースの通信許可を管理します。SSL接続の許可はできますが、SSL使用の強制はできません。セキュリティグループの設定だけではクライアントが非暗号化接続を試行することを防げず、暗号化要件の確実な実施には不十分です。
全体的な説明
問われている要件
- データベースインスタンスへのすべての接続が暗号化されている必要があること
- 非暗号化接続の使用を完全に防止する仕組みが求められること
- 既存のアプリケーションへの影響を最小限に抑えた実装が必要であること
- 規制要件やセキュリティ基準を満たす確実な暗号化の実現
- 管理されたサービスとしてのRDSの利点を活用した設定方法であること
前提知識
データベース暗号化サービスの特徴
- RDS for PostgreSQL SSL/TLS機能はSecure Socket LayerとTransport Layer Securityをサポートし、TLSバージョン1.1、1.2、1.3に対応しています。クライアントとDB インスタンス間のデータ通信を暗号化し、業界標準の暗号化プロトコルによる転送時保護を提供します。SSL証明書は各DBインスタンス作成時にAmazon RDSが自動生成し、証明書チェーン検証によるなりすまし攻撃からの保護機能も含まれ、金融や医療など高セキュリティ要件の業界に適用されます。
- AWS Key Management Service(KMS)は保存時暗号化専用のサービスで、年間数百万のオペレーションをサポートします。AES-256暗号化アルゴリズムを使用してDBインスタンス基盤サーバー上でデータを暗号化し、透過的な暗号化・復号化処理を提供します。カスタマーマネージドキーとAWSマネージドキーの選択が可能で、CloudTrailによる鍵使用監査機能を持ちますが、転送時データの暗号化機能は提供しません。
パラメーター管理サービスについて
- RDS パラメーターグループはデータベースエンジンの設定を管理する仕組みで、各DBエンジンバージョンに対応したデフォルト設定を提供します。静的パラメーターは変更後にDB インスタンスの再起動が必要で、動的パラメーターは即座に反映されます。rds.force_sslは静的パラメーターのため、有効化には再起動が必要ですが、一度設定されると確実にSSL接続を強制でき、規制コンプライアンス要件の実現に適用されます。
- カスタムパラメーターグループの作成はデフォルトグループのコピーから開始し、特定の設定値を変更して独自の構成を定義します。最大100個のカスタムパラメーターグループを作成可能で、複数のDBインスタンスに同じグループを適用して設定の一貫性を保てます。パラメーター変更はコンソール、AWS CLI、APIを通じて実行でき、大規模環境での自動化に適用されます。
ネットワーク・アクセス制御サービスについて
- Amazon RDS セキュリティグループはネットワークファイアウォール機能を提供し、インバウンドとアウトバウンドの通信制御を管理します。ポート番号、プロトコル、ソースIPアドレス、他のセキュリティグループを指定した細粒度なアクセス制御が可能です。最大100個のルールを設定でき、VPCセキュリティグループとの統合によるネットワークレベルでの包括的な保護を提供しますが、アプリケーションレベルの暗号化制御は含まれません。
- PostgreSQL拡張機能はデータベース機能を拡張するモジュールシステムで、RDS for PostgreSQLでは事前承認された拡張機能のみがサポートされます。SSL/TLS機能は PostgreSQLコア機能として標準実装されており、追加の拡張機能は不要です。カスタム拡張機能の導入はRDSの管理された環境では制限され、セキュリティと安定性の観点から推奨されません。
解くための考え方
この問題は転送時暗号化(encryption in transit)の実装に関する問題で、クライアントとデータベース間の通信を保護する仕組みが求められています。保存時暗号化(encryption at rest)とは異なる概念であることを理解することが重要です。
RDS for PostgreSQLでSSL接続を強制する標準的な方法は、カスタムパラメーターグループを使用することです。デフォルトパラメーターグループは読み取り専用のため、設定変更にはカスタムグループの作成が必須となります。
rds.force_sslパラメーターは PostgreSQLの標準機能で、このパラメーターを1に設定することで、すべてのクライアント接続でSSL/TLS暗号化が強制されます。暗号化されていない接続試行は自動的に拒否され、確実にセキュリティ要件を満たすことができます。
他の選択肢では、PostgreSQL拡張機能によるSSL実装は標準機能で十分であるため不要、KMS暗号化は保存時のみの保護で転送時には効果なし、セキュリティグループは通信の許可・拒否制御であり暗号化の強制とは別の仕組みであり、いずれも要件を満たしません。
実装手順としては、まずカスタムパラメーターグループを作成し、rds.force_sslパラメーターを1に設定します。その後、このパラメーターグループをDBインスタンスに適用し、再起動して設定を有効化します。この方法により、確実で管理しやすいSSL接続の強制が実現できます。
参考資料
- PostgreSQL DB インスタンスで SSL を使用する – Amazon Relational Database Service
- SSL/TLS を使用して RDS for PostgreSQL への接続を保護する – Amazon Relational Database Service
- Amazon RDS のパラメータグループ – Amazon Relational Database Service
- RDS for PostgreSQL DB インスタンスでのパラメータの使用 – Amazon Relational Database Service
- SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 – Amazon Relational Database Service
- Amazon RDS でのセキュリティ – Amazon Relational Database Service
- Amazon RDS の PostgreSQL DB インスタンスに対して暗号化された接続を有効にする – AWS 規範ガイダンス
- Amazon RDS DB インスタンスの DB パラメータグループ – Amazon Relational Database Service
問題文:
ある物流企業は、AWS 上の Amazon EC2 および Amazon RDS リソースのコスト配分と管理を強化するため、すべての AWS リソースに対して厳格なタグ付けポリシーを導入することにしました。インフラ担当エンジニアは、ポリシーに準拠していないリソースを継続的に特定する仕組みを構築する必要があります。
この要件を満たす最も効率的なソリューションを選択してください。
選択肢:
A. 指定されたタグのすべてのリソースを評価するカスタム AWS Lambda 関数を呼び出す AWS Config のルールを作成します。
B. 指定されたタグのためのすべての作成または更新されたリソースを評価するために、マネージドルールで Amazon EventBridge にルールを作成します。
C. 指定されたタグのためにすべての作成または更新されたリソースを評価するカスタム AWS Lambda 関数を呼び出す Amazon EventBridge のルールを作成します。
D. AWS Config で、指定したタグのすべてのリソースを評価する required-tags マネージドルールを使用します。
正解:D
A. 指定されたタグのすべてのリソースを評価するカスタム AWS Lambda 関数を呼び出す AWS Config のルールを作成します。
不正解 カスタムLambda関数を使用してAWS Configルールを作成する方法は技術的に可能ですが、required-tagsマネージドルールという既成のソリューションが存在するため非効率です。カスタム実装では開発工数、テスト工数、保守運用コストが発生し、デバッグや機能拡張の負担も増加します。
B. 指定されたタグのためのすべての作成または更新されたリソースを評価するために、マネージドルールで Amazon EventBridge にルールを作成します。
不正解 Amazon EventBridgeにマネージドルールを作成するという表現は技術的に正確ではありません。EventBridgeはイベント駆動型のサービスでありリソースのタグ評価には適していません。また、EventBridgeのマネージドルールという概念は存在せず、AWS Configのマネージドルールと混同された記述となっています。
C. 指定されたタグのためにすべての作成または更新されたリソースを評価するカスタム AWS Lambda 関数を呼び出す Amazon EventBridge のルールを作成します。
不正解 EventBridgeとカスタムLambda関数の組み合わせはリアルタイムなイベント処理には適していますが、既存リソース全体の継続的な監視には不向きです。また、カスタム実装により開発・運用コストが増大し、AWS Configのマネージドルール機能と比較して効率性に劣ります。
D. AWS Config で、指定したタグのすべてのリソースを評価する required-tags マネージドルールを使用します。
正解 AWS Configのrequired-tagsマネージドルールは、指定されたタグがリソースに適切に設定されているかを自動評価する最適なソリューションです。既存の全リソースを継続的に監視し、タグ付け要件に準拠していないリソースを自動検出できます。カスタム開発不要で設定も簡単で運用負担を最小化できます。
全体的な説明
問われている要件
- すべてのAWSリソースに対する厳格なタグ付け要件の実装
- タグ付けされていないリソースの特定と継続的な監視
- 運用効率を重視した最適なソリューションの選択
- EC2およびRDSを含む複数のAWSサービスへの対応
- 管理者の運用負担を最小化する実装方法
前提知識
AWS設定監視サービスの特徴
- AWS Config:AWSリソースの設定変更を記録し、設定の準拠性を評価するサービスで、マネージドルールにより事前定義されたルールセットを利用可能
- Configuration Item:各リソースの設定情報を時系列で記録し、設定変更の履歴追跡が可能
- 評価範囲:アカウント内のすべてのサポートされたリソースタイプを自動で対象とし、リージョン単位での設定が可能
マネージドルールとカスタムルール
- required-tagsマネージドルール:指定されたタグキーがリソースに存在するかを評価し、タグ値の検証も可能で設定が簡単
- カスタムルール:Lambda関数を使用した独自の評価ロジックを実装可能だが、開発・テスト・運用コストが発生
- 評価トリガー:設定変更時や定期実行により自動評価を実施し、非準拠リソースを即座に特定
イベント処理サービスについて
- Amazon EventBridge:AWSサービスからのイベントをルーティングし、リアルタイム処理に適しているがタグ評価の継続監視には不向き
- イベントパターン:特定のリソース変更イベントをキャッチ可能だが、既存リソース全体の評価には限界がある
解くための考え方
この問題では、企業全体のタグ付け要件を効率的に実装し、継続的に監視する最適な方法を選択する必要があります。まず、要件を整理すると、既存のすべてのリソースを評価し、今後作成されるリソースも継続的に監視する仕組みが必要です。
AWS Configは、まさにこのようなリソース設定の準拠性を評価するために設計されたサービスです。特にrequired-tagsマネージドルールは、タグ付け要件の評価に特化した機能で、複雑な設定なしに即座に利用できます。このルールを使用することで、指定されたタグキーがリソースに存在するかどうかを自動的に評価し、非準拠のリソースを特定できます。
一方、カスタムLambda関数やEventBridgeを使用したソリューションは、技術的には実現可能ですが、開発工数、テスト、運用保守のコストが発生します。また、EventBridgeはイベント駆動型の処理に適しており、継続的なリソース監視よりもリアルタイムなイベント処理に向いています。
運用効率を重視する観点から、既存のマネージドサービスを活用することで、開発リスクを排除し、AWSが提供する信頼性の高い機能を利用できます。required-tagsマネージドルールは、設定が簡単で、すべてのサポートされたリソースタイプに対応し、準拠性レポートの生成も自動化されているため、最も効率的なソリューションと言えます。
参考資料
問題文:
大手物流会社のインフラチームは、会社のメインの AWS 本番アカウントで新しい Amazon EC2 インスタンスが起動されるたびに、直ちにメール通知を受け取る必要があります。
この要件を満たす最適な方法を選択してください。
選択肢:
A. Amazon Simple Notification Service (SNS) トピックと、メールプロトコルを使用するサブスクリプションを作成します。サブスクライバーとしてインフラチームのメールアドレスを入力します。EC2 インスタンスの起動時に反応する Amazon EventBridge ルールを作成し、ルールのターゲットとして SNS トピックを指定します。
B. Amazon Simple Queue Service (SQS) キューと、電子メールプロトコルを使用するサブスクリプションを作成します。サブスクライバーとしてインフラチームのメールアドレスを入力します。EC2 インスタンスの起動時に反応する Amazon EventBridge ルールを作成し、ルールのターゲットとして SQS キューを指定します。
C. スマートホストコネクタを介してメールメッセージを送信するユーザーデータスクリプトを作成します。ユーザーデータスクリプトにはインフラチームのメールアドレスを受信者として含めます。すべての新しい EC2 インスタンスに標準化されたビルドプロセスの一部としてユーザーデータスクリプトが含まれていることを確認します。
D. Amazon Simple Notification Service (SNS) トピックを作成します。EC2 イベントを SNS トピックに発行するように AWS Systems Manager を設定します。SNS トピックをポーリングする AWS Lambda 関数を作成し、インフラチームのメールアドレスにメッセージを送信するように設定します。
正解:A
A. Amazon Simple Notification Service (SNS) トピックと、メールプロトコルを使用するサブスクリプションを作成します。サブスクライバーとしてインフラチームのメールアドレスを入力します。EC2 インスタンスの起動時に反応する Amazon EventBridge ルールを作成し、ルールのターゲットとして SNS トピックを指定します。
正解 SNSトピックとEventBridgeルールの組み合わせは、EC2インスタンス起動イベントをリアルタイムで検出し、即座にメール通知を送信する最適なソリューションです。EventBridgeはEC2のStateChange Notificationイベントを自動キャッチし、SNSは複数の宛先に同時配信が可能で、設定も簡単です。管理負担が最小で信頼性が高い標準的な実装方式です。
B. Amazon Simple Queue Service (SQS) キューと、電子メールプロトコルを使用するサブスクリプションを作成します。サブスクライバーとしてインフラチームのメールアドレスを入力します。EC2 インスタンスの起動時に反応する Amazon EventBridge ルールを作成し、ルールのターゲットとして SQS キューを指定します。
不正解 SQSはメッセージキューイングサービスであり、メール送信機能は提供していません。SQSにメッセージが送信された後、別途Lambda関数などでメッセージを取得し、メール送信処理を実装する必要があります。また、SQSには電子メールプロトコルを使用するサブスクリプション機能は存在せず、技術的に実現不可能な構成です。
C. スマートホストコネクタを介してメールメッセージを送信するユーザーデータスクリプトを作成します。ユーザーデータスクリプトにはインフラチームのメールアドレスを受信者として含めます。すべての新しい EC2 インスタンスに標準化されたビルドプロセスの一部としてユーザーデータスクリプトが含まれていることを確認します。
不正解 ユーザーデータスクリプトによるメール送信は、各EC2インスタンスに個別の設定が必要で管理が非効率的です。インスタンス起動時の処理時間増加、メール送信失敗時の再試行機構の不備、スクリプト管理の複雑化などの問題があります。さらに、AMIやAutoScalingグループでの統一的な管理が困難になります。
D. Amazon Simple Notification Service (SNS) トピックを作成します。EC2 イベントを SNS トピックに発行するように AWS Systems Manager を設定します。SNS トピックをポーリングする AWS Lambda 関数を作成し、インフラチームのメールアドレスにメッセージを送信するように設定します。
不正解 この構成には複数の技術的誤りがあります。Systems ManagerはEC2イベントをSNSに自動発行する機能を持たず、SNSはプッシュ型通知サービスであるためポーリングされません。また、SNS自体がメール送信機能を提供しているため、Lambdaを追加する構成は冗長で不必要な複雑性を増します。
全体的な説明
問われている要件
- 新しいEC2インスタンス起動イベントのリアルタイム検知と即座の通知
- インフラチーム宛ての確実なメール配信機能の実装
- 本番環境での安定性と管理効率を重視したソリューション選択
- スケーラブルで運用負担の少ないイベント駆動型アーキテクチャの構築
- 複数の受信者への同時配信とメール配信の信頼性確保
前提知識
イベント駆動型通知サービスの特徴
- Amazon EventBridge:以前のCloudWatch Eventsの進化版で、EC2ライフサイクルイベントやAWSサービス間のイベントルーティングに特化したサーバーレスイベントバス
- EC2 State Change Notification:インスタンスの起動、停止、終了などの状態変化を自動検出し、JSONフォーマットでイベント情報を提供
- ルールパターンマッチング:特定のイベントタイプやリソース属性に基づいたフィルタリングが可能で、必要なイベントのみを対象とした処理が実現
- ターゲット設定:SNS、Lambda、SQS、Kinesisなど複数のAWSサービスをターゲットとして指定可能
通知サービスの比較と適用場面
- Amazon SNS:プッシュ型通知サービスでメール、SMS、HTTP、Lambda、SQSなど多様なプロトコルをサポート、ファンアウト配信により複数の宛先への同時配信が可能
- Amazon SQS:メッセージキューイングサービスでアプリケーション間の非同期通信に特化、Direct-to-Email機能は存在せず、別途処理機構が必要
- トピックベース配信:SNSトピックを使用することで購読者の動的な追加・削除が容易で、配信先の管理を簡素化
- デッドレターキュー:配信失敗時の再試行とエラーハンドリング機能により通知の信頼性を向上
EC2インスタンス管理とユーザーデータの制約
- ユーザーデータスクリプト:インスタンス起動時に一度だけ実行されるCloud-Initスクリプトで、主に初期設定用途に使用
- 実行環境の制限:インスタンス内部での実行のため外部依存関係やネットワーク接続に依存し、失敗時のエラーハンドリングが困難
- 管理の複雑性:AMI作成、AutoScalingグループ、LaunchTemplateでの統一管理が必要で、スクリプトの更新時に全体的な再デプロイが発生
- セキュリティリスク:メール送信に必要な認証情報やSMTPサーバー情報をユーザーデータに含める必要があり、セキュリティ上のリスクが増大
Systems Managerとその他のサービス連携
- AWS Systems Manager:EC2およびオンプレミスサーバーの管理サービスで、パッチ適用、設定管理、ドキュメント実行に特化
- EventBridgeとの連携:Systems Manager自体はEventBridgeにイベントを発行する機能は持たないが、Systems Managerが実行するタスクの結果をEventBridge経由で通知可能
- サービス間統合:各AWSサービスは特定の役割に最適化されており、適切なサービス選択により効率的なアーキテクチャを構築可能
解くための考え方
EC2インスタンスの起動イベントを検知してメール通知を送信するシステムを設計する場合、イベント駆動型アーキテクチャの原則に基づいて最適なサービス組み合わせを選択する必要があります。
まず、EC2インスタンスの起動を検知する仕組みを考えると、EventBridgeが最適な選択肢です。EventBridgeはEC2のライフサイクルイベントを自動的に検出し、State Change Notificationとして詳細な情報を提供します。このイベントには、インスタンスID、起動時刻、インスタンスタイプ、可用性ゾーンなどの有用な情報が含まれており、通知内容を充実させることができます。
次に、メール通知の実装については、SNSが最も直接的で効率的なソリューションです。SNSはメールプロトコルを直接サポートしており、複数の受信者への同時配信、配信の信頼性確保、エラーハンドリング機能を提供しています。メールアドレスの追加や削除も簡単で、運用面での柔軟性が高いのが特徴です。
他の選択肢を検討すると、SQSを使用した場合はメッセージキューに格納された後、別途メール送信処理を実装する必要があり、不必要な複雑性が生じます。ユーザーデータスクリプトを使用した場合は、各インスタンスに個別の設定が必要で、管理負担が大幅に増加し、失敗時の対処も困難になります。
Systems ManagerとLambdaを組み合わせた複雑な構成も、SNSの直接的なメール配信機能を考慮すると冗長であり、障害点の増加と運用コストの増大につながります。
理想的なアーキテクチャでは、EventBridgeルールでEC2起動イベントを検出し、即座にSNSトピックにメッセージを送信することで、シンプルで信頼性の高いリアルタイム通知システムを構築できます。この構成は、AWSのサーバーレスアーキテクチャの利点を最大限に活用し、運用負担を最小化しながら高い可用性を実現します。
参考資料
- Amazon EventBridge とは – Amazon EventBridge
- Amazon SNS とは – Amazon Simple Notification Service
- EventBridge ルールの作成 – Amazon EventBridge
- Amazon EC2 イベント – Amazon EventBridge
- Amazon SNS でのメッセージの発行 – Amazon Simple Notification Service
- SNS トピックへの E メールアドレスのサブスクライブ – Amazon Simple Notification Service
- Amazon SQS とは – Amazon Simple Queue Service
- EC2 インスタンスでのユーザーデータの実行 – Amazon Elastic Compute Cloud
問題文:
あるECサイト運営会社のDevOpsエンジニアは、Ubuntu を実行している数百の Amazon EC2 インスタンスにデプロイされた注文処理アプリケーションのログファイルを収集し、Amazon CloudWatch Logs に保存する必要があります。
運用オーバーヘッドを最小限に抑えつつ、ログファイルを収集するための最適な方法を選択してください。
選択肢:
A. 各 EC2 インスタンスで Amazon Linux パッケージマネージャを使用して CloudWatch エージェントをインストールし、注文処理アプリケーションのログファイルを収集するように各エージェントを構成します。
B. AWS Systems Manager Parameter Store に CloudWatch エージェント構成を保存します。Systems Manager を使用して、各 EC2 インスタンスに CloudWatch エージェントをインストールし、注文処理アプリケーションのログファイルを収集するように各エージェントを構成します。
C. AWS Systems Manager を使用して、各 EC2 インスタンスに CloudWatch エージェントをインストールします。CloudWatch 構成ウィザードを使用して各エージェントを構成し、注文処理アプリケーションのログファイルを収集するように設定します。
D. 各 EC2 インスタンス上の syslogd サービスを構成して、注文処理アプリケーションのログファイルを収集し、CloudWatch Logs に送信します。
正解:B
A. 各 EC2 インスタンスで Amazon Linux パッケージマネージャを使用して CloudWatch エージェントをインストールし、注文処理アプリケーションのログファイルを収集するように各エージェントを構成します。
不正解 Amazon LinuxパッケージマネージャはUbuntu環境では使用できません。UbuntuではAptパッケージマネージャを使用する必要があります。また、数百のインスタンスに対して個別にエージェントをインストールし構成する方法は、手動作業が多く運用負担が非常に大きくなります。スケールアウト時の追加設定や設定変更時の一括更新も困難です。
B. AWS Systems Manager Parameter Store に CloudWatch エージェント構成を保存します。Systems Manager を使用して、各 EC2 インスタンスに CloudWatch エージェントをインストールし、注文処理アプリケーションのログファイルを収集するように各エージェントを構成します。
正解 Parameter StoreにCloudWatchエージェントの構成ファイルを保存し、Systems Managerを使用して一括インストール・構成する方法は最も効率的です。Run Commandを使用して数百のインスタンスに同時にエージェントをデプロイでき、構成の統一性と管理の簡素化を実現します。設定変更時もParameter Storeの更新だけで全インスタンスに反映可能です。
C. AWS Systems Manager を使用して、各 EC2 インスタンスに CloudWatch エージェントをインストールします。CloudWatch 構成ウィザードを使用して各エージェントを構成し、注文処理アプリケーションのログファイルを収集するように設定します。
不正解 Systems Managerでのエージェントインストール自動化は適切ですが、CloudWatch構成ウィザードを使用した個別構成は運用負担を大きく増加させます。数百のインスタンスに対して手動でウィザードを実行することは現実的ではなく、構成の一貫性確保も困難になります。また、設定変更時に全インスタンスでの再設定が必要となります。
D. 各 EC2 インスタンス上の syslogd サービスを構成して、注文処理アプリケーションのログファイルを収集し、CloudWatch Logs に送信します。
不正解 syslogdサービスの直接構成によるCloudWatch Logs送信は技術的に可能ですが、CloudWatchエージェントと比較して機能が限定的です。ログのフィルタリング、メタデータの追加、複数ログファイルの柔軟な管理などの高度な機能が利用できません。また、syslog設定の管理とトラブルシューティングの複雑性も増大します。
全体的な説明
問われている要件
- Ubuntu環境の数百のEC2インスタンスでのCloudWatchエージェント大規模展開
- カスタムアプリケーションログファイルのCloudWatch Logsへの効率的な収集
- 運用オーバーヘッド最小化を重視したスケーラブルな管理手法の実装
- 構成の統一性確保と変更管理の簡素化を実現するソリューション選択
- 新規インスタンス追加時の自動化対応と既存インスタンスの一括管理
前提知識
CloudWatchエージェントの特徴と機能
- CloudWatch Agent:統合ログおよびメトリクス収集エージェントで、EC2インスタンスやオンプレミスサーバーからのデータ収集に特化
- マルチプラットフォーム対応:Amazon Linux、Ubuntu、CentOS、Windows Serverなど幅広いOSをサポートし、統一的な設定と管理が可能
- 高度なログ処理機能:ログファイルのフィルタリング、パターンマッチング、メタデータ追加、複数ログストリームの同時処理をサポート
- JSON形式設定ファイル:詳細なログ収集設定とカスタマイズが可能で、複雑なログファイル構成にも対応
AWS Systems Managerによる大規模管理
- Systems Manager Run Command:数千のインスタンスに対する並列コマンド実行機能で、エージェントのインストールや設定変更を一括処理
- Systems Manager Agent(SSM Agent):Ubuntu 16.04以降にプリインストールされており、追加設定なしでSystems Manager機能を利用可能
- Session Manager:SSH接続不要でのリモートアクセス機能を提供し、セキュリティ要件の厳しい環境でも管理作業を実行可能
- インベントリ管理:インスタンス構成情報の収集と追跡により、エージェント導入状況の一元的な把握が可能
Parameter Storeによる構成管理
- AWS Systems Manager Parameter Store:階層化された設定データの安全な保存と共有機能で、暗号化オプションとアクセス制御を提供
- 設定の中央管理:CloudWatchエージェントの構成ファイルを一箇所で管理し、複数のインスタンス間での設定統一を実現
- バージョン管理:構成変更の履歴追跡と以前のバージョンへのロールバック機能により、変更管理の安全性を確保
- 動的設定更新:Parameter Store の値更新により、エージェント再起動時に最新設定を自動取得可能
従来のログ収集手法との比較
- syslogd設定:システム標準のログ管理機能だが、CloudWatch Logsとの直接連携機能は限定的で、追加のフォワーダー設定が必要
- rsyslogやsyslog-ng:より高機能なsyslog実装だが、CloudWatchエージェントと比較して設定の複雑性とメンテナンス負担が増大
- カスタムスクリプト:独自のログ転送スクリプトの作成も可能だが、エラーハンドリング、再送機能、監視機能の実装が必要で開発・運用コストが高い
解くための考え方
大規模なEC2環境でのログ収集システムを設計する場合、スケーラビリティと運用効率性を両立させることが最重要課題となります。数百のインスタンスという規模では、手動での個別設定や管理は現実的ではなく、自動化とインフラストラクチャ・アズ・コードの原則に基づいたアプローチが必須です。
まず、CloudWatchエージェントの選択は妥当です。これは、AWSが公式に提供するログ収集エージェントであり、CloudWatch Logsとのネイティブ統合、豊富なログ処理機能、マルチプラットフォーム対応などの利点があります。syslogdなどの従来手法と比較して、AWS環境に最適化された機能と信頼性を提供します。
次に、大規模展開の実現方法として、Systems Managerが最適な選択肢です。Run Command機能により、数百のインスタンスに対して並列でエージェントのインストールと構成を実行できます。また、Session Managerを使用することで、セキュリティを維持しながらリモート管理作業を実施可能です。
構成管理の観点では、Parameter Storeの活用が重要な差別化要因となります。CloudWatchエージェントの設定ファイルをParameter Storeに保存することで、全インスタンスで統一された構成を確保できます。設定変更が必要な場合も、Parameter Storeの値を更新するだけで、全インスタンスに新しい設定を配布できます。
この構成では、新規インスタンスの追加時にも、同じSystems Managerコマンドを実行するだけでエージェント環境を自動構築できます。AutoScalingグループと組み合わせることで、インスタンスの自動スケーリング時にも一貫したログ収集環境を維持できます。
運用面では、CloudWatch Metricsを通じてエージェントの稼働状況を監視し、異常があれば即座に検知・対応できます。また、Systems Managerのインベントリ機能により、エージェントのバージョンや設定状況を一元的に把握でき、コンプライアンス管理も効率化されます。
このアプローチにより、初期導入時の作業効率化だけでなく、継続的な運用における管理負担の最小化と、設定変更時の迅速な対応が実現されます。
参考資料
- CloudWatch エージェント – Amazon CloudWatch
- AWS Systems Manager とは – AWS Systems Manager
- AWS Systems Manager Parameter Store – AWS Systems Manager
- CloudWatch エージェントを使用したログとメトリクスの収集 – Amazon CloudWatch
- Systems Manager Run Command – AWS Systems Manager
- CloudWatch Logs とは – Amazon CloudWatch Logs
- Parameter Store でのパラメータの使用 – AWS Systems Manager
- CloudWatch エージェントの設定ファイル – Amazon CloudWatch
問題文:
あるゲーム会社のバックエンドサーバーでは、特定のゲームプロセスが誤動作し、CPUリソースを 100% 使い切ることが確認されています。DevOpsエンジニアは、この問題が 2 分以上継続した場合に Amazon EC2 インスタンスを自動的に再起動するプロセスを構築したいと考えています。
これを実現する最適な方法を選択してください。
選択肢:
A. 基本モニタリングを使用して、EC2 インスタンスの Amazon CloudWatch アラームを作成します。インスタンスを再起動するアクションを追加します。
B. EC2 のヘルスチェックによって呼び出される EC2 インスタンスを再起動する AWS Lambda 関数を作成します。
C. 詳細モニタリングを使用して、EC2 インスタンスの Amazon CloudWatch アラームを作成します。インスタンスを再起動するアクションを追加します。
D. EC2 インスタンスを再起動する AWS Lambda 関数を作成し、2 分ごとにスケジュールに基づいて起動させます。
正解:C
A. 基本モニタリングを使用して、EC2 インスタンスの Amazon CloudWatch アラームを作成します。インスタンスを再起動するアクションを追加します。
不正解 基本モニタリングはメトリクスを5分間隔で収集するため、2分以上という条件を正確に検出できません。最短でも5分後の検出となり、要件である2分以上の問題継続を検知する精度が不十分です。また、アラーム評価期間も5分間隔となるため、迅速な対応ができません。
B. EC2 のヘルスチェックによって呼び出される EC2 インスタンスを再起動する AWS Lambda 関数を作成します。
不正解 EC2ヘルスチェックは主にインスタンスの到達可能性やシステム状態をチェックする機能で、CPU使用率100%という特定のメトリクス条件での判定はサポートしていません。ヘルスチェック失敗時のLambda関数実行も標準機能として提供されておらず、カスタム実装が必要で複雑性が増します。
C. 詳細モニタリングを使用して、EC2 インスタンスの Amazon CloudWatch アラームを作成します。インスタンスを再起動するアクションを追加します。
正解 詳細モニタリングによりメトリクス収集間隔を1分に短縮できるため、CPU使用率100%の状態を精密に監視可能です。CloudWatchアラームで評価期間を2分、データポイント数を2に設定することで、2分間連続でCPU使用率100%の条件を満たした場合のみインスタンス再起動アクションを実行できます。設定も簡単で信頼性が高いソリューションです。
D. EC2 インスタンスを再起動する AWS Lambda 関数を作成し、2 分ごとにスケジュールに基づいて起動させます。
不正解 スケジュールベースの定期実行では、実際のCPU使用率状況に関係なくインスタンスが再起動されるため、正常動作中のゲームセッションにも悪影響を与えます。また、問題発生タイミングとスケジュール実行タイミングがずれる可能性があり、適切な問題解決にならない可能性があります。
全体的な説明
問われている要件
- CPU使用率100%という特定の異常状態の継続的な監視と検出
- 問題発生から正確に2分以上経過した時点での自動的なインスタンス再起動
- 誤検知を避けるための精密な条件設定と信頼性の高い自動化機構
- 運用負担を最小化する簡潔で保守性の高いソリューション実装
- 正常動作時への影響を排除した条件ベースの適切なアクション実行
前提知識
CloudWatchモニタリングレベルの特徴
- 基本モニタリング:無料で提供される5分間隔のメトリクス収集で、標準的なEC2監視に適用、CPU使用率、ネットワーク、ディスクI/Oなどの基本メトリクスを提供
- 詳細モニタリング:有料オプションとして1分間隔のメトリクス収集を提供し、より精密な監視と迅速な異常検出が可能、高解像度メトリクスによる詳細な分析をサポート
- カスタムメトリクス:アプリケーション固有のメトリクスを送信可能で、ビジネス要件に応じた監視項目を設定、1秒から1分間隔での送信が可能
CloudWatchアラームの動作メカニズム
- アラーム状態:OK、ALARM、INSUFFICIENT_DATAの3つの状態を持ち、メトリクス値と閾値の比較結果により状態が変化
- 評価期間とデータポイント:指定された評価期間内の複数データポイントを統計的に処理し、M個中N個の条件一致でアラーム状態に遷移
- アクション設定:アラーム状態変化時にSNS通知、EC2アクション(再起動、停止、終了)、Auto Scalingアクションなど複数のアクションを実行可能
- 統計処理:Average、Maximum、Minimum、Sum、SampleCountなどの統計関数により、複数データポイントを集約して評価
EC2インスタンスアクションの種類と影響
- 再起動(Reboot):インスタンスストアは維持され、EBSボリュームやElastic IPアドレスは保持、数分でサービス復旧が可能
- 停止(Stop):EBSベースインスタンスのみ対応、インスタンスストアデータは失われるが、EBSデータは保持、パブリックIPアドレスは変更される可能性
- 終了(Terminate):インスタンスとインスタンスストアを完全削除、EBSボリュームの削除設定に応じてデータが保持または削除
代替監視手法との比較
- EC2ヘルスチェック:SystemStatusCheckとInstanceStatusCheckによりハードウェアとソフトウェア障害を検出、但しCPU使用率などの性能メトリクスは対象外
- Auto Scalingヘルスチェック:インスタンスの応答性とサービス可用性を評価、アプリケーションレベルでのヘルスチェックも可能だが、特定メトリクス閾値での判定は不可
- カスタム監視スクリプト:任意の監視ロジックを実装可能だが、開発・運用コストが高く、CloudWatchの標準機能と比較して信頼性面でリスク
解くための考え方
この問題は、特定の性能異常状態を精密に検出し、適切なタイミングで自動復旧アクションを実行する監視システムの設計に関するものです。CPU使用率100%という明確な異常指標と、2分以上という具体的な継続時間条件が与えられているため、これらの要件を正確に満たす技術選択が重要です。
まず、監視の精度要件を分析すると、2分以上という条件を満たすためには、少なくとも1分間隔でのメトリクス収集が必要です。5分間隔の基本モニタリングでは、最短でも5分後の検出となり、要件の2分という条件を正確に判定できません。詳細モニタリングの1分間隔であれば、2つの連続するデータポイントで条件判定が可能になります。
CloudWatchアラームの設定では、評価期間を2分、データポイント数を2、閾値をCPU使用率90%以上(100%に近い値)として設定することで、2分間連続して高CPU使用率が継続した場合のみアラームが発火するように調整できます。この設定により、一時的なCPUスパイクや短期間の高負荷による誤検知を回避できます。
アクション実行の信頼性の観点では、CloudWatchアラームのEC2アクション機能は、AWSが提供する標準的な自動化機能であり、高い信頼性と保守性を持っています。カスタムLambda関数やスクリプトベースの実装と比較して、障害点が少なく、運用負担も最小限に抑えられます。
インスタンス再起動の影響を考慮すると、再起動アクションはEBSボリュームやネットワーク設定を維持しながら、オペレーティングシステムとアプリケーションプロセスをリセットします。誤動作したプロセスを強制終了し、システムを正常状態に復旧させる効果的な手段です。
他の選択肢と比較すると、ヘルスチェックベースやスケジュールベースのアプローチは、特定の性能メトリクス条件での精密な制御ができないため、要件に適合しません。また、無条件での定期再起動は、正常動作中のサービスにも悪影響を与える可能性があります。
結論として、詳細モニタリングとCloudWatchアラームの組み合わせにより、要件を満たす精密で信頼性の高い自動復旧システムを構築でき、運用効率と システムの可用性を同時に向上させることができます。
参考資料
- Amazon CloudWatch とは – Amazon CloudWatch
- 詳細モニタリングの有効化 – Amazon Elastic Compute Cloud
- Amazon CloudWatch アラームの使用 – Amazon CloudWatch
- EC2 アクションを実行するアラームの作成 – Amazon CloudWatch
- インスタンスの再起動 – Amazon Elastic Compute Cloud
- EC2 インスタンスのメトリクス – Amazon CloudWatch
- CloudWatch アラームの状態 – Amazon CloudWatch
- Auto Scaling のヘルスチェック – Amazon EC2 Auto Scaling
問題文:
ある医療情報サービス会社が、患者データ管理アプリケーションを Amazon EC2 インスタンスにデプロイします。アプリケーションコードは GitHub リポジトリに保存されています。同社は、AWS CodePipeline を使用して継続的インテグレーションおよびデリバリープロセスで EC2 インスタンスにコードをデプロイします。
セキュリティエンジニアは、患者データベースへの接続に使用する機密認証情報が EC2 インスタンス上で適切に構成されていることを確認し、認証情報の偶発的な漏洩を防ぐ必要があります。
最も安全な方法で機密情報を保存および取得できるソリューションを選択してください。(2つ選択)
選択肢:
A. AWS Secrets Manager に値を保存します。アプリケーションの起動時にこれらの値を取得するようにコードを更新します。環境変数として値を保存します。
B. 患者データベースの接続情報を Amazon S3 バケット内のテキストファイルに保存します。CI/CD パイプラインで、アプリケーションが読み取り可能なディスク上の適切な場所にある EC2 インスタンスにファイルをコピーします。
C. AWS Systems Manager Parameter Store に値を Secure String として保存します。アプリケーションの起動時にこれらの値を取得するようにコードを更新します。環境変数として値を保存します。
D. 認証情報を AWS Lambda 関数に保存します。アプリケーションの起動時に Lambda 関数を呼び出すようにコードを更新します。環境変数として値を挿入するよう Lambda 関数を設定します。
E. 患者データベースの認証情報を EC2 インスタンス上の設定ファイルに保存します。基盤となるドライブが AWS Key Management Service (AWS KMS) によって暗号化されていることを確認し、アプリケーションの起動時にファイルを読み込むようにアプリケーションを更新します。
正解:A、C
A. AWS Secrets Manager に値を保存します。アプリケーションの起動時にこれらの値を取得するようにコードを更新します。環境変数として値を保存します。
正解 AWS Secrets Managerは機密情報管理に特化したマネージドサービスで、データベース認証情報の保存と取得に最適化されています。AES-256暗号化、IAMによるきめ細かなアクセス制御、自動ローテーション機能、監査ログ機能を提供し、認証情報の漏洩リスクを最小限に抑えます。アプリケーション起動時のAPI呼び出しで安全に取得可能です。
B. 患者データベースの接続情報を Amazon S3 バケット内のテキストファイルに保存します。CI/CD パイプラインで、アプリケーションが読み取り可能なディスク上の適切な場所にある EC2 インスタンスにファイルをコピーします。
不正解 S3バケットでのテキストファイル保存は、一般的なオブジェクトストレージでの機密情報管理であり、専門的なセキュリティ機能が不足しています。バケットポリシーの設定ミス、パブリックアクセスの意図しない有効化、ファイルの平文での保存リスクなど、機密情報管理には不適切な手法です。
C. AWS Systems Manager Parameter Store に値を Secure String として保存します。アプリケーションの起動時にこれらの値を取得するようにコードを更新します。環境変数として値を保存します。
正解 Systems Manager Parameter StoreのSecure String機能は、KMS暗号化による機密パラメータの安全な保存を提供します。IAMによる詳細なアクセス制御、バージョン管理機能、CloudTrailによる監査ログ記録が可能で、コスト効率が高く機密情報管理に適しています。アプリケーションから直接API経由で安全に取得できます。
D. 認証情報を AWS Lambda 関数に保存します。アプリケーションの起動時に Lambda 関数を呼び出すようにコードを更新します。環境変数として値を挿入するよう Lambda 関数を設定します。
不正解 Lambda関数は機密情報の永続的な保存用途に設計されておらず、関数コード内やレイヤーに機密情報を保存することは重大なセキュリティリスクです。関数のソースコード閲覧、CloudWatch Logsでの意図しない出力、関数の更新時の機密情報露出などの危険性があり、適切な機密情報管理手法ではありません。
E. 患者データベースの認証情報を EC2 インスタンス上の設定ファイルに保存します。基盤となるドライブが AWS Key Management Service (AWS KMS) によって暗号化されていることを確認し、アプリケーションの起動時にファイルを読み込むようにアプリケーションを更新します。
不正解 EC2インスタンス上のファイル保存は複数のセキュリティリスクを内包します。インスタンスへの不正アクセス時のファイル直接読み取り、適切なファイル権限設定の管理負担、インスタンススナップショットやAMIでの意図しない機密情報の複製などが問題となります。KMS暗号化だけでは包括的な保護は不十分です。
全体的な説明
問われている要件
- データベース認証情報などの機密情報の安全な保存と暗号化による保護
- CI/CDパイプラインを通じた自動デプロイ時の認証情報の安全な取得機構
- 認証情報の偶発的な漏洩防止とアクセス制御の厳格な管理
- アプリケーション起動時の効率的で自動化された機密情報取得プロセス
- 監査要件とコンプライアンス対応を考慮したセキュリティベストプラクティスの実装
前提知識
機密情報管理専用サービスの特徴
- AWS Secrets Manager:データベースやAPIキーなどの機密情報管理に特化し、RDSやAuroraとの統合による自動ローテーション機能を提供、JSON形式での複雑な認証情報構造をサポート
- Parameter Store Secure String:KMS暗号化によるパラメータ保護機能で、階層化された名前空間管理と詳細なアクセス制御を実現、標準ティアとアドバンスティアでの機能差異
- 暗号化とキー管理:AWS KMSとの統合により、カスタマーマネージドキーまたはAWSマネージドキーでの暗号化オプションを選択可能
- 自動ローテーション:Secrets Managerでは事前定義されたLambda関数による認証情報の定期的な更新を自動実行
CI/CDパイプラインでの機密情報管理
- CodePipeline統合:ビルドおよびデプロイステージでの環境変数としての機密情報注入機能により、ソースコードからの機密情報分離を実現
- IAMロール設定:EC2インスタンスやCodeBuildサービスロールに適切な権限を付与し、最小権限の原則に基づいたアクセス制御を実装
- 環境固有設定:開発、ステージング、本番環境ごとの異なる認証情報を安全に管理し、環境間の設定ミスを防止
- デプロイ時セキュリティ:デプロイプロセス中の一時的な認証情報露出を防ぎ、ログやデバッグ情報での意図しない出力を回避
従来手法との比較とリスク分析
- ファイルベース保存:設定ファイルや環境ファイルでの平文保存は、ファイルシステムレベルでのアクセス制御の複雑性とバックアップ時の機密情報露出リスク
- ハードコーディング:ソースコード内への直接記述は、バージョン管理システムでの履歴保持とコードレビュー時の機密情報漏洩の最大リスク要因
- 環境変数のみ:プロセス環境での平文保存は、メモリダンプやプロセス一覧での機密情報の意図しない露出可能性
- S3オブジェクト:専用機密情報管理機能の欠如により、バージョニングとライフサイクル管理での複雑性増大
アクセス制御とモニタリング機能
- IAM統合:リソースベースポリシーとIDベースポリシーの組み合わせによる詳細なアクセス権限制御とクロスアカウントアクセス管理
- CloudTrail監査:機密情報へのアクセス履歴の完全な記録と、異常なアクセスパターンの検出による包括的な監査証跡
- VPCエンドポイント:プライベートネットワーク経由でのAPI呼び出しにより、機密情報取得時のネットワークレベルでのセキュリティ強化
- タグベース制御:リソースタグを活用した条件付きアクセス制御により、環境やプロジェクト単位での機密情報の分離管理
解くための考え方
機密データベース情報の安全な管理において、最も重要な原則は「機密情報の専門的な管理サービスの利用」と「最小権限アクセスの実装」です。従来のファイルベースやハードコーディングによる管理手法は、現代のクラウドセキュリティ要件を満たすことができません。
AWS Secrets Managerは、機密情報管理に特化して設計されたサービスで、データベース認証情報の管理において理想的な機能を提供します。特に重要なのは自動ローテーション機能で、定期的にパスワードを変更することで、長期間同一の認証情報を使用することによるリスクを大幅に軽減できます。また、RDSやAuroraとのネイティブ統合により、データベースエンジンレベルでの認証情報更新を自動化できます。
Systems Manager Parameter StoreのSecure String機能は、コスト効率と機能性のバランスが優れた選択肢です。特に、階層化されたパラメータ管理により、環境やアプリケーションごとの設定を体系的に整理でき、大規模なシステムでの運用効率を向上させます。KMS統合により、暗号化キーの管理も柔軟に対応できます。
CI/CDパイプラインでの機密情報取得において、これらの専門サービスを活用することで、ソースコード内での機密情報の露出を完全に排除できます。デプロイ時にアプリケーションが直接APIを呼び出して必要な認証情報を取得する仕組みにより、デプロイパッケージ内に機密情報を含める必要がなくなります。
アクセス制御の観点では、IAMロールとポリシーを適切に設定することで、必要な機密情報にのみアクセス可能な権限体系を構築できます。また、CloudTrailによる監査ログにより、いつ、誰が、どの機密情報にアクセスしたかを完全に追跡可能で、セキュリティインシデント発生時の迅速な対応を支援します。
環境変数への機密情報設定については、アプリケーション起動時にAPI経由で取得した値を環境変数に設定する方式により、プロセスレベルでの一時的な保存は許容されます。重要なのは、永続的な保存場所として専門的な管理サービスを使用し、取得プロセスを自動化することです。
結論として、AWS Secrets ManagerとSystems Manager Parameter Store Secure Stringの組み合わせにより、包括的で多層的な機密情報管理体制を構築でき、企業のセキュリティ要件とコンプライアンス要件を同時に満たすことができます。
参考資料
- AWS Secrets Manager とは – AWS Secrets Manager
- AWS Systems Manager Parameter Store – AWS Systems Manager
- Secrets Manager での機密情報の作成 – AWS Secrets Manager
- Parameter Store での SecureString パラメータの使用 – AWS Systems Manager
- CodePipeline での機密情報の管理 – AWS CodePipeline
- Secrets Manager のローテーション – AWS Secrets Manager
- Parameter Store の階層 – AWS Systems Manager
- AWS KMS との統合 – AWS Secrets Manager
スポンサーリンク
以下スポンサーリンクです。
この記事がお役に立ちましたら、コーヒー1杯分(300円)の応援をいただけると嬉しいです。いただいた支援は、より良い記事作成のための時間確保や情報収集に活用させていただきます。
