8問中 0問が回答されています
質問:
You have already completed the テスト before. Hence you can not start it again.
問題を読み込んでいます…
You must sign in or sign up to start the テスト.
まず、次の操作を完了する必要があります:
正解数 0/問題数8
回答にかかった時間:
終了時間となりました
回答お疲れ様でした。
Earned Point(s): 0 of 0, (0)
0 Essay(s) Pending (Possible Point(s): 0)
【SCS-58】金融機関 A 社は AWS Organizations 環境で 50 アカウントを運用している。
セキュリティアカウントに組織 CloudTrail をマルチリージョン・ログファイル整合性検証付きで構成し、SSE-KMS で暗号化した S3 バケット org-trail-logs へ配信している。
誤って root 以外を拒否するバケットポリシーを適用した結果、CloudTrail コンソールに「InsufficientS3BucketPolicy」が 24 時間表示されログが生成されていない。
最小権限を維持しつつログ配信を即時復旧する対応として最も適切なのはどれか。
InsufficientS3BucketPolicy が表示されているときは CloudTrail が org-trail-logs へ書き込めない状態ですから、サービスプリンシパル cloudtrail.amazonaws.com に対して s3:PutObject を許可し、さらに Condition で s3:x-amz-acl=bucket-owner-full-control を要求する 1 行をバケットポリシーへ加えるだけで、マルチリージョンや SSE-KMS の設定を変更せずとも 50 アカウント環境全体のログ配信を即時復旧でき、同時にバケット所有者による改ざん防止と外部監査要件も満たせると整理してみてください。
パブリックアクセスブロックを無効化して Principal “*” に s3:PutObject を許可すれば CloudTrail も書き込めますが、同時に世界中からの投げ込みやスパムオブジェクトを招き S3 Block Public Access や IAM 最小権限の原則を逸脱するため金融機関のガバナンス的にはリスクが高く、また KMS のキーポリシーだけを緩和してもバケット側で拒否が残れば InsufficientS3BucketPolicy は解消されないという原因切り分けも併せて思い出してみてください。
今回のケースでは Organizations の組織 CloudTrail、SSE-KMS による暗号化、マルチリージョン設定、ログファイル整合性検証といった複数要件が絡み合っていますが、①バケット所有者が常に完全制御を保持できること、②書き込みに必要な権限だけを明示して公開や読み取りを開放しないこと、③設定変更が最小で即効性があること、④50 アカウント規模の監査工数を抑えられること、これらを総合的に満たす案はどれかを俯瞰して選択してください。
【SCS-59】製薬会社PharmaCoは全リージョンのCloudTrailをセキュリティアカウントのS3バケットに集約し、CMK (別アカウント管理) で SSE-KMS 暗号化している。
キー ポリシーには CloudTrail サービスプリンシパルとログ書き込み用ロールしか記載されていない。
監査専任ロール AuditRole には s3:GetObject と kms:Decrypt を許可する IAM ポリシーが付与されているが、AuditRole でログを取得すると「AccessDenied: kms:Decrypt」と返される。
追加の運用負荷を最小限に抑えつつ恒常的に監査チームがログを閲覧できるようにする最適な対応はどれか。
CloudTrail ログを SSE-KMS で保護するときは AWS KMS のキー ポリシーが最優先で適用され、そこに記載のないプリンシパルは IAM ポリシーで kms:Decrypt を許可していても CMK を呼び出せず AccessDenied となるため、クロスアカウントの AuditRole が鍵リソースに列挙されているかどうかをまず確認してみましょう。
暗号方式を SSE-S3 に変更すれば KMS への Decrypt 権限は不要になりますが、全リージョンの CloudTrail 設定変更や組織の暗号ポリシー見直しといった大規模作業が発生し、また S3 バケットポリシーに kms:Decrypt を書いても S3 は KMS API を評価しないことから、どちらも運用コストや技術的制約の面で適切かを落ち着いて比較してみてください。
追加の運用負荷を最小化するという観点では、一度だけ trail 用 CMK のキー ポリシーに AuditRole をプリンシパルとして追加し kms:Decrypt と kms:DescribeKey を許可しておけば以後の監査処理は自動化でき、毎回 kms:CreateGrant を発行する手順や暗号方式を変えるリスクを負わずに済むため、可用性・安全性・保守性を横断的に評価し最もシンプルな施策を選択するのが望ましいでしょう。
【SCS-60】金融 SaaS 企業は AWS Organizations 配下 58 アカウントで組織証跡を有効化し、監査アカウントの S3 バケット org-trail-logs (SSE-S3、パブリックアクセスブロック有効) へログを集約している。
作成後、CloudTrail には「PutObject 失敗: AccessDenied」が記録され、メンバーアカウントのログが一切保存されない。
監査チームは次の要件を満たす最小の修正を要求している。
1) CloudTrail からのみ PutObject を許可し Get/List は不要
2) オブジェクト ACL に bucket-owner-full-control を強制
3) 他サービスや IAM ユーザーからの書き込みを禁止
最も適切な S3 バケットポリシーを 1 つ選べ。
CloudTrail が組織証跡でログを書き込む際は、まず S3 へ s3:GetBucketAcl を呼び出してバケットの所有者を確認し、その後 s3:PutObject で AWSLogs/* 配下にファイルを配置する 2 段階の流れになります。このどちらかが欠けると AccessDenied が発生しますので、bucket org-trail-logs には cloudtrail.amazonaws.com サービスプリンシパルに対し両アクションを許可する記述を設ける必要があります。パブリックアクセスブロックが有効でも影響を受けないよう、バケットポリシーで明示的に許可することが確実です。
監査アカウント側で一元的にオブジェクト管理を行うには、CloudTrail が PutObject 時に送る x-amz-acl ヘッダーを bucket-owner-full-control に固定するのが推奨となります。S3 バケットポリシーに Condition で StringEquals s3:x-amz-acl=bucket-owner-full-control を追加すると、ヘッダーが一致しないリクエストは拒否されます。これによりメンバーアカウントが意図しない ACL を付与してもログは保存されず、要件 2 の「ACL 強制」を実現できます。
他サービスや IAM ユーザーからの書き込みを避けるには Principal を cloudtrail.amazonaws.com に限定し、Resource を arn:aws:s3:::org-trail-logs/AWSLogs/* に絞ることが重要です。このうえで PutObject+Condition を持つステートメントと、GetBucketAcl 専用のステートメントに分けた 2 段構成にすると、最小権限・ACL 強制・第三者排除の三要件を同時に満たすバランスの取れた設計になるという総合判断が導けます。
【SCS-61】医療系 SaaS 企業 MedNext は AWS Organizations を使用し、セキュリティアカウント (111122223333) の S3 バケット org-cloudtrail-logs に全アカウントの CloudTrail ログを集約している。
バケットは SSE-KMS 暗号化と S3 パブリックアクセスブロックを有効化し、プレフィックス構造は AWSLogs/AccountID/Region/… で統一している。
新規プロダクションアカウント (444455556666) で組織トレイルを有効化したところ、ステータスが “InsufficientS3BucketPolicy” となりログが保存されない。
KMS キーポリシーとサービスロールは要件を満たしていた。
最小限の変更で当該問題を解決する手順はどれか。
CloudTrail が別アカウントの S3 バケットにイベントを書き込む場合、バケットポリシーに Principal cloudtrail.amazonaws.com を指定し、対象アカウント専用プレフィックス AWSLogs/444455556666/* への s3:PutObject と s3:GetBucketAcl を許可し、さらに Condition で s3:x-amz-acl=bucket-owner-full-control を要求する構文がマニュアルに明記されています。これが欠けているとサービスロールはオブジェクト ACL を適用できず、Organizations の組織トレイル画面には InsufficientS3BucketPolicy というステータスが表示されるため、まずはこのステートメントを追加入力することを検討してください。
S3 Block Public Access は有効のままでも CloudTrail 配信に影響しません。ログ転送の成否を左右するのはバケットポリシーであり、ACL を Everyone へ開放したりブロック設定を解除する必要はないどころか、医療データを扱う SaaS としてはセキュリティ上避けるべきです。ACL に権限を寄せると Block Public Access が自動で拒否するため結局書き込みは失敗しますので、SSE-KMS や既存ロール設定が整っている前提ではポリシーの追記だけで安全に要件を満たせます。
Organizations で集中管理するアーキテクチャを保ちつつ SSE-KMS、サービスロール、リージョン別プレフィックスという条件が既に合致しているなら、残るギャップは新規アカウント ID 用の s3:PutObject 権限を org-cloudtrail-logs のバケットポリシーに付与する一点です。トレイル停止や CloudTrail Lake への切り替えに比べてリスクと工数が最小で、複数要件を俯瞰した総合判断として最もシンプルかつ安全な解決策となります。
【SCS-62】金融系SaaS企業は、us-east-1のAmazon Linux 2 EC2インスタンス50台からアプリケーションログをCloudWatch LogsのLog group「/prod/app」に集約し、5分以内にSecOpsが検索できることを要件としている。
CloudWatchエージェントはSSMパラメータストアの設定で起動し、各インスタンスにはIAMロール ProdAppLoggingRole(AmazonEC2RoleforSSM のみ付与)が割り当てられている。
ネットワーク疎通とエージェント設定に問題はないが、ログは取り込まれずエージェントログには “AccessDeniedException” が出力されている。
最小権限の原則を守りつつ障害を解消するには、どのポリシー変更が最も適切か。
CloudWatch エージェントが Amazon Linux 2 の EC2 からログを送信するときは、Log group が無ければ logs:CreateLogGroup、インスタンスごとの Log stream を作る logs:CreateLogStream、最後にレコードを書き込む logs:PutLogEvents を順に呼び出します。NetworkACL も SSM 設定も問題ないのに AccessDenied が出る場合、これら 3 つの API いずれかの許可が不足している可能性が高いです。
現在の ProdAppLoggingRole は AmazonEC2RoleforSSM しか持たず CloudWatch Logs への書き込み権限が皆無です。Describe や PutMetricData ではログのアップロードは始まりませんので、必要な 3 アクションをインラインポリシーで追加し、Resource を /prod/app の Log group に限定すれば、最小権限と監査要件を同時に満たせます。
検索を 5 分以内に可能にするには S3 へ一旦保存したり Kinesis Data Firehose を経由する構成は遅延と運用コストを生むだけでメリットが薄く、CloudWatch Logs へ直接プッシュするシンプルな経路が最適です。ログ取込に必須な 3 API を対象リソースだけに許可する方針が、可視性・リアルタイム性・最小特権をバランス良く満たす総合的な解決策となります。
【SCS-63】金融系SaaS企業は Amazon Linux 2 の EC2 で動く Java サービスの /var/log/app.log を CloudWatch Logs エージェント (awslogs) で /AppLogGroup に送信し、30 秒以内に可視化することを監査要件としている。
容量削減のため次の logrotate 設定を導入したところ、初回ローテーション後から新規ログが配信されなくなった。
/var/log/app.log {
daily
rotate 7
size 100M
compress
create
}
エージェントは稼働中で IAM 権限にも変更はない。
運用負荷を増やさず可視化要件を復旧する対応はどれか。
CloudWatch Logs エージェントは EC2 で動く awslogs プロセスが /var/log/app.log を tail して差分を送信しますが、logrotate で create だけを書くと Amazon Linux 2 の umask により 0600 の新規ファイルが作成され、root 以外から読めなくなります。awslogs が非 root で動く環境では追記を検知できず可視化が停止するため、create に 0644 など読み取り可能なパーミッションを明示することで即時復旧が期待できます。
ログ未達の切り分けではまず OS 層のファイルアクセスを確認するのが基本です。Kinesis Data Firehose や S3 を経由する多段構成はレイテンシを増やし、CloudWatch Logs の PutRetentionPolicy 追加は保持期間に関わるだけで読み取り不可状態を解消しません。さらに awslogs.conf の file_fingerprint_lines を変えてもファイルが読めなければ無効であり、権限を正すほうが運用負荷も最小です。
監査要件は「30 秒以内の可視化」と「ディスク容量削減」を両立させることですから、Amazon Linux 2 の logrotate 設定だけを調整して CloudWatch Logs への継続送信を確保し、EC2 インスタンスの IAM ロールや外部サービス構成を変えずに済む解決策が総合的に最も適切だと判断できます。
【SCS-64】金融 SaaS 企業はプライベートサブネット上の EC2 10 台から、CloudWatch Agent を用いて最大毎秒 5 MB のアプリケーションログをロググループ /aws/prod-app へ送信している。
通信は Interface VPC エンドポイント (com.amazonaws.ap-northeast-1.logs) 経由で行う。
先週、担当者が「prod-* 以外を拒否する」VPC エンドポイントポリシーを設定した結果、Agent から “AccessDeniedException: PutLogEvents is not authorized” が出力され、ログ配送が停止した。
IAM ロール側の権限 (logs:CreateLogStream, logs:PutLogEvents = prod-*) は変更していない。
最小権限を維持しつつ、速やかにログ配送を復旧する最適な対応はどれか。
CloudWatch Logs への API コールは IAM ポリシー、Interface VPC エンドポイントポリシー、リソースポリシーの三段階で評価され、いずれかに明示的 Deny があると PutLogEvents は必ず拒否されます。IAM ロールの設定を触っていないまま AccessDeniedException が出た場合は、com.amazonaws.ap-northeast-1.logs という PrivateLink のポリシーが原因かを最優先で調べるのが効果的です。ネットワーク ACL や Security Group は認可判断に関与しない点も押さえておきましょう。
CloudWatch Agent は EC2 再起動時などにログストリームを自動生成し、それぞれの ARN に対して CreateLogStream と PutLogEvents を発行します。ストリーム ARN には log-stream: が含まれるため、VPC エンドポイントポリシーを prod-* だけ許可して他を拒否すると、新規ストリーム名が一致せず配送が止まります。サービス側で勝手に変わるリソースをポリシーで細かく絞ると運用コストが急増する、という CloudWatch Logs 特有の振る舞いを覚えておくとトラブルシュートが早まります。
プライベート通信路を保ちながら最小権限を実現するには、Interface Endpoint では logs:CreateLogStream と logs:PutLogEvents など必要最少アクションを Resource “*” でシンプルに許可し、どのロググループに書くかは IAM ロールで限定する分離設計が推奨されています。VPC エンドポイントを過度に厳しくすると本番切替時に停止を招く恐れがあり、ネットワーク経路を変えて Kinesis Data Firehose や S3 へ迂回するのは根本対策ではありません。ポリシー層それぞれの役割を整理して「どこを緩め、どこを締めるか」を見極める総合判断が合格への近道です。
【SCS-65】動画配信企業 MediaStream 社は全リージョンで有効化した CloudTrail を KMS で暗号化して S3 バケット arn:aws:s3:::ms-audit に集約し、オブジェクト作成イベントを SNS トピック arn:aws:sns:ap-northeast-1:111111111111:ct-log-topic 経由で SQS キューに転送、後段の Lambda が毎分 500 件を処理する設計を構築した。
運用開始後、S3 にはログが保管されるものの SQS にメッセージが一切届かず、SNS メトリクス PublishFailed は 100% を示している。
バケットはパブリックアクセスブロックを有効化し、SNS・SQS・S3 は同一カスタム CMK を共有している。
最も可能性の高い原因と修正策はどれか。
CloudTrail のログは KMS で暗号化されつつ S3 に問題なく保存されているのに CloudWatch で SNS の PublishFailed が 100% を示すときは、故障箇所を「S3 から SNS への Publish API 呼び出し」に限定できます。SQS の DeliveryFailure や KMS の GenerateDataKey は無関係であり、オブジェクト作成イベントが発火している事実からもイベント通知自体は成功しているため、残る可能性は SNS が呼び出しを拒否しているケースです。
S3 から SNS へメッセージを送る際は SNS トピックポリシーに Principal を s3.amazonaws.com とし、Condition で aws:SourceArn に arn:aws:s3:::ms-audit を指定する sns:Publish 許可を追加するのが基本形です。この設定がないと SNS は AccessDenied を返し PublishFailed が増えるため SQS に何も届きません。S3 バケットポリシーや KMS キーポリシーをいじってもこの権限不足は解消されません。
最終的には SNS メトリクス、S3 イベントの発火状況、KMS 暗号化の挙動を横串で確認し、最も影響度が高く症状と整合する「S3→SNS のクロスサービス許可欠如」を是正することが最短経路と判断できます。
この教材の改善リクエストがある場合は、お気軽にご報告ください。
カテゴリを選択のうえ、詳細をご記入いただけますと幸いです。
CloudTech(クラウドテック)は多くのユーザーの皆様から改善リクエストをご協力いただき運営できております。
あなたの視点での気づきは他の学習者の迷いを解決する手助けとなります。
運営側でもチェックをしておりますが限界があるため、誠に恐縮ではございますが細かい点でもご遠慮なくご指摘をお願いいたします。
※ 匿名での報告となり、内容は一般公開されません。
※ 技術的なご質問への回答を行うフォームではございませんのでご注意ください。
