AWS LakeFormationで権限管理をしてみよう

記事タイトルとURLをコピーする

こんにちは!DS1課、濱岡です

最近データ分析の話をよく聞きます。 その中でデータの権限管理ってどうしてますか?

AWSではAWS LakeFormationというサービスがあります。 そのサービスについて今回はまとめてみようと思います。

AWS LakeFormationとは?

AWS LakeFormationとは一言でいうとデータの一元管理ができるサービスです。 Amazon S3上のデータとAWS Glue Data Catalog関連のメタデータに対するアクセスのコントロールができます。

aws.amazon.com

このAWS LakeFormationの最大のメリットは複雑なIAMの管理を軽減することができることです。 AWS LakeFormationはデータカタログに対して権限の制御を行います。 ということはデータカタログを作ってしまえばAWS LakeFormationが権限制御をやってくれるわけですね。

AWS LakeFormationの権限管理には2つの方法があります。 Resources matched by LF-TagsNamed 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を押下します。

LF-Tag-1

KeyとValuesを入力してAddを押下します。 ここで複数のKeyとValuesを入力することが可能です。

LF-Tag-2

追加したいKeyとValueを入力し終わったら、Add LF-Tagsを押下します。

LF-Tag-3
これでLF-Tagが追加できました。

まずは、LF-Tagと利用するIAMユーザーを紐付けます。 AWS LakeFormationのData lake permissionsからGrantを押下します。

LF-Tag-4

利用するIAMユーザー、作成したLF-Tagを選択します。(ロールに権限を付与したい場合はロールを選択してください。) Database permissionとTable permissionはそれぞれデータベースとテーブルにどういう権限を付与するかになります。 今回はAthenaでクエリを発行してどう権限付与されているかみたいので、Selectの権限を付与しました。

LF-Tag-5

次にTableに対してタグを付与してみます。

AWS LakeFormationの中のTablesを押下します。 今回はCloudTrailのログをあらかじめ用意しました。 付与したいTableにチェックをいれ、ActionsからEdit LF-Tagsを押下します。

LF-Tag-6

Assigned KeysとValuesに作成したLF-Tagsを入れてAssign new LF-Tagを押下します。

LF-Tag-7
Saveを押下します。

これでTableに対して権限の付与ができました。

では実際にAthenaの画面でクエリを実行してみます。 このようにクエリの結果が返ってきました。

Athena-1

次に特定の列での制御をしてみます。

先ほどのTableに付与したLF-Tagは削除します。 その後、Tableを押下して詳細画面を開きます。 SchemaのEdit schemaを押下します。

LF-Tag-8

権限を付与するカラムにチェックを入れてEdit LF-Tagsを押下します。

LF-Tag-9

作成したInherited keysとValuesに作成したLF-Tagを入力してAssign new LF-Tagを押下します。 Saveを押下します。

LF-Tag-10

権限の付与ができたので、もう一度Athenaでクエリを実行してみます。 さきほどLF-Tagを付与したデータが確認できます。

Athena-2

まとめ

AWS LakeFormationで権限管理をしてみました。 ちょっと分かりづらいですが、一度触ってみてくださいね!

以上、濱岡でした!

はまおか(執筆記事の一覧)

アプリケーションサービス部

プログラムを書くことが好きです