あるWebアプリケーションで、ユーザーごとに異なるS3オブジェクトへのアクセス権限を付与する必要があります。アプリケーションはEC2上で動作しており、AWSの認証情報をコードにハードコードすることなくS3へアクセスしたいと考えています。最もセキュアな方法はどれですか?
EC2インスタンスプロファイルにIAMロールをアタッチすることで、EC2上のアプリケーションは一時的な認証情報を自動取得してS3にアクセスできます。認証情報はAWSが自動ローテーションするためハードコードが不要であり、最もセキュアなベストプラクティスです。ユーザーごとの細かなアクセス制御は、このIAMロールの権限を用いてアプリケーション層で実装します(例:対象オブジェクト限定のプリサインドURLを発行して各ユーザーに渡す)。 選択肢Aの環境変数への静的なアクセスキー設定はキー漏洩リスクがあり手動ローテーションも必要です。 選択肢BのS3パブリックアクセスは機密データの保護に反するため不適切です。 選択肢DのSecrets Managerも有効なアプローチですが、IAMロールの方がシンプルでAWS推奨の方法です。