

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

# パブリック IP アドレスからのアクセスを許可する AWS セキュリティグループを自動的に監査する
<a name="audit-security-groups-access-public-ip"></a>

*Amazon Web Services、Eugene Shifer、Stephen DiCato*

## 概要
<a name="audit-security-groups-access-public-ip-summary"></a>

セキュリティのベストプラクティスとして、絶対に必要なもののみへの AWS リソースの露出を最小限に抑えることが重要です。例えば、一般に公開されているウェブサーバーではインターネット経由の受信アクセスを許可する必要がありますが、不要な公開を可能な限り減らすために、他のワークロードへのアクセスは特定のネットワークに制限する必要があります。Amazon Virtual Private Cloud (Amazon VPC) の[セキュリティグループ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)は、リソースへのアクセスを制限できる効果的な制御機能です。ただし、セキュリティグループの評価は、とりわけマルチアカウントのアーキテクチャでは、面倒な作業になりがちです。[AWS Config ルール](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html)と [AWS Security Hub CSPM コントロール](https://docs.aws.amazon.com/securityhub/latest/userguide/controls-view-manage.html)を使用すれば、パブリックインターネット (0.0.0.0/0) から特定のネットワーク通信プロトコル (Secure Shell (SSH)、HTTP、HTTPS、Windows リモートデスクトッププロトコル (RDP) など) へのアクセスを許可しているセキュリティグループを特定することができます。ただし、これらのルールとコントロールは、サービスが非標準のポートで実行されている場合や、アクセスが特定のパブリック IP アドレスに制限されている場合には、適用されません。こういったことは、例えばウェブサービスが標準の TCP ポート 443 ではなく TCP ポート 8443 に関連付けられている場合などに起きる場合があります。また、開発者がテスト目的などでホームネットワークからサーバーにアクセスできる場合にも起きることがあります。

これに対処するには、このパターンで提供されているInfrastructure as Code (IaC) ソリューションを使用して、非プライベート ([RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) 非準拠) IP アドレスからユーザー AWS アカウント または AWS 組織内の任意のワークロードへのアクセスを許可するセキュリティグループを特定できます。[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) テンプレートは、カスタム AWS Config ルール、 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)関数、および必要なアクセス許可をプロビジョニングします。単一のアカウントに[スタック](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html)としてデプロイすることも、組織全体に[スタックセット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)としてデプロイすることもできます AWS Organizations。

## 前提条件と制限
<a name="audit-security-groups-access-public-ip-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ [GitHub](https://github.com/skills/introduction-to-github?tab=readme-ov-file) の使用経験がある
+ 単一の AWS アカウントにデプロイする場合:
  + CloudFormation スタックを作成するための[アクセス許可](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)
  + ターゲットアカウントでAWS Config [をセットアップ](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html)する
  + (オプション) ターゲットアカウントで[設定された](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-settingup.html#securityhub-manual-setup-overview) Security Hub CSPM
+  AWS 組織にデプロイする場合:
  + CloudFormation スタックセットを作成する[権限](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)
  +  AWS Organizations 統合で Security Hub CSPM [をセットアップ](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-settingup.html#securityhub-orgs-setup-overview)する
  + このソリューションをデプロイするアカウントでAWS Config [をセットアップ](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html)する
  +  AWS Config と Security Hub CSPM の委任管理者 AWS アカウント として を指定する

**制限事項**
+ Security Hub CSPM が有効になっていない個々のアカウントにデプロイする場合は、 AWS Config を使用して検出結果を評価できます。
+  AWS Config および Security Hub CSPM の委任管理者を持たない組織にデプロイする場合は、個々のメンバーアカウントにログインして結果を表示する必要があります。
+  AWS Control Tower を使用して組織内のアカウントを管理および管理する場合は、 [AWS Control Tower (CfCT) のカスタマイズ](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-overview.html)を使用して、このパターンで IaC をデプロイします。CloudFormation AWS Control Tower コンソールを使用すると、ガードレールから設定ドリフトが作成され、組織単位 (OUs) またはマネージドアカウントを再登録する必要があります。
+ 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」ページを参照して、サービスのリンクを選択します。

## アーキテクチャ
<a name="audit-security-groups-access-public-ip-architecture"></a>

**個人へのデプロイ AWS アカウント**

次のアーキテクチャ図は、単一の 内の AWS リソースのデプロイを示しています AWS アカウント。CloudFormation コンソールから CloudFormation テンプレートを直接使用して、リソースをプロビジョニングします。Security Hub CSPM が有効になっている場合は、 AWS Config または Security Hub CSPM のいずれかで結果を表示できます。Security Hub CSPM が有効になっていない場合は、 の結果のみを表示できます AWS Config。

![IaC テンプレートを単一の AWS アカウントに CloudFormation スタックとしてデプロイ。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/caa8013b-3578-434b-b2c0-5ca7faf45d2d/images/01318e4c-49b5-415f-ac7a-e45451c374cf.png)


この図表は、次のワークフローを示しています:

1. CloudFormation スタックを作成します。これにより、Lambda 関数と AWS Config ルールがデプロイされます。ルールと関数の両方に、 AWS Config および ログでリソース評価を発行するために必要な AWS Identity and Access Management (IAM) アクセス許可が設定されます。

1. この AWS Config ルールは[検出評価モードで](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config-rules.html#aws-config-rules-evaluation-modes)動作し、24 時間ごとに Lambda 関数を呼び出します。

1. Lambda 関数はセキュリティグループを評価し、更新を送信します AWS Config。

1. Security Hub CSPM はすべての AWS Config 検出結果を受け取ります。

1. アカウントで設定したサービスに応じて AWS Config、Security Hub CSPM または で検出結果を表示できます。

** AWS 組織にデプロイする**

次の図は、 AWS Organizations と を通じて管理される複数のアカウントへのパターンのデプロイを示しています AWS Control Tower。CfCT を使用して CloudFormation テンプレートをデプロイします。評価結果は、委任管理者アカウントの Security Hub CSPM に一元化されます。図の AWS CodePipeline ワークフローセクションは、CfCT デプロイ中に発生するバックグラウンドステップを示しています。

![IaC テンプレートを AWS Organizations に CloudFormation スタックセットとしてデプロイ。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/caa8013b-3578-434b-b2c0-5ca7faf45d2d/images/f4500347-a481-4cd3-ba14-25a034af7531.png)


この図表は、次のワークフローを示しています:

1. 管理アカウントで、IaC テンプレートの圧縮 (ZIP) ファイルを、CfCT でデプロイされた Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。

1. CfCT パイプラインがこのファイルを解凍し、[cfn-nag](https://github.com/stelligent/cfn_nag) (GitHub) チェックを実行し、テンプレートを CloudFormation スタックセットとしてデプロイします。

1. CfCT マニフェストファイルで指定した設定に応じて、CloudFormation StackSets はスタックを個々のアカウントまたは指定の OU にデプロイします。これにより、Lambda 関数と AWS Config ルールがターゲットアカウントにデプロイされます。ルールと関数の両方が、 AWS Config および ログでリソース評価を発行するために必要な IAM アクセス許可で設定されます。

1. この AWS Config ルールは[検出評価モードで](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config-rules.html#aws-config-rules-evaluation-modes)動作し、24 時間ごとに Lambda 関数を呼び出します。

1. Lambda 関数はセキュリティグループを評価し、更新を送信します AWS Config。

1. AWS Config は、すべての検出結果を Security Hub CSPM に転送します。

1. Security Hub CSPM の検出結果は、委任管理者アカウントに集約されます。

1. 集約された検出結果は、委任管理者アカウントの Security Hub CSPM で表示できます。

## ツール
<a name="audit-security-groups-access-public-ip-tools"></a>

**AWS のサービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) は、 のリソース AWS アカウント とその設定方法の詳細ビューを提供します。リソースがどのように相互に関連しているか、またそれらの構成が時間の経過とともにどのように変化したかを特定するのに役立ちます。An AWS Config [rule](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) は、リソースの理想的な構成設定を定義し、 AWS リソースがルールの条件に準拠しているかどうかを評価 AWS Config できます。
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html) は、規範的なベストプラクティスに従って、 AWS マルチアカウント環境のセットアップと管理に役立ちます。[AWS Control Tower (CfCT) のカスタマイズ](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-overview.html)は、 AWS Control Tower ランディングゾーンをカスタマイズし、 AWS ベストプラクティスとの整合性を保つのに役立ちます。このソリューションのカスタマイズは、CloudFormation テンプレートと AWS Organizations [サービスコントロールポリシー (SCPs](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) は、作成して一元管理する AWS アカウント 組織に複数の を統合するのに役立つアカウント管理サービスです。
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) は、 のセキュリティ状態の包括的なビューを提供します AWS。また、セキュリティ業界標準とベストプラクティスに照らして AWS 環境を確認するのにも役立ちます。

**その他のツール**
+ 「[Python](https://www.python.org/)」は汎用のコンピュータープログラミング言語です。

**コードリポジトリ**

このパターンのコードは、GitHub の [Detect vulnerable security groups](https://github.com/aws-samples/detect-public-security-groups/tree/main) リポジトリで入手できます。

## ベストプラクティス
<a name="audit-security-groups-access-public-ip-best-practices"></a>

次のリソースのベストプラクティスに従うことをお勧めします。
+ [を使用した組織単位のベストプラクティス AWS Organizations](https://aws.amazon.com/blogs/mt/best-practices-for-organizational-units-with-aws-organizations/) (AWS クラウド運用と移行ブログ)
+ [AWS Control Tower で を使用して初期基盤を確立するためのガイダンス AWS](https://aws.amazon.com/solutions/guidance/establishing-an-initial-foundation-using-control-tower-on-aws/) (AWS ソリューションライブラリ)
+ [AWS Control Tower リソースの作成と変更に関するガイダンス](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-guidance.html) (AWS Control Tower ドキュメント)
+ [CfCT デプロイに関する考慮事項 ](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-considerations.html)(AWS Control Tower ドキュメント)
+ [最小特権アクセス許可を適用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) (IAM ドキュメント)

## エピック
<a name="audit-security-groups-access-public-ip-epics"></a>

### CloudFormation のテンプレートを確認する。
<a name="review-the-cfnshort-template"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| デプロイ戦略を決定します。 | ソリューションとコードを確認して、 AWS 環境のデプロイ戦略を決定します。単一のアカウントまたは AWS 組織にデプロイするかどうかを決定します。 | アプリ所有者、AWS 全般 | 
| リポジトリをクローンする。 | 次のコマンドを入力して、[Detect vulnerable security groups](https://github.com/aws-samples/detect-public-security-groups.git) リポジトリのクローンを作成します。<pre>git clone https://github.com/aws-samples/detect-public-security-groups.git</pre> | アプリ開発者、アプリオーナー | 
| Python バージョンを検証します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/audit-security-groups-access-public-ip.html) | AWS 管理者、アプリ開発者 | 

### CloudFormation のテンプレートを入手するには
<a name="deploy-the-cfnshort-template"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation のテンプレートをデプロイします。 | CloudFormation テンプレートを AWS 環境にデプロイします。次のいずれかを行います。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/audit-security-groups-access-public-ip.html) | アプリ開発者、AWS 管理者、AWS 全般 | 
| デプロイメントを確認する。 | [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)で、スタックまたはスタックセットが正常にデプロイされていることを確認します。 | AWS 管理者、アプリ所有者 | 

### 検出結果を確認する
<a name="review-the-findings"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS Config ルールの検出結果を表示します。 | Security Hub CSPM で、次の操作を実行して個々の検出結果のリストを表示します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/audit-security-groups-access-public-ip.html)<br />Security Hub CSPM で、以下を実行して、グループ化された検出結果の合計のリストを表示します AWS アカウント。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/audit-security-groups-access-public-ip.html)<br />検出結果のリスト AWS Configを表示するには、 AWS Config ドキュメントの[「コンプライアンス情報と評価結果の表示](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_view-compliance.html)」の手順に従います。 | AWS 管理者、AWS システム管理者、クラウド管理者 | 

## トラブルシューティング
<a name="audit-security-groups-access-public-ip-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| CloudFormation スタックセットの作成または削除に失敗する |  AWS Control Tower がデプロイされると、必要なガードレールが適用され、 AWS Config アグリゲータとルールの制御が引き受けられます。これには、CloudFormation による直接的な変更の防止が含まれます。関連するすべてのリソースを含め、この CloudFormation テンプレートを適切にデプロイまたは削除するには、CfCT を使用する必要があります。 | 
| CfCT で CloudFormation テンプレートを削除できない | マニフェストファイルで必要な変更を行い、テンプレートファイルを削除した後も CloudFormation テンプレートが残っている場合は、マニフェストファイルに `enable_stack_set_deletion` パラメータが記述されていて、値が `false` に設定されていることを確認します。詳細については、CfCT ドキュメントの「[Delete a stack set](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-delete-stack.html)」を参照してください。 | 

## 関連リソース
<a name="audit-security-groups-access-public-ip-resources"></a>
+ [AWS Config カスタムルール](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html) (AWS Config ドキュメント)