【Security Hub修復手順】[ECS.18] ECS タスク定義ではEFS ボリュームの転送時の暗号化を使用する必要があります
こんにちは!クラウド事業本部コンサルティング部の浅野です。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[ECS.18] ECS タスク定義ではEFS ボリュームの転送時の暗号化を使用する必要があります
[ECS.18] ECS task definitions should use transit encryption with EFS volumes
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、Amazon ECSタスク定義の最新のアクティブなリビジョンで、EFSボリュームの転送時の暗号化が有効化されているかチェックします。
タスク定義のefsVolumeConfigurationにおいて、transitEncryptionをENABLEDに設定すると、このコントロールは成功します。
ECSタスクとEFSファイルシステム間のNFS通信はVPC内で行われますが、暗号化されていない場合、同一ネットワーク上のリソースからの盗聴や中間者攻撃のリスクが残ります。
転送中のデータに対する盗聴と中間者攻撃を防止するため、転送時の暗号化を有効化することが必須です。
なお、efsVolumeConfiguration.transitEncryptionは省略時のデフォルト値がDISABLEDとなるため、タスク定義作成時に明示的にENABLEDを指定する必要があります。
また、EFSのIAM認可を利用する場合は転送時の暗号化が必須となります。
修復手順
コントロールの確認方法
- AWSマネジメントコンソールからSecurity Hub CSPMを開く
- 左メニューから「検出結果」を選択
- フィルターで
コンプライアンスセキュリティコントロールIDにECS.18を指定し、コンプライアンスのステータスがFAILEDの検出結果を確認する

- 該当の検出結果を選択し、詳細パネルから対象リソース(タスク定義)のARNを確認する


ARNの形式例: arn:aws:ecs:<region>:<account-id>:task-definition/<family-name>:<revision>
ステークホルダーに確認
修復を行う前に、以下の点をステークホルダーに確認してください。
- 対象タスク定義を利用しているECSサービス・ECSタスクの稼働状況
- 新しいタスク定義リビジョンへの切り替えタイミング(メンテナンスウィンドウ)
- EFSファイルシステム側でTLS暗号化に対応していること(特別な制限なくサポートされていますが念のため確認)
- 利用しているEFSマウントヘルパーまたはNFSクライアントがTLSをサポートしていること
修復手順
既存のタスク定義のリビジョンは編集できないため、転送時の暗号化を有効化した新しいリビジョンを作成し、サービスやタスクを新しいリビジョンで再デプロイします。
1. 新しいタスク定義リビジョンの作成
- ECSコンソールを開き、左メニューから「タスク定義」を選択する
- 対象のタスク定義ファミリーを選択し、最新のリビジョンにチェックを入れる
- 画面右上の「新しいリビジョンの作成」→「新しいリビジョンの作成」を選択する

- 「ボリューム」セクションまでスクロールし、対象のEFSボリュームを展開する
- ストレージ設定の「詳細設定」を選択する

- 詳細設定ダイアログで「転送暗号化」のチェックボックスを有効にする
- 「追加」を選択して詳細設定を反映する

なお、同じ詳細設定ダイアログにある「転送ポート」は空欄のままで問題ありません。空欄にするとEFSマウントヘルパーが適切なポートを自動選択します。固定ポートが必要な特殊な要件がない限り、指定は不要です。
- 画面下部の「作成」を選択し、新しいリビジョンを作成する
- 作成後、JSONタブで
volumes[].efsVolumeConfiguration.transitEncryptionがENABLEDになっていることを確認する

2. サービス/タスクの新しいリビジョンへの切り替え
ECSサービスでタスク定義を利用している場合は、新しいリビジョンを利用するようサービスを更新します。
- ECSコンソールの「クラスター」から対象クラスターを開く
- 「サービス」タブから対象サービスを選択し、画面右上の「サービスを更新」を選択する

- 「タスク定義のリビジョン」のドロップダウンから、先ほど作成した新しいリビジョンを選択する
- 「更新」を選択してサービスをデプロイする

スタンドアロンタスクとして実行している場合は、新しいリビジョンでタスクを再実行してください。
修復確認
本コントロールはタスク定義の登録時点で評価されるため、新しいリビジョンを作成した時点でPASSEDに切り替わります。サービスの更新は実際の稼働タスクを新リビジョンに切り替えるためのものであり、Security Hubの判定自体はサービス更新を待たずに反映されます。
まず、AWS CLIでdescribe-task-definitionを実行し、最新のアクティブなリビジョンでefsVolumeConfiguration.transitEncryptionがENABLEDになっていることを再度確認します。
aws ecs describe-task-definition \
--task-definition <タスク定義ファミリー名> \
--query 'taskDefinition.volumes[].efsVolumeConfiguration'
実行結果の例:
[
{
"fileSystemId": "fs-0d02c3d1f2a42273b",
"rootDirectory": "/",
"transitEncryption": "ENABLED"
}
]
transitEncryptionがENABLEDになっていれば、タスク定義側の修復は完了です。
次に、Security Hubで検出結果が「PASSED」になることを確認します。


検出結果のリソース情報で、参照されているタスク定義のリビジョン番号が新しいリビジョンに切り替わっていることもあわせて確認します。

注意: Security Hubの検出結果は更新までに時間がかかる場合があります(最大12時間程度)。
最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。
今回は以上です。







