こんにちは!DS1課、濱岡です
最近データ分析の話をよく聞きます。 その中でデータの権限管理ってどうしてますか?
AWSではAWS LakeFormationというサービスがあります。 そのサービスについて今回はまとめてみようと思います。
AWS LakeFormationとは?
AWS LakeFormationとは一言でいうとデータの一元管理ができるサービスです。 Amazon S3上のデータとAWS Glue Data Catalog関連のメタデータに対するアクセスのコントロールができます。
このAWS LakeFormationの最大のメリットは複雑なIAMの管理を軽減することができることです。 AWS LakeFormationはデータカタログに対して権限の制御を行います。 ということはデータカタログを作ってしまえばAWS LakeFormationが権限制御をやってくれるわけですね。
AWS LakeFormationの権限管理には2つの方法があります。
Resources matched by LF-Tags
とNamed Data Catalog resources
です。
Resources matched by LF-TagsはLF-Tagを利用して権限を制御し、Named Data Catalog resourcesはリソースに対して直接権限を付与して制御するやり方です。 推奨はLF-Tagを利用したやり方です。 リソースが増えれば増えるほどNamed Data Catalog resourcesでやってしまうと大変になるのでLF-Tagでやる方が権限管理は楽になります。
では今回はLF-Tagで権限制御をするやり方を記載します。
実際にやってみた
今回はAthenaを利用してクエリを利用するのに権限制御をしてみます。 まずはLF-Tagを作成します。 AWS LakeFormationのコンソール画面のLF-Tags and PermissionsのAdd LF-Tagsを押下します。
KeyとValuesを入力してAddを押下します。 ここで複数のKeyとValuesを入力することが可能です。
追加したいKeyとValueを入力し終わったら、Add LF-Tagsを押下します。
これでLF-Tagが追加できました。まずは、LF-Tagと利用するIAMユーザーを紐付けます。 AWS LakeFormationのData lake permissionsからGrantを押下します。
利用するIAMユーザー、作成したLF-Tagを選択します。(ロールに権限を付与したい場合はロールを選択してください。) Database permissionとTable permissionはそれぞれデータベースとテーブルにどういう権限を付与するかになります。 今回はAthenaでクエリを発行してどう権限付与されているかみたいので、Selectの権限を付与しました。
次にTableに対してタグを付与してみます。
AWS LakeFormationの中のTablesを押下します。 今回はCloudTrailのログをあらかじめ用意しました。 付与したいTableにチェックをいれ、ActionsからEdit LF-Tagsを押下します。
Assigned KeysとValuesに作成したLF-Tagsを入れてAssign new LF-Tagを押下します。
Saveを押下します。これでTableに対して権限の付与ができました。
では実際にAthenaの画面でクエリを実行してみます。 このようにクエリの結果が返ってきました。
次に特定の列での制御をしてみます。
先ほどのTableに付与したLF-Tagは削除します。 その後、Tableを押下して詳細画面を開きます。 SchemaのEdit schemaを押下します。
権限を付与するカラムにチェックを入れてEdit LF-Tagsを押下します。
作成したInherited keysとValuesに作成したLF-Tagを入力してAssign new LF-Tagを押下します。 Saveを押下します。
権限の付与ができたので、もう一度Athenaでクエリを実行してみます。 さきほどLF-Tagを付与したデータが確認できます。
まとめ
AWS LakeFormationで権限管理をしてみました。 ちょっと分かりづらいですが、一度触ってみてくださいね!
以上、濱岡でした!