7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Lake Formation の使い方的な②(データカタログへの権限制御)

Last updated at Posted at 2019-08-09

データカタログへの権限制御する

Lake Formationは、データカタログにきめ細かな権限制御ができます。
ユーザーごとに、データカタログのDatabaseへのテーブル追加を禁止したり、あるカラムを非表示にしたり、実行できるSQLを制限したりできます。やってみます。

S3パス

s3://test-lf01/in00

Database名

lf01

テーブル名

test1

テスト用IAMユーザー

test_user1

CSVファイルをS3にアップ

ファイル名:person.csv
s3://test-lf01/in00 に以下のCSVファイルをアップ

taro, 20190101, 101, 00001
jiro, 20190202, 102, 00001
ojiro, 20190303, 101, 00002
hanako, 20190404, 103, 00004
スクリーンショット 0001-08-09 10.06.07.png

スキーマは以下を想定
name(string)
date(string)
storeid(string)
accountnumber(string)

データカタログ作成

Database作成

Lake Formationの画面で左側メニューから"Database"をクリックし、右上の[Create database]をクリック

スクリーンショット 0001-08-09 10.07.34.png

Nameに"lf01"と入れて、"Grant All to Everyone for new tables in this database"のチェックを外し、右下の[Create database]をクリック
※"Everyone"はLake Formationのユーザーグループの要素です。パブリックなユーザーという意味ではなく、Lake FormationのIAMアクセス許可を持つ全員という意味です。

"Grant All to Everyone for new tables in this database"はこのデータベースで作成される新しいテーブルに"Everyone"に対して全権限を与えるという設定。デフォルトはチェックが入っている。

スクリーンショット 0001-08-10 8.27.51.png

Databaseできた

スクリーンショット 0001-08-09 10.10.35.png

テーブル作成

Lake Formationの画面で左側メニューから"Tables"をクリックし、右上の[Create table]をクリック(今回は手動でテーブル作成)

スクリーンショット 0001-08-09 10.11.22.png

以下を入力(あとに続く)

Name: "test1"
Database: "lf01"

スクリーンショット 0001-08-09 10.13.57.png

Include path に s3://lf01/in00/
※別リージョンのバケットは選択できないっぽい
CSVにチェック

スクリーンショット 0001-08-09 10.14.22.png

右上の[Add column]をクリック

スクリーンショット 0001-08-09 10.16.48.png

カラムを追加していく。追加するカラムは↓
name(string)
date(string)
storeid(string)
accountnumber(string)

スクリーンショット 0001-08-09 10.16.59.png

追加し終わったら右下の[Submit]をクリック

スクリーンショット 0001-08-09 10.17.45.png

テーブル出来た。

スクリーンショット 0001-08-09 10.18.11.png

権限確認

Databaseに対しては、管理者はフル権限、"Everyone"もフル権限(デフォルトではDatabase作成時に"Everyone"へのフル権限が付与される設定になってる)

スクリーンショット 0001-08-10 8.40.08.png

テーブルに対しては、管理者はフル権限、"Everyone"はいない(前述のように、今回Database作成時の設定で新規作成テーブルに"Everyone"へのフル権限を付与しない設定にした)。なので管理者以外は操作できない。

スクリーンショット 0001-08-10 8.41.02.png

Athenaで確認

まずは管理者で、Lake Formationで作ったデータカタログを使い、Athenaで閲覧出来ていることが確認できる。

スクリーンショット 0001-08-09 10.23.03.png

Lake Formationによる権限管理

Lake Formationの売りの1つであるカラムレベルでの権限制御を確認する

今回は、あるユーザーに対してはstoreid, accountnumberのカラムは表示させたくない。テーブルのdropもさせたくない。という制御を入れます。

IAMユーザー作成

手順は割愛しますが、こんな感じでAdministratorのポリシーを持つtest_user1を作りました。

正真正銘administratorです

スクリーンショット 0001-08-09 10.28.09.png

test_user1でAthenaにアクセスするとDatabaseのlf01は見えますが、まだテーブルへの権限がなにもないためテーブルは表示されません。もちろんクエリもはじかれます。
Lake Formationが登場する以前だったら見えてましたね。本機能はLake Formationのリソースベースポリシーと考えればいいと思います。

スクリーンショット 0001-08-10 8.36.15.png

Lake FormationのData Permissionsで設定。当初やりたかった特定カラムだけ非表示

test_user1ユーザーに対してはstoreid, accountnumberのカラムは表示させたくない。テーブルのdropもさせたくない。という制御を入れます。

LakeFormationの画面で左側メニューの"Data Permissions"をクリックし、右上の[Grant]をクリック

スクリーンショット 0001-08-09 10.56.00.png

以下を入力していきます(あとに続く)
IAM user add roles : test_user1
Database: lf01
Table: test1

スクリーンショット 0001-08-09 10.58.20.png

以下を入れ右下の[Grant]をクリック

Columnに"Include columns"を選択
Include columnsに"name"、"date"を選択
Table permissionsに"select"にチェック

スクリーンショット 0001-08-09 12.43.35.png

結果はこんな感じ

スクリーンショット 0001-08-09 12.45.32.png

Athenaで確認

test_user1の人には、nameとdateの列だけが見える状態になっている。

スクリーンショット 0001-08-10 8.48.50.png

ちゃんとDDLも拒否している
以下のようにパーミッションエラーな感じのメッセージが確認できる
MetaException(message:Insufficient Lake Formation permission(s):...

スクリーンショット 0001-08-10 8.50.55.png

Lake FormationのRecent Access Activity のログはこんな感じ
※CloudTrailのログなので、だいたい10分くらい遅れて出力される。あとこの画面ではフィルタが相当弱い・・

右上のView eventをクリックで詳細確認可能

スクリーンショット 0001-08-10 9.39.47.png

(補足)_DataCatalogのデフォルトセッティング

新しく作成されたデータベースとテーブルのデフォルトのパーミッションとして以下の2つを有効無効にできます(デフォルトは有効)

  • 新しく作成されたデータベースに"Everyone"へのAll許可を与える
  • 新しく作成されたテーブルに"Everyone"へのALL許可を与える

特に必要がなければチェックを外して右下の[Save]をクリックします。これにより新規で作成されたデータベースやテーブルに自動で"Everyone"への許可(IAMの権限があれば操作できる状態)されることはなくなり、Lake Formation上で明示的なきめ細かい許可を与える運用を行う事ができます。

"Everyone"はGlueDataCatalogからの移行のために存在するEntityで、この辺はまた今度記事にできればと

スクリーンショット 0001-08-10 16.35.02.png

こちらも是非

LakeFormationの使い方まとめ
https://qiita.com/pioho07/items/76554a7ac4252858b450

Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?