AWS Config マネージドルールが191個追加されたので ECS_NO_ENVIRONMENT_SECRETS を試してみた
はじめに
2026年7月9日、AWS Config のマネージドルールが一度に191個追加されました。
対象は ECS、Bedrock、RDS、S3 をはじめとする30以上のサービスです。セキュリティ・コンプライアンス観点でリソース構成を評価するルールが追加されています。
本記事では、追加されたルールの中から ECS_NO_ENVIRONMENT_SECRETS を実際に有効化し、指定したキー名の環境変数を持つ ECS タスク定義が NON_COMPLIANT として検出される様子を確認します。あわせて、191個のルールから特に有益そうなものをピックアップして紹介します。
検証内容
ECS_NO_ENVIRONMENT_SECRETS ルールの概要
ECS タスク定義のコンテナ環境変数名が、secretKeys に指定したキー名と一致するかをチェックするルールです。環境変数の値そのものを解析してシークレットかどうかを判定するものではありません。
| 項目 | 内容 |
|---|---|
| ルール識別子 | 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_PASSWORD が secretKeys と一致するため、このタスク定義は 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 サービスの PlatformVersion が LATEST または指定した最新バージョンか |
ストレージ・データ(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 プロジェクトのログが有効か |
ルールの全一覧は公式ドキュメントで確認できます。
まとめ
ECS_NO_ENVIRONMENT_SECRETS を有効化し、secretKeys に指定したキー名を環境変数に持つ ECS タスク定義が NON_COMPLIANT として検出されることを確認しました。このルールは値の内容ではなく環境変数名を評価するため、検出したいキー名を secretKeys に指定して利用します。
今回の191個追加により、AWS Config マネージドルールで確認できるサービスや構成項目の範囲が広がりました。Amazon Bedrock / Bedrock AgentCore 関連でも、認証・ネットワーク・暗号化などの構成を確認できるルールが追加されています。
特に Configuration changes トリガーのルールでは、対象リソースタイプが AWS Config の記録対象に含まれている必要があります。利用したいルールの対象リソースタイプやトリガー種別を事前に確認してください。







