GlueとAthenaワークグループのアクセス権限管理

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

こんにちは、クラウドインテグレーション部の加藤ゆです。
Athenaを利用してデータ検索を実施する際に、Athenaエディタを利用グループ毎で管理したいときや、裏で利用するGlueの実行権限を限定したいときはないでしょうか。

今回は、AthenaとGlueのアクセス制御方法について記載します。

※本記事では、AWS LakeFormationには触れません
データカタログへのDB/Tableレベルでの詳細なアクセスコントロールを行う際にはAWS LakeFormationをご検討ください。

Lake Formation のタグベースのアクセスコントロール - AWS Lake Formation

AWSでのポリシー評価の仕組み

AWSにおけるアクセスポリシーについては以下ブログをご参照ください。

blog.serverworks.co.jp

本記事に出てくるのは、上記ブログのうち以下2つについてです。

  1. リソースベースのポリシー
  2. アイデンティティベースのポリシー

1.Athenaワークグループを利用したアクセス制御

出来ること

  • ワークグループ毎で実行するクエリレベルでの制御が可能

Athenaのワークグループを作成し、ワークグループ単位で利用するIAMユーザーを制限することでIAMユーザごとのアクセス制御を行います。

ワークグループとは?作成方法は?という方は以下ブログをご参照ください blog.serverworks.co.jp

IAMポリシーの書き方

アイデンティティベースのポリシー(IAMポリシー)をユーザー、グループ、またはロールにアタッチします。

作業概要

よくあるIAMの使い方と同様と考えていただいて良いですが、IAMポリシー記述の 「Resource」キーで利用可能なワークグループを指定できる点がポイントです.

  1. IAM コンソールよりIAMポリシーの作成
    • IAMポリシーの①Actionで、Athena で利用可or不可とするアクションを指定
    • IAMポリシーの②Resourceで、ワークグループを指定
  2. IAMポリシーを③IAMユーザーorIAMグループ、またはロールにアタッチ

IAMポリシーをIAMユーザorIAMグループへアタッチすることで、
③のIAMユーザorIAMグループに①②の権限を付与することが可能です。

特定のワークグループでクエリを実行および停止するためのIAMポリシー例
ワークグループにアクセスするための IAM ポリシー - Amazon Athena

Athenaで定義できるアクション、リソースタイプは以下公式ドキュメントをご参照下さい。

docs.aws.amazon.com

2.Glue DataCatalogのアクセス制御

出来ること

  • Glue DataCatalogのリソース(Database、Table、Connection、Function等)単位でのアクセス制御が可能

AWS Glue リソースポリシーでIAMユーザーorグループを指定し、AWS Glue Data Catalog 内のリソースを作成、変更するアクション制御を行います。

Glue DataCatalogのアクセス権限設定

”Glue DataCatalogのアクセス権限設定” とは具体的にどこで設定するかというと
AWS Glueマネジメントコンソール上の「Catalogsettings」の部分でPermissionsの記載が出来ます。

AWS Glue リソースポリシーの例
How AWS Glue works with IAM - AWS Glue

記載方式はIAM同様と考えていただいて問題ありません。
「Action」記載の権限を「Resource」記載のワークグループへAllowしています。

注意事項

注記 現在、リソースポリシーはカタログあたり1 つのみが許可され、サイズは 10 KB に制限されています。

AWS Glue と IAM の連携方法 - AWS Glue

AWS Glue リソースポリシーは、Data Catalogのリソースに対するアクセス許可を制御できます。
ただし、アクセス許可の記載箇所は「Catalogsettings」のPermissionsのみです。10 KB を超える記載が出来ないので、制御対象が多く文字数がかさむ場合にはご注意ください。
対策としては、アクセス制限対象ユーザをIAMグループでまとめるなどしていただくと良いかと思います。

AWS Glue コンソールを使用するために必要なアクセス許可

上記のように、Glue側で必要なDB/Table等制限する事は可能ですが、Allow形式で記載すると必要なアクセス許可も制限される可能性があります。

以下ドキュメントにも記載の通り、Glue リソースを操作するユーザはGlue以外のサービス連携も必要になるため制限の記載方法にはご注意ください。

最低限必要なアクセス許可よりも制限の厳しい IAM ポリシーを作成すると、コンソールはその IAM ポリシーを持つユーザーに対して意図したとおりに機能しません。
これらのユーザーが引き続き AWS Glue コンソールを使用できるようにするには、AWS Glue の AWS 管理 (事前定義) ポリシー でAWSGlueConsoleFullAccess説明されているように、管理ポリシーもユーザーにアタッチします。

How AWS Glue works with IAM - AWS Glue

おわり

冒頭でも記載しておりますが本記事では、AWS LakeFormationについては言及してません
データカタログへのDB/Tableレベルでの詳細なアクセスコントロールを行う際にはAWS LakeFormationをご検討ください。

Lake Formation のタグベースのアクセスコントロール - AWS Lake Formation

ご利用ユースケースに合わせて、サービスを選定し権限管理いただければと思います。 最後までご覧いただきありがとうございました!!

加藤 由有希 エンジニアブログの記事一覧はコチラ

エンタープライズクラウド部 所属

2020年4月に新卒入社