

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

# テーマ 2: 安全なパイプラインによる、イミュータブルなインフラストラクチャの管理
テーマ 2: イミュータブルなインフラストラクチャ

**Essential Eight 戦略の対象**  
アプリケーション制御、アプリケーションへのパッチ適用、オペレーティングシステムへのパッチ適用

イミュータブルインフラストラクチャの場合は、システム変更のデプロイパイプラインを保護する必要があります。 AWS 著名エンジニアである Colm MacC árthaigh は、2022 AWS re:Invent カンファレンスの[「ゼロ特権オペレーション: データにアクセスできないサービスの実行](https://www.youtube.com/watch?v=kNbNWxVQP4w)YouTube」プレゼンテーションでこの原則について説明しました。

 AWS リソースを設定するための直接アクセスを制限することで、承認済み、セキュア、自動化されたパイプラインを通じてすべてのリソースをデプロイまたは変更することを要求できます。具体的には、通常、[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ポリシーを作成し、ユーザーがデプロイパイプラインをホストするアカウントにのみアクセスできるようにし、限られた数のユーザーに[ブレークグラスアクセス](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/break-glass-access.html)を許可する IAM ポリシーも設定します。また、手動の変更を防ぐために、セキュリティグループを使用して、SSH および Windows リモートデスクトッププロトコル (RDP) によるサーバーアクセスをブロックできます。の一機能である [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) は AWS Systems Manager、インバウンドポートを開いたり踏み台ホストを維持したりすることなく、インスタンスへのアクセスを提供できます。

Amazon マシンイメージ (AMI) とコンテナイメージは、安全で反復可能な方法で構築しなければなりません。Amazon EC2 インスタンスの場合、[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) を使用して、インスタンス検出、アプリケーション制御、ログ記録などのセキュリティ機能を組み込んだ AMI を構築できます。アプリケーション制御の詳細については、ACSC ウェブサイトの「[Implementing Application Control](https://www.cyber.gov.au/resources-business-and-government/maintaining-devices-and-systems/system-hardening-and-administration/system-hardening/implementing-application-control)」を参照してください。また、Image Builder でコンテナイメージを構築して、[Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) を使用し、それらのイメージをアカウント間で共有することも可能です。中央のセキュリティチームでは、こうした AMI とコンテナイメージを構築する自動プロセスを承認でき、これによって、作成された AMI またはコンテナイメージをアプリケーションチームで使用することが承認されます。

アプリケーションは、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) や [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html) などのサービスを使用して、Infrastructure as Code (IaC) で定義する必要があります。cfn-nag AWS CloudFormation Guardや cdk-nag などのコード分析ツールは、承認されたパイプラインのセキュリティのベストプラクティスに照らしてコードを自動的にテストできます。

[テーマ 1: マネージドサービスの使用](theme-1.md) と同様に、Amazon Inspector を使用すると、 AWS アカウント全体の脆弱性をレポートできます。一元化されたクラウドおよびセキュリティチームでは、こうした情報を使用して、アプリケーションチームがセキュリティおよびコンプライアンス要件を満たしていることを確認できます。

コンプライアンスをモニタリングし報告するには、IAM リソースとログを継続的にレビューします。 AWS Config ルールを使用して、承認された AMIs のみを使用し、Amazon Inspector が Amazon ECR リソースの脆弱性をスキャンするように設定されていることを確認します。

## AWS Well-Architected フレームワークの関連するベストプラクティス
関連するベストプラクティス
+ [OPS05-BP04 構築およびデプロイ管理システムを使用する](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_build_mgmt_sys.html)
+ [REL08-BP04 イミュータブルなインフラストラクチャを使用してデプロイする](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_tracking_change_management_immutable_infrastructure.html)
+ [SEC06-BP03 手動管理とインタラクティブアクセスを削減する](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_compute_reduce_manual_management.html)

## このテーマの実装


### AMI およびコンテナビルドパイプラインの実装

+ [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html) を使用して、AMI に以下を組み込みます。
  + インスタンスの検出と管理に使用される [AWS Systems Manager エージェント (SSM エージェント)](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
  + Security [Enhanced Linux (SELinux)](https://github.com/SELinuxProject) (GitHub)、[ファイルアクセスポリシーデーモン (fapolicyd)](https://github.com/linux-application-whitelisting/fapolicyd/blob/main/README.md) (GitHub)、[OpenSCAP](https://www.open-scap.org/) などのアプリケーション制御用のセキュリティツール
  + [Amazon CloudWatch エージェント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html) (ログ記録に使用する)
+ すべての EC2 インスタンスを対象に、Systems Manager がインスタンスアクセスに使用する[インスタンスプロファイルまたは IAM ロール](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-permissions.html)に、`CloudWatchAgentServerPolicy` および `AmazonSSMManagedInstanceCore` ポリシーを組み込みます。
+ [組織全体と AMI を共有する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html)
+ [EC2 Image Builder リソースを共有する](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-shared-resources.html)
+ [アプリケーションチームで、最新の AMI が参照されていることを確認する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup-amiids.html)
+ [パッチ管理に AMI パイプラインを使用する](https://docs.aws.amazon.com/imagebuilder/latest/userguide/security-patch-management.html)
+ コンテナビルドパイプラインを実装します。
  + [EC2 Image Builder コンソールウィザードを使用してコンテナイメージパイプラインを作成する](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
  + [Amazon ECR をソースとして使用してコンテナイメージの継続的な配信パイプラインを構築する](https://aws.amazon.com/blogs/devops/build-a-continuous-delivery-pipeline-for-your-container-images-with-amazon-ecr-as-source/) (AWS ブログ記事)
+ [マルチアカウントおよびマルチリージョンアーキテクチャを使用して、組織全体で ECR コンテナイメージを共有する](https://aws.amazon.com/blogs/containers/amazon-ecr-in-multi-account-and-multi-region-architectures/)

### 安全なアプリケーションビルドパイプラインの実装

+ [EC2 Image Builder や AWS CodePipeline](https://aws.amazon.com/blogs/mt/create-immutable-servers-using-ec2-image-builder-aws-codepipeline/) を使用するなど、IaC のビルドパイプラインを実装する (AWS ブログ記事)
+ CI/CD パイプラインで [AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html)、[cfn-nag](https://github.com/stelligent/cfn_nag) (GitHub)、[cdk-nag](https://github.com/cdklabs/cdk-nag) (GitHub) などのコード分析ツールを使用して、次のようなベストプラクティス違反を検出します。
  + ワイルドカードを使用するポリシーなど、許可範囲が広すぎる IAM ポリシー
  + ワイルドカードを使用したり、SSH アクセスを許可したりするなど、許可範囲が広すぎるセキュリティグループルール
  + 有効になっていないアクセスログ
  + 有効になっていない暗号化
  + パスワードの直接的な記述
+ [パイプラインにスキャンツールを実装する](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) (AWS ブログ記事)
+ [パイプライン AWS Identity and Access Management Access Analyzer (ブログ記事) で ](https://aws.amazon.com/blogs/security/validate-iam-policies-in-cloudformation-templates-using-iam-access-analyzer/)を使用して、CloudFormation テンプレートで定義されている IAM ポリシーを検証するAWS 
+ [IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#:~:text=IAM%20policies%20define%20permissions%20for,CLI%2C%20or%20the%20AWS%20API.)と[サービス制御ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)を設定して、パイプラインの使用や変更のためのアクセス時に最小特権が付与されるようにする

### 脆弱性スキャンの実装

+ [組織内のすべてのアカウントで Amazon Inspector を有効にする](https://docs.aws.amazon.com/inspector/latest/user/designating-admin.html)
+ Amazon Inspector を使用して、AMI ビルドパイプライン内の AMI をスキャンします。
  + [EC2 Image Builder (GitHub) で AMI のライフサイクルを管理する](https://github.com/aws-samples/ec2-imagebuilder-ami-lifecycle)
+ [Amazon Inspector を使用して、Amazon ECR リポジトリの拡張スキャンを設定する](https://docs.aws.amazon.com/inspector/latest/user/scanning-ecr.html#configure-ecr)
+ [セキュリティ関連の検出結果をトリアージして修正する脆弱性管理プログラムを構築する](https://docs.aws.amazon.com/prescriptive-guidance/latest/vulnerability-management/)

## このテーマのモニタリング


### IAM とログの継続的なモニタリング

+ IAM ポリシーを定期的に見直し、以下を確認します。
  + デプロイパイプラインのみがリソースに直接アクセスできる
  + 承認済みサービスのみがデータに直接アクセスできる
  + ユーザーは、リソースまたはデータに直接アクセスできない
+  AWS CloudTrail ログをモニタリングして、ユーザーがパイプラインを介してリソースを変更しており、リソースを直接変更したりデータにアクセスしたりしていないことを確認します。
+ IAM Access Analyzer の検出結果を定期的に確認する
+  AWS アカウント のルートユーザー認証情報が使用された場合にその旨が通知されるアラートを設定する

### 次の AWS Config ルールを実装する

+ `APPROVED_AMIS_BY_ID`
+ `APPROVED_AMIS_BY_TAG`
+ `ECR_PRIVATE_IMAGE_SCANNING_ENABLED`