【正解】B
【0からの解説】
要件は「同じ S3 上の顧客データに対し、アナリストごとに『自国の行だけ』を見せる」という行単位のアクセス制御を、最小運用で実現することです。これはまさに
AWS Lake Formation の行レベルセキュリティ(row-level security / data filters) の典型的なユースケースです。
手順は、まず S3 バケットを Lake Formation の「データレイクロケーション」として登録し、Glue Data Catalog でテーブルを定義します。次に「country 列の値が利用者の国と一致する行だけを返す」というデータフィルター(行フィルター)を作り、各国のアナリスト(プリンシパル)に付与します。すると Athena などからのクエリ時に、ユーザーごとに該当国の行だけが自動的にフィルタされて返ります。テーブルを国ごとに分割したり、別データストアへ複製したりせず、1 つのテーブルに対してポリシーだけで制御できるため運用が最小です。よって B が正解です。
【誤りの選択肢】
A:国ごとにテーブルを物理的に分割すると、テーブル数の増加・ETL の複製・権限管理が煩雑になり、運用労力が増えます。行レベルセキュリティ 1 つで済む B より明らかに手間が多くなります。
C:データを国の近いリージョンへ移動してもアクセス制御の要件は満たせず、データのリージョン分散による複製・同期コストが増えるだけで的外れです。
D:Redshift にロードし国ごとのビューと IAM ロールを作る方法は、データ複製と多数のビュー/ロールの保守が必要で運用負荷が高くなります。S3 のデータをそのまま使える Lake Formation の行レベルセキュリティ(B)の方が手間が少なく適切です。
【参考】
AWS Lake Formation の行レベルセキュリティ(データフィルター)Lake Formation でのきめ細かなアクセス制御の管理