AWS Lake Formationにおけるデータカタログ設定の意味について

2021.07.16

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

最近、AWS Lake Formationを触り始めたのですが、その中で「データカタログ設定」の設定の意味について分かってきたので、まとめておきたいと思います。

なお、AWS Lake Formationについては、すでに以下のとおり多くのエントリが投稿されていますので、こちらもご参照ください。

今回、対象とする設定について

「データカタログ設定」は、下記の画像の箇所にあります。

今回はこの設定の「Default permissions for newly created databases and tables」についてです。

この設定の意味とは?

この設定項目には、以下のように記載されています。

These settings maintain existing AWS Glue Data Catalog behavior. You can still set individual permissions on databases and tables, which will take effect when you revoke the Super permission from IAMAllowedPrincipals. See Changing Default Settings for Your Data Lake.

日本語だと以下のような意味になりますね。

これらの設定は、既存の AWS Glue データカタログ の動作を維持します。データベースとテーブルに個別の権限を設定することができます。これは、IAMAllowedPrincipals から Super 権限を取り消すと有効になります。Changing Default Settings for Your Data Lakeを参照してください。

参照せよ、と記載されているドキュメントは以下のページです。

このドキュメントに記載されている通り、Glueとの互換性維持のためにデフォルトでは以下のようなセキュリティ設定がされています。

  • すべての既存のAWS Glueデータカタログリソースに対して、IAMAllowedPrincipalsグループにSuper権限が付与されている
  • 新規のデータカタログリソースには、「IAMアクセスコントロールのみを利用する」設定が有効になっている

AWS Lake Formationでは、独自のアクセスコントロールモデルによるきめ細やかなアクセス制御が可能となっています。一方で、互換性の維持のために上記のデフォルト設定が有効になっており、この状態ではLake Formationによる権限管理がされません。

Lake Formationによる権限管理を有効にするには?

Lake Formationによる権限管理を有効にするには、以下のドキュメントの「Change Data Catalog Settings」に記載されている手順を実施します。なお、こちらは「これから作成されるデータベース、テーブル」のみに有効となります。

では、実際にやっていきましょう。

ドキュメントにも記載のとおり、以下の操作はAdministratorAccessの権限をもつユーザーでの操作を前提としています。

AWS管理コンソールの「AWS Data Lake Formation」の管理画面で、「Data cagtalog > Settings」の画面を開きます。

開いたら、下記のように「Default permissions for newly created databases and tables」の箇所のチェックボックスを外して「Save」ボタンで保存します。

一度サインアウトして、「Data lake administrators」のユーザーで戻ってきます。なお「Data lake administrators」のユーザーというのは、「Permissions > Administrative roles and tasks」を開いた際の「Data lake administrators」にリストアップされているユーザーです。

つぎに、「Permissions > Administrative roles and tasks」を開き、「Database creators」に表示されているIAMAllowedPrincipalsグループを選択して「Revoke」をクリックします。

ダイアログが開き、カタログ権限の「Create database」がRevokeされる旨が表示されていることを確認して「Revoke」します。

以上で設定完了です!

何が変わったの?

これで何が変わったのか、「設定前に作成したデータベース」と「設定後に作成したデータベース」の権限を見比べてみましょう。

cm-ootaka-database-beforeが「設定前に作成したデータベース」で、cm-ootaka-database-afterが「設定後に作成したデータベース」です。

設定前のデータベースにはIAMAllowdPrincipalsに対して、Allの権限が付与されていることがわかります。このため、IAMベースで全ての権限が付与されており、Lake Formationによる権限制御を超えた権限が与えられることがわかります。

一方で、設定後のデータベースにはIAMAllowdPrincipalsに対する権限設定はないので、Lake Formationによる権限制御をこれから与えていけば良い、という感じです。

また、どちらもIAM roleに対する全権限の付与がなされていますが、これは「Administrative roles」、すなわちLake Formationの管理者に対する権限なので、想定どおりです。

まとめ

以上、AWS Lake Formationにおけるデータカタログ設定の意味についてでした。

AWS Lake Formationではきめ細やかな権限設定ができますが、他のサービスにおけるIAMベースでの権限設定とは考え方が少し変わります。このあたりをきちんと理解しておかないと、うまく権限制御ができなくなってしまいますので、しっかり抑えておきたいと思います。

どなたかのお役に立てば幸いです。それでは!