Q51 — AWS SAA-C03 第17章

第 51/89 問 | ← 第17章

Q1351. ある企業は、機密性の高い監査ログを格納する Amazon S3 バケットへの読み取り専用アクセスを、少数の監査担当者に与える必要があります。監査担当者は毎月1回、これらのログを確認します。企業は各監査担当者に対して個別の IAM ユーザーを作成済みです。以下の要件を満たす必要があります: ・バケットはアカウント内でのみ非公開(パブリックアクセス不可)であること。 ・認証情報は一時的であり、自動的にローテーションされること。 ・アクセスは毎月のレビュー期間終了時に自動的に失効すること。 ・すべての操作が AWS CloudTrail で個々のユーザーに追跡可能であること。 これらの要件を満たすソリューションはどれですか?

正解: B. 読み取り専用の S3 バケットアクセス権を持つ IAM ロールを作成します。このロールを監査担当者が毎月のレビュー期間中にのみ引き受けられるよう、条件付き制約を含めます。

解説

正解は B です。読み取り専用の S3 バケットアクセス権を持つ IAM ロールを作成し、監査担当者が毎月のレビュー期間中にのみそのロールを引き受けられるよう、条件付き制約を含めるというソリューションです。 理由: 要件は以下の通りです。 ・バケットはアカウント内でのみ非公開(パブリックアクセス不可)であること。 ・認証情報は一時的であり、自動的にローテーションされること(長期的な IAM ユーザー資格情報の使用は不可)。 ・アクセスはレビュー期間終了時に自動的に失効すること。 ・すべての操作が AWS CloudTrail で個々のユーザーに追跡可能であること(IAM ロールは、誰がいつロールを引き受けたかを明確に記録できるため、監査性に優れます)。 選択肢 B が正しい理由: ・IAM ロールは sts:AssumeRole を通じて一時的な資格情報を提供し、これらは自動的にローテーションされます。 ・信頼ポリシー(Trust Policy)により、特定の IAM ユーザー(監査担当者)のみがそのロールを引き受けられるように制限できます。 ・アクセス許可ポリシー(Permissions Policy)により、S3 バケットに対する読み取り専用アクセス(s3:ListBucket、s3:GetObject など)を付与できます。 ・条件(例:DateLessThan)を用いて、ロールの引き受けをレビュー期間内に限定できます(例:"DateLessThan": {"AWS:CurrentTime": "2024-11-30T00:00:00Z"})。CloudTrail には、どの監査担当者がいつロールを引き受けたかが記録されます。 他の選択肢が不適切な理由: A:事前署名 URL はオブジェクト単位のアクセスを提供するだけで、バケット全体に対する読み取り専用アクセスではありません。また、毎月手動で URL を再生成する必要があり、時間ベースの自動失効機能はありません。さらに、URL を使用した操作は CloudTrail で監査担当者個人ではなく、URL を生成した IAM ユーザーとして記録されるため、監査性が確保されません。 C:バケット ACL は細かいアクセス制御には推奨されておらず(代わりにバケットポリシーまたは IAM を使用すべき)、手動での追加・削除が必要なため自動失効は実現できません。また、長期的な IAM ユーザー資格情報が使用されるため、一時的・自動ローテーションという要件を満たしません。 D:S3 の静的ウェブサイトホスティングを有効化すると、バケットがパブリックにアクセス可能となり、「バケットを非公開にする」という要件に反します。また、IP アドレスによる制限は企業ネットワークの IP 変更や偽装に対応できず信頼性が低く、長期的なアクセス資格情報が必要となるため、一時的・自動ローテーションの要件も満たしません。 正しいアプローチ(選択肢 B): ・「AuditRole」という IAM ロールを作成します。  ・信頼ポリシー:監査担当者の IAM ユーザーがロールを引き受けられることを許可。  ・アクセス許可ポリシー:監査ログバケット(例:arn:aws:s3:::audit-logs-bucket)に対する s3:ListBucket および s3:GetObject のみを許可。  ・条件:DateLessThan を用いて、レビュー期間内のみロールを引き受け可能に制限。 ・監査担当者は aws sts assume-role コマンドを実行してレビュー期間中に一時的な資格情報を取得します。 ・CloudTrail はすべての AssumeRole 操作を記録し、各監査担当者とそのタイミングを明確に紐付けます。 例:信頼ポリシー(監査担当者がロールを引き受けられるように許可): { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::123456789012:user/auditor1", "arn:aws:iam::123456789012:user/auditor2"]}, "Action": "sts:AssumeRole", "Condition": {"DateLessThan": {"AWS:CurrentTime": "2024-11-30T00:00:00Z"}} }] } アクセス許可ポリシー(読み取り専用 S3 アクセス): { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:ListBucket", "s3:GetObject"], "Resource": ["arn:aws:s3:::audit-logs-bucket", "arn:aws:s3:::audit-logs-bucket/*"] }] } 結論:選択肢 B のみがすべての要件を満たします。 ・バケットは非公開(パブリックアクセスなし)。 ・IAM ロールによる一時的・自動ローテーション可能な資格情報。 ・条件付き制約による自動失効。 ・CloudTrail による AssumeRole 操作の完全な監査性。 他の選択肢は、セキュリティ、自動化、または監査性のいずれかの観点で要件を満たしません。