こんにちは、クラウドインテグレーション部の加藤ゆです。
Athenaを利用してデータ検索を実施する際に、Athenaエディタを利用グループ毎で管理したいときや、裏で利用するGlueの実行権限を限定したいときはないでしょうか。
今回は、AthenaとGlueのアクセス制御方法について記載します。
※本記事では、AWS LakeFormationには触れません。
データカタログへのDB/Tableレベルでの詳細なアクセスコントロールを行う際にはAWS LakeFormationをご検討ください。
Lake Formation のタグベースのアクセスコントロール - AWS Lake Formation
AWSでのポリシー評価の仕組み
AWSにおけるアクセスポリシーについては以下ブログをご参照ください。
本記事に出てくるのは、上記ブログのうち以下2つについてです。
- リソースベースのポリシー
- アイデンティティベースのポリシー
1.Athenaワークグループを利用したアクセス制御
出来ること
- ワークグループ毎で実行するクエリレベルでの制御が可能
Athenaのワークグループを作成し、ワークグループ単位で利用するIAMユーザーを制限することでIAMユーザごとのアクセス制御を行います。
ワークグループとは?作成方法は?という方は以下ブログをご参照ください blog.serverworks.co.jp
IAMポリシーの書き方
アイデンティティベースのポリシー(IAMポリシー)をユーザー、グループ、またはロールにアタッチします。
作業概要
よくあるIAMの使い方と同様と考えていただいて良いですが、IAMポリシー記述の 「Resource」キーで利用可能なワークグループを指定できる点がポイントです.
- IAM コンソールよりIAMポリシーの作成
- IAMポリシーの①Actionで、Athena で利用可or不可とするアクションを指定
- IAMポリシーの②Resourceで、ワークグループを指定
- IAMポリシーを③IAMユーザーorIAMグループ、またはロールにアタッチ
IAMポリシーをIAMユーザorIAMグループへアタッチすることで、
③のIAMユーザorIAMグループに①②の権限を付与することが可能です。
特定のワークグループでクエリを実行および停止するためのIAMポリシー例
ワークグループにアクセスするための IAM ポリシー - Amazon Athena
Athenaで定義できるアクション、リソースタイプは以下公式ドキュメントをご参照下さい。
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しています。
Action
- DeleteDatabase, CreateCrawlerなど(対象は以下参照)
- AWS Glue のアクション、リソース、および条件キー - サービス認証リファレンス
Principal
- IAM ユーザー、ロール、またはグループ
- Resource
- database, table, crawlerなど(対象は以下参照)のARNを指定
- AWS Glue のアクション、リソース、および条件キー - サービス認証リファレンス
注意事項
注記 現在、リソースポリシーはカタログあたり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
ご利用ユースケースに合わせて、サービスを選定し権限管理いただければと思います。 最後までご覧いただきありがとうございました!!