ECSタスクへの秘密情報の受け渡し

ECSは起動時に秘密を取得して環境変数として渡す。タスク定義には参照だけが残り、アプリは同じ環境変数名で読める。取得には実行ロールの許可が要る。 参照方式にはなるが、平文の保存では閲覧権限のある主体に値が見える。SecureStringまたはSecrets Managerを使う。 イメージに秘密を入れると、イメージを取得できる主体や過去の版から漏れる。更新のたびにイメージの再作成も必要になる。 平文が残る限り問題は解決しない。全シークレットへの許可も最小権限に反する。

Fargate上のECSタスクがDBパスワードを環境変数として読む。現在はタスク定義に平文で書かれており、定義を閲覧できる人に見えてしまう。パスワードはSecrets Managerで管理しており、アプリのコードは変えたくない。

最も適切なものを1つ選択してください。

出典AWS非公式・オリジナル問題
ア
パスワードをParameter Storeの標準パラメーターへ平文で保存し、タスク定義から参照する
イ
パスワードをコンテナイメージへ書き込み、ECRのリポジトリを非公開にする
ウ
タスク定義のsecretsでSecrets Managerを参照し、実行ロールにその秘密の取得を許可する
エ
タスクロールへSecrets Managerの全シークレットの読み取りを許可し、タスク定義の平文は残す