AWS Config マネージドルールが191個追加されたので ECS_NO_ENVIRONMENT_SECRETS を試してみた

AWS Config マネージドルールが191個追加されたので ECS_NO_ENVIRONMENT_SECRETS を試してみた

AWS Config のマネージドルールが一度に191個追加されました。ECS_NO_ENVIRONMENT_SECRETS を実際に有効化し、指定したキー名の環境変数を持つ ECS タスク定義が NON_COMPLIANT として検出される様子を確認しました。
2026.07.10

はじめに

2026年7月9日、AWS Config のマネージドルールが一度に191個追加されました。

https://aws.amazon.com/jp/about-aws/whats-new/2026/07/aws-config-additional-managed-rules/

対象は ECS、Bedrock、RDS、S3 をはじめとする30以上のサービスです。セキュリティ・コンプライアンス観点でリソース構成を評価するルールが追加されています。

本記事では、追加されたルールの中から ECS_NO_ENVIRONMENT_SECRETS を実際に有効化し、指定したキー名の環境変数を持つ ECS タスク定義が NON_COMPLIANT として検出される様子を確認します。あわせて、191個のルールから特に有益そうなものをピックアップして紹介します。

検証内容

ECS_NO_ENVIRONMENT_SECRETS ルールの概要

ECS タスク定義のコンテナ環境変数名が、secretKeys に指定したキー名と一致するかをチェックするルールです。環境変数の値そのものを解析してシークレットかどうかを判定するものではありません。

https://docs.aws.amazon.com/config/latest/developerguide/ecs-no-environment-secrets.html

項目 内容
ルール識別子 ECS_NO_ENVIRONMENT_SECRETS
リソースタイプ AWS::ECS::TaskDefinition
トリガー Configuration changes(構成変更時)
パラメータ secretKeys(CSV形式で検出対象のキー名を指定)

パラメータ secretKeys には検出したいキー名をカンマ区切りで指定します。タスク定義のコンテナ定義で直接指定する環境変数のキー名が secretKeys と一致すると NON_COMPLIANT になります。

検証手順

Config マネージドルールの有効化

put-config-rule でルールを作成します。

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "ecs-no-environment-secrets",
  "Source": {
    "Owner": "AWS",
    "SourceIdentifier": "ECS_NO_ENVIRONMENT_SECRETS"
  },
  "InputParameters": "{\"secretKeys\": \"AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,DB_PASSWORD\"}",
  "Scope": {
    "ComplianceResourceTypes": ["AWS::ECS::TaskDefinition"]
  }
}'

NON_COMPLIANT になる ECS タスク定義の作成

secretKeys に指定した DB_PASSWORD という名前の環境変数を含むタスク定義を登録します。値には検証用のダミー文字列を指定します。

aws ecs register-task-definition \
  --family config-rule-test-secrets \
  --network-mode awsvpc \
  --requires-compatibilities FARGATE \
  --cpu 256 --memory 512 \
  --container-definitions '[{
    "name": "app",
    "image": "nginx:latest",
    "memory": 256,
    "essential": true,
    "environment": [
      {"name": "DB_PASSWORD", "value": "dummy-password-for-config-test"},
      {"name": "APP_ENV", "value": "test"}
    ]
  }]'

DB_PASSWORDsecretKeys と一致するため、このタスク定義は NON_COMPLIANT になります。

評価結果の確認

get-compliance-details-by-config-rule で NON_COMPLIANT のリソースを取得します。

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name ecs-no-environment-secrets \
  --compliance-types NON_COMPLIANT
{
    "EvaluationResults": [
        {
            "EvaluationResultIdentifier": {
                "EvaluationResultQualifier": {
                    "ConfigRuleName": "ecs-no-environment-secrets",
                    "ResourceType": "AWS::ECS::TaskDefinition",
                    "ResourceId": "config-rule-test-secrets",
                    "EvaluationMode": "DETECTIVE"
                },
                "OrderingTimestamp": "2026-07-10T13:11:55.328000+00:00"
            },
            "ComplianceType": "NON_COMPLIANT",
            "ResultRecordedTime": "2026-07-10T13:12:03.607000+00:00",
            "ConfigRuleInvokedTime": "2026-07-10T13:12:03.368000+00:00",
            "Annotation": "The following containers have secret key names defined in their environment variables: ['app']."
        }
    ]
}

config-rule-test-secrets が NON_COMPLIANT として検出されました。ResourceId にはタスク定義のファミリー名が使われています(ARN ではありません)。Annotation にはどのコンテナが違反しているかが記載されており、今回はコンテナ名 app が示されています。今回の検証環境では、タスク定義登録から約8秒で評価が完了しました(記録頻度 CONTINUOUS の場合)。

有益なルールの紹介

191個の中から、筆者が特に有益と感じたルールをカテゴリ別にピックアップします。

コンテナ(ECS)

ECS を使っている環境では、以下のルールが基本的なセキュリティ衛生のチェックに役立ちます。

ルール 概要
ECS_NO_ENVIRONMENT_SECRETS secretKeys で指定したキー名の環境変数がコンテナ定義に含まれていないかを検出
ECS_CONTAINERS_NONPRIVILEGED 特権モードで動作するコンテナの検出
ECS_TASK_DEFINITION_LOG_CONFIGURATION ログ設定が未構成のタスク定義の検出
ECS_FARGATE_LATEST_PLATFORM_VERSION Fargate サービスの PlatformVersionLATEST または指定した最新バージョンか

ストレージ・データ(S3 / RDS)

データ保護の観点で、作成時に考慮したい設定や継続的に確認したい設定を検出するルールが揃っています。

ルール 概要
S3_BUCKET_ACL_PROHIBITED S3 バケットで ACL によるユーザーアクセス許可が設定されていないか
S3_ACCESS_POINT_IN_VPC_ONLY S3 アクセスポイントが VPC 内に限定されているか
RDS_CLUSTER_ENCRYPTED_AT_REST RDS クラスターの保管時暗号化(既存クラスターに対して直接は有効化できず、早期検出が重要)
RDS_PROXY_TLS_ENCRYPTION RDS Proxy がすべての接続で TLS を強制しているか

認証・認可(IAM / Cognito / KMS)

アクセス制御まわりの設定不備を検出するルールです。

ルール 概要
COGNITO_USER_POOL_MFA_ENABLED PASSWORD-only サインインポリシーの Cognito ユーザープールで MFA が有効か
KMS_KEY_POLICY_NO_PUBLIC_ACCESS KMS キーポリシーにパブリックアクセスが含まれていないか
IAM_EXTERNAL_ACCESS_ANALYZER_ENABLED IAM Access Analyzer が有効か

AI / ML(Amazon Bedrock / Bedrock AgentCore)

今回新たに追加された Amazon Bedrock および Bedrock AgentCore 向けのルールです。認証・ネットワーク・暗号化といった構成項目を Config の組み込みルールでチェックできるようになりました。

ルール 概要
BEDROCKAGENTCORE_GATEWAY_AUTHORIZER_ENABLED エージェントゲートウェイに認証が設定されているか
BEDROCKAGENTCORE_RUNTIME_PRIVATE_NETWORK_REQUIRED ランタイムがプライベートネットワーク内に限定されているか
BEDROCK_DATA_SOURCE_ENCRYPTION_ENABLED データソースが暗号化されているか

ロギング・監査

ログ設定の有無を確認するルールです。有事の際にログが残っていないリスクの早期発見に役立ちます。

ルール 概要
CLOUDTRAIL_ALL_WRITE_S3_DATA_EVENT_CHECK マルチリージョン証跡で、現在および将来の全 S3 バケットの書き込みデータイベントが記録されているか
EC2_VPN_CONNECTION_LOGGING_ENABLED VPN 接続のログが有効か
CODEBUILD_PROJECT_LOGGING_ENABLED CodeBuild プロジェクトのログが有効か

ルールの全一覧は公式ドキュメントで確認できます。

https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html

まとめ

ECS_NO_ENVIRONMENT_SECRETS を有効化し、secretKeys に指定したキー名を環境変数に持つ ECS タスク定義が NON_COMPLIANT として検出されることを確認しました。このルールは値の内容ではなく環境変数名を評価するため、検出したいキー名を secretKeys に指定して利用します。

今回の191個追加により、AWS Config マネージドルールで確認できるサービスや構成項目の範囲が広がりました。Amazon Bedrock / Bedrock AgentCore 関連でも、認証・ネットワーク・暗号化などの構成を確認できるルールが追加されています。

特に Configuration changes トリガーのルールでは、対象リソースタイプが AWS Config の記録対象に含まれている必要があります。利用したいルールの対象リソースタイプやトリガー種別を事前に確認してください。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事