ある金融サービス企業が AWS Lake Formation で管理されたデータレイクを構築しています。顧客ローン申請データを含むテーブルには、申請地域(region)、申請金額(amount)、社会保障番号(ssn:米国の個人識別番号)などのカラムが含まれています。以下のアクセス要件があります: ・北米営業チーム(IAMロール: NA_team): region = 'NA' の行のみ参照可、ssn カラムは表示不可 ・EMEA(欧州・中東・アフリカ)チーム(IAMロール: EMEA_team): region = 'EMEA' の行のみ参照可、ssn カラムは表示不可 ・アナリストチーム: 全行参照可、ssn カラムのみ除外 この要件を最も効率的に実装する方法はどれですか?
AWS Lake Formation はデータフィルター(行レベルセキュリティ)と列レベルアクセス許可をネイティブに提供します。データの物理的なコピーや複製なしに、単一テーブルに対して複数チームへ異なるビューを付与でき、Lake Formation の CloudTrail 連携監査ログでアクセスを一元的に記録できます。 選択肢Aの「S3バケットのプレフィックスをリージョン別」はS3プレフィックスによる物理分割ではデータの重複保存が必要となりコストと管理負荷が増大します。またS3バケットポリシーではカラムレベルのアクセス制御を実現できません。 選択肢Bの「AWS Glue ジョブでリージョン別のビューテーブルをそれぞれ作成し」はGlueビューでも要件を満たせますが、地域が増えるたびにビュー追加・管理が必要になります。Lake Formation のネイティブ機能を使う方が一元管理・監査ログの観点で優れており、運用コストが低くなります。 選択肢Dの「Amazon Redshift のビューと行レベルセキュリティ」はRedshift はデータウェアハウスであり、Lake Formation で管理されたデータレイク(S3上のデータ)全体のアクセス制御には適していません。S3に直接クエリするユースケースをカバーできず、データをRedshiftへロードする追加コストも発生します。