SAAセキュアなアーキテクチャの設計

あるWebアプリケーションで、ユーザーごとに異なるS3オブジェクトへのアクセス権限を付与する必要があります。アプリケーションはEC2上で動作しており、AWSの認証情報をコードにハードコードすることなくS3へアクセスしたいと考えています。最もセキュアな方法はどれですか?

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

解説

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

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
SAA の問題一覧に戻る