Troposphere を使用して AWS Config マネージドルールを含む AWS CloudFormation テンプレートを生成する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Troposphere を使用して AWS Config マネージドルールを含む AWS CloudFormation テンプレートを生成する

作成者:ルーカス・ネイション (AWS) とフレディ・ウィルソン (AWS)

環境:本稼働

テクノロジー: DevOps、管理とガバナンス、セキュリティ、アイデンティティ、コンプライアンス

ワークロード: Microsoft、オープンソース

AWS サービス: AWS ConfigAWS CloudFormation

[概要]

多くの組織は、「AWS Config マネージド」ルールを使用して、Amazon Web Services (AWS) リソースのコンプライアンスを一般的なベストプラクティスに照らして評価しています。ただし、これらのルールは保守に時間がかかる場合があり、このパターンは Python ライブラリである「Troposphere」を活用して AWS Config マネージドルールを生成および管理するのに役立ちます。

このパターンは、Python スクリプトを使用して AWS Config マネージドルールを管理するのに役立ちます。 CloudFormation Troposphere は infrastructure as code (IaC) として機能します。つまり、JSON や YAML 形式のファイルを使用する代わりに、マネージドルールで Excel スプレッドシートを更新できるということです。次に、テンプレートを使用して、AWS アカウントで マネージドルールを作成および更新する AWS CloudFormation スタックを起動します。

AWS CloudFormation テンプレートは、Excel スプレッドシートを使用して各 AWS Config マネージドルールを定義し、AWS マネジメントコンソールで個々のルールを手動で作成しないようにします。このスクリプトは、各マネージドルールのパラメータを空のディクショナリに、スコープのComplianceResourceTypesデフォルトを からデフォルトにしますTHE_RULE_IDENTIFIER.template fileルール識別子の詳細については、AWS Config ドキュメントの「AWS CloudFormation テンプレートを使用した AWS Config マネージドルールの作成」を参照してください。 AWS Config

前提条件と制限

前提条件

エピック

タスク説明必要なスキル
サンプル Excel スプレッドシートを更新してください。

サンプル excel_config_rules.xlsx Excel スプレッドシート (添付) をダウンロードし、使用したい AWS Config マネージドルールを Implemented としてラベルを付けます。 

としてマークされたルールImplementedが AWS CloudFormation テンプレートに追加されます。

開発者
(オプション) config_rules_params.json ファイルを AWS Config ルールパラメータで更新します。

一部の AWS Config マネージドルールはパラメータを必要とするため、--param-file オプションを使用して JSON ファイルとして Python スクリプトに渡す必要があります。たとえば、access-keys-rotated マネージドルールは次の maxAccessKeyAge パラメータを使用します。

{ "access-keys-rotated": { "InputParameters": { "maxAccessKeyAge": 90 } } }

このサンプルパラメータでは、maxAccessKeyAge は 90 日に設定されています。スクリプトはパラメータファイルを読み取り、見つかった InputParameters をすべて追加します。

開発者
(オプション) config_rules_params.json ファイルを AWS Config ComplianceResourceTypesで更新します。

デフォルトでは、Python スクリプトは AWS 定義のテンプレートから ComplianceResourceTypes を取得します。特定の AWS Config マネージドルールの範囲をオーバーライドする場合は、--param-file オプションを使用して JSON ファイルとして Python スクリプトに渡す必要があります。

たとえば、次のサンプルコードは、ec2-volume-inuse-checkComplianceResourceTypes["AWS::EC2::Volume"] リストに設定する方法を示しています。

{ "ec2-volume-inuse-check": { "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Volume" ] } } }
開発者
タスク説明必要なスキル
requirements.txt ファイルから pip パッケージをインストールします。

requirements.txt ファイル (添付) をダウンロードし、IDE で次のコマンドを実行して Python パッケージをインストールします。

pip3 install -r requirements.txt

開発者
Python スクリプトを実行する。
  1. 添付 aws_config_rules.py ファイルをローカルマシンにダウンロードします。

  2. - python3 aws_config_rules.py --ou <OU_NAME> コマンドを実行します。注:--ou は Excel スプレッドシートで選択する OU 列を定義します。

また、次のオプションパラメータを含めることができます。

  • --config-rule-option — Excel スプレッドシートから選択するルールを定義します。デフォルトは Implemented パラメータ。

  • --excel-file — Excel スプレッドシートのパス。デフォルトは aws_config_rules.xlsx です。

  • --param-file — パラメータ JSON ファイルのパス。デフォルトは config_rules_params.json です。

  • --max-execution-frequency — AWS Config マネージドルールを評価する頻度を定義します。選択肢は One_HourThree_HoursSix_HoursTwelve_Hours、または TwentyFour_Hours です。デフォルトは TwentyFour_Hours です。

開発者
タスク説明必要なスキル
AWS CloudFormation スタックを起動します。
  1. AWS マネジメントコンソールにサインインし、AWS CloudFormation コンソールを開き、スタックの作成を選択します。

  2. テンプレートの指定 ページで、テンプレートファイルのアップロード を選択し、AWS CloudFormation テンプレートをアップロードします。 

  3. スタック名を指定し、[次へ] を選択します。

  4. タグを指定し、[次へ] を選択します。

  5. [スタックの作成] を選択します。

開発者

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip