LakeFormationのデータパーミッション – 権限タイプについて整理してみた
データパーミッションとは
LakeFormationでは、データレイク内のデータへのアクセスを「データパーミッション」で制御します。これはデータベースやテーブルに対して、誰がどんな操作をできるかを定義するものです。
テーブルレベルの基本権限
SELECT(読み取り)
テーブルからデータを参照する権限です。
-- これができるようになる
SELECT * FROM my_table WHERE date = '2025-01-01';
列レベルでの制限も可能なので、個人情報が含まれるカラムを除外して付与することもできます。
INSERT(挿入)
テーブルに新しいデータを追加する権限です。
-- これができるようになる
INSERT INTO my_table VALUES ('2025-01-01', 'sample_data');
DELETE(削除)
テーブルからデータを削除する権限です。
-- これができるようになる
DELETE FROM my_table WHERE date < '2024-01-01';
ALTER(変更)
テーブル構造を変更する権限です。
-- これができるようになる
ALTER TABLE my_table ADD COLUMN new_column STRING;
スキーマ変更、パーティション追加・削除、テーブルプロパティの変更などが行えます。
DROP(テーブル削除)
テーブル自体を削除する権限です。
-- これができるようになる
DROP TABLE my_table;
これは本当に注意が必要です。間違って付与してしまうと、大事なテーブルが消される可能性があります。
DESCRIBE(参照)
テーブルのメタデータを参照する権限です。
-- これができるようになる
DESCRIBE my_table;
テーブルの構造(カラム名、データ型など)を確認できます。実際のデータは見えませんが、スキーマ情報は分かります。データカタログ的な用途で活用されることが多く、多くの人に付与される傾向にあります。
Super権限
これは特別な権限で、データベースやテーブルに対する広範囲な操作を許可する強力な権限です。ただし、「すべての権限を含む」というわけではなく、実はいくつかの制限があります。
Super権限でできることは多岐にわたります:
- データベース、テーブルに対するほとんどの操作を実行できる
- 他のユーザーに権限を付与・取り消しできる
- データレイク全体の管理を行える
ただし注意点として、カタログレベルでSuper権限を持っていても、カタログに対するALTERやDROPの操作は制限されています。
初期設定時やトラブル対応時には確かに便利な権限ですが、やはり普段使いには強いかも。基本的にはデータレイク管理者と、どうしても必要な緊急時対応用に限定しておくのがよさそう。実際の運用では、必要最小限の個別権限を組み合わせて使う方が安全かも。
参考記事
- Lake Formation permissions reference(権限リファレンス)
https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html