Control Tower管理下の特定OUにプロアクティブコントロールを有効化してみる

Control Tower管理下の特定OUにプロアクティブコントロールを有効化してみる

2025.09.09

はじめに

かつまたです。本記事では構築済みのControl Tower環境に対してプロアクティブなコントロールを有効化し、コントロールに違反するCloudFormationテンプレートのデプロイを事前に防止する手順を実施してみたのでご紹介します。
今回はLambda関数のデプロイ時における、意図したCloudFormationテンプレートのデプロイ失敗を再現しました。

プロアクティブコントロールとは

プロアクティブコントロールは、CloudFormation テンプレートによってリソースがデプロイされる前にリソースをチェックし、新しいリソースが環境でコントロール要件に準拠しているかどうかを判断するコントロールです。
事前チェックはCloudFormation Hooks及びCloudFormation Guardによって行われます。
https://aws.amazon.com/jp/about-aws/whats-new/2023/07/aws-control-tower-proactive-controls/

  • CloudFormation Hooks
    CloudFormation Hooks を使用すると、プロビジョニング前にリソースの設定をプロアクティブに検査することが可能です。非準拠のリソースが見つかった場合、デプロイが失敗、または警告を出してデプロイ操作を続行できます。

  • CloudFormation Guard
    CloudFormation Guardは、CloudFormationテンプレートやJSONドキュメントに対してポリシーベースのルールを定義・適用するためのオープンソースのドメイン固有言語(DSL)です。インフラストラクチャのコード化において、セキュリティやコンプライアンスのベストプラクティスを自動的に適用することができます。Guard独自のルール言語を使用して、リソースの設定値や関係性を検証し、組織のポリシーに準拠しているかを事前にチェックすることが可能です。

やってみる

  1. 組織管理アカウントの「Control Tower」→「Control Catalog」からコントロールを有効化していきます。今回は[CT.LAMBDA.PR.2] Require AWS Lambda function policies to prohibit public accessを有効化しました。このコントロールにより、リソースポリシーでパブリックアクセス(ワイルドカード指定)を許可するポリシーが記述されているLambdaを含む、CloudFormationテンプレートのデプロイがトライされた時、デプロイを防止可能です。
    スクリーンショット 2025-08-29 16.00.20.png

  2. 任意の組織OU、またはアカウントを指定し、コントロールを有効化します。
    スクリーンショット 2025-08-29 16.45.19.png

  3. コントロールのアーティファクトから、リソースチェックを実施するCloudFormation Guard rule及び、コントロールに違反するテンプレートを確認することができます。
    スクリーンショット 2025-08-29 16.45.01.png

  4. コントロール対象としたアカウントでCloudFormationコントロールのデプロイを試みます。以下テンプレートを使用しました。

YAML例
			
			AWSTemplateFormatVersion: '2010-09-09'
Description: 'Lambda function with public access policy'

Resources:
  # Lambda実行ロール
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

  # Lambda関数
  PublicLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: PublicAccessViolationTest
      Runtime: python3.9
      Handler: index.handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Code:
        ZipFile: |
          import json
          def handler(event, context):
              return {
                  'statusCode': 200,
                  'body': json.dumps('This function has public access')
              }

  # パブリックアクセスを許可するポリシー(違反)
  PublicAccessPermission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref PublicLambdaFunction
      Action: lambda:InvokeFunction
      Principal: "*"  # これが違反:すべてのプリンシパルにアクセスを許可

		

以下コマンドまたは、コンソールからのアップロードによりデプロイを実施します。

			
			aws cloudformation deploy --template-file テンプレート名 --stack-name スタック名 --capabilities CAPABILITY_IAM

		

スクリーンショット 2025-08-29 16.19.25.png

  1. デプロイイベントを確認してみます。CloudFormation Hooksの呼び出しの後、デプロイ失敗していることが確認できました。

スクリーンショット 2025-08-29 16.21.58.png

おわりに

ご覧いただきありがとうございました。
今回はControl Towerのプロアクティブコントロールを使用して、セキュリティリスクのあるLambda関数のデプロイを事前に防止する方法をご紹介しました。

プロアクティブコントロールの最大のメリットは、問題のあるリソースがデプロイされる前に検知・防止できることです。CloudFormationテンプレートの場合となりますが、検知型コントロールでは一度デプロイされた後に違反を検知して修正する必要がありますが、プロアクティブコントロールではそもそも違反リソースの作成を防ぐことができます。

参考資料

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/aws-security-controls/proactive-controls.html

https://docs.aws.amazon.com/ja_jp/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html

https://docs.aws.amazon.com/ja_jp/cfn-guard/latest/ug/what-is-guard.html

https://docs.aws.amazon.com/ja_jp/controltower/latest/controlreference/proactive-controls.html

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/governance-cloudformation-guard.html

https://dev.classmethod.jp/articles/reinvent-2022-control-tower-proactive-guardrail/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事