概要
Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループは、AWS インフラストラクチャへのアクセスを制限するための重要なコントロール機能です。このアクセスコントロールの効果を強化するために、セキュリティグループの設定をモニタリングして不正な変更から守ることができます。このラボでは、AWS Config ルールと AWS Lambda 関数を併用して EC2 セキュリティグループに関連付けられた Ingress ポートをモニタリングする方法について学習します。Lambda 関数は、セキュリティグループが変更されるたびに呼び出されます。Ingress ルールの設定が Lambda 関数にある設定と異なると、関数によって Ingress ルールは適切な設定に戻されます。
取り上げるトピック
このラボを修了すると、以下のことができるようになります。
- AWS Config を有効にする
- カスタムの AWS Config ルールを作成して有効にする
- AWS Config ルールの評価の結果を確認する
技術知識の前提条件
このラボを完了するには、EC2 セキュリティグループと AWS マネジメントコンソールの基本操作に関する知識が必要です。
AWS Config とは
AWS Config は、AWS アカウント内の AWS リソースの設定を詳細に表示します。これにはリソースの相互関連性や過去の設定が含まれているため、設定と関連性が時間の経過とともにどのように変化するかを確認できます。AWS Config を使うと、以下のことを行えます。
- AWS リソースの設定と理想的な設定を比較評価する
- AWS アカウントに関連するサポート対象リソースの現行設定のスナップショットを取得する
- お客様のアカウントに存在する 1 つまたは複数のリソースの設定を取得する
- 1 つまたは複数のリソースの設定履歴を取得する
- リソースが作成、変更、削除されたときに通知を受け取る
- リソース間の関連性を表示する(特定のセキュリティグループを使用するリソースをすべて見つける必要がある場合など)
このラボでは、セキュリティグループが変更されるたびに Lambda 関数を呼び出すカスタムルールを作成します。Lambda 関数では、Ingress ルールが事前に設定されたパターンと異なるかどうかが確認されます。
AWS Config の使用に関する詳細については、https://aws.amazon.com/documentation/config/ で Amazon Web Services の公式ドキュメントを参照してください。料金の詳細については、https://aws.amazon.com/config/pricing/ を参照してください。
AWS Lambda とは
AWS Lambda は、クラウド内で提供されるサーバーレスコンピューティングサービスです。コンピューティング性能の規模を変更できるため、デベロッパーはウェブスケールコンピューティングを簡単に実現できます。Lambda にコードをアップロードすると、コードは AWS インフラストラクチャを使用して自動的に実行されます。Lambda では、Node.js、Java、Python、Go、.Net、Ruby などの複数のプログラミング言語がサポートされています。
コードをアップロードして Lambda 関数を作成すると、コードの実行に使用されるサーバーのプロビジョニングや管理は AWS Lambda によって行われます。このラボでは、AWS Lambda をトリガードリブン型のコンピューティングサービスとして使用します。このサービスでは、Amazon EC2 セキュリティグループの変更に応じて AWS Lambda によってコードが実行されるようにします。 Lambda 関数のコードは S3 バケットで提供されます。
AWS Lambda の使用に関する詳細については、https://aws.amazon.com/documentation/lambda/ で Amazon Web Services の公式ドキュメントを参照してください。料金の詳細については、https://aws.amazon.com/lambda/pricing/ を参照してください。
アイコンキー
このラボでは、さまざまな種類の手順と注記への注意を促すため、各種アイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- コマンドまたは編集済みファイルの出力の検証に使用できるサンプル出力
- ヒントや重要なガイダンス
- 詳細情報が記載されている場所
- 特記事項または重要な情報 (この情報を読み忘れると、機器やデータに問題が発生するというわけではありませんが、特定のステップを繰り返す必要が生じる可能性があります)
- 実行する必要のあるスクリプトまたはファイルの内容を示す、事前に作成されたコードブロック
- 知識の確認と学習した内容のテスト
- 新しい情報を表示するためにウェブブラウザのページまたはリストを更新する必要がある場合