AWS Glue Data Catalog ポリシーの権限の確認

必要な主体、カタログ操作、リソースだけを許可してください。

説明

Glue Data Catalog のリソースポリシーが広すぎると、不要な主体にデータベース・テーブルのメタデータの参照や変更を許すおそれがあります。このポリシーは、Glue ジョブやクローラー自体の管理権限、保存された元データへのアクセス権限とは区別してください。

想定される影響

  • 不要なカタログの参照により、データ構造や保存場所が漏えいする可能性があります。
  • テーブルやデータベース定義の変更・削除は、分析やデータ処理を中断させるおそれがあります。

対処方法

  • 有効な既存の IAM 主体と、必要なカタログ操作だけを指定してください。
  • ポリシーを関連付けたカタログの ARN に範囲を絞り、操作に必要なデータベース・テーブルと上位リソースの権限を含めてください。
  • 他の IAM・Lake Formation 権限と既存の利用者を確認し、必要な操作が成功して不要な参照・変更が拒否されることを試験してください。

例

同じリソースポリシーの操作と対象を絞る抜粋です。参照データソースは別途定義し、ロール ARN と example データベース名を実際の値に置き換えてください。Glue は有効な既存の主体を必要とします。

変更前

hcl
data "aws_iam_policy_document" "glue_example_policy" {
  statement {
    actions = [
      "glue:*",
    ]
    resources = ["arn:${data.aws_partition.current.partition}:glue:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:*"]
    principals {
      identifiers = ["arn:aws:iam::111122223333:role/catalog-writer"]
      type        = "AWS"
    }
  }
}

resource "aws_glue_resource_policy" "example" {
  policy = data.aws_iam_policy_document.glue_example_policy.json
}

指定ロールにカタログ全体の広い操作を許可します。必要なロールでも、操作と対象は必要な範囲に絞ってください。

変更後

hcl
data "aws_iam_policy_document" "glue_example_policy" {
  statement {
    actions = [
      "glue:CreateTable",
    ]
    resources = [
      "arn:${data.aws_partition.current.partition}:glue:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:catalog",
      "arn:${data.aws_partition.current.partition}:glue:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:database/example",
      "arn:${data.aws_partition.current.partition}:glue:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:table/example/*",
    ]
    principals {
      identifiers = ["arn:aws:iam::111122223333:role/catalog-writer"]
      type        = "AWS"
    }
  }
}

resource "aws_glue_resource_policy" "example" {
  policy = data.aws_iam_policy_document.glue_example_policy.json
}

example データベースでのテーブル作成に許可を絞り、必要な上位カタログ・データベースの ARN も含めます。元データへのアクセスやジョブ実行の権限は別途確認してください。

参考資料