AWS Glue リソース ARN の指定 - AWS Glue

AWS Glue リソース ARN の指定

AWS Glue では、AWS Identity and Access Management (IAM) ポリシーを使用してリソースへのアクセスを制御できます。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。AWS Glue のすべてのリソースで ARN がサポートされているわけではありません。

データカタログの ARN

Data Catalog リソースには、catalog をルートとする階層構造があります。

arn:aws:glue:region:account-id:catalog

各 AWS アカウントは、カタログ ID として 12 桁のアカウント ID を使用する単一の Data Catalog を、AWS リージョン内に持っています。リソースには、次の表に示すように、一意の ARN が関連付けられています。

リソースタイプ: ARN 形式

カタログ

arn:aws:glue:region:account-id:catalog

例: arn:aws:glue:us-east-1:123456789012:catalog

データベース

arn:aws:glue:region:account-id:database/database name

例: arn:aws:glue:us-east-1:123456789012:database/db1

テーブル

arn:aws:glue:region:account-id:table/database name/table name

例: arn:aws:glue:us-east-1:123456789012:table/db1/tbl1

ユーザー定義関数

arn:aws:glue:region:account-id:userDefinedFunction/database name/user-defined function name

例: arn:aws:glue:us-east-1:123456789012:userDefinedFunction/db1/func1

Connection

arn:aws:glue:region:account-id:connection/connection name

例: arn:aws:glue:us-east-1:123456789012:connection/connection1

インタラクティブセッション

arn:aws:glue:region:account-id:session/interactive session id

例: arn:aws:glue:us-east-1:123456789012:session/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

きめ細かなアクセスコントロールを有効にするには、IAM ポリシーとリソースポリシーでこれらの ARN を使用して、特定のリソースへのアクセス許可を付与または拒否します。ポリシーではワイルドカードを使用できます。たとえば、次の ARN はデータベース default のすべてのテーブルと一致します。

arn:aws:glue:us-east-1:123456789012:table/default/*
重要

Data Catalog リソースで実行されるすべてのオペレーションには、リソースとその継承元すべてに対するアクセス許可が必要です。たとえば、テーブルのパーティションを作成するには、テーブル、データベース、およびテーブルが存在するカタログに対するアクセス許可が必要です。以下に、Data Catalog のデータベース PrivateDatabase 内のテーブル PrivateTable で、パーティションを作成するのに必要なアクセス許可の例を示します。

{ "Sid": "GrantCreatePartitions", "Effect": "Allow", "Action": [ "glue:BatchCreatePartitions" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/PrivateTable", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

リソースとそのすべての祖先のアクセス許可に加えて、すべての削除オペレーションにはそのリソースのすべての子のアクセス許可が必要です。たとえば、データベースを削除するには、データベースおよびデータベースが存在するカタログに加えて、データベース内のすべてのテーブルおよびユーザー定義関数に対するアクセス許可が必要です。以下は、Data Catalog でデータベース PrivateDatabase を削除するのに必要なアクセス許可の例です。

{ "Sid": "GrantDeleteDatabase", "Effect": "Allow", "Action": [ "glue:DeleteDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/PrivateDatabase/*", "arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase", "arn:aws:glue:us-east-1:123456789012:catalog" ] }

要約すると、Data Catalog リソースに対するアクションは、以下のアクセス許可のルールに従います。

  • カタログに対するアクションには、カタログのみに対するアクセス許可が必要です。

  • データベースに対するアクションには、データベースおよびカタログに対するアクセス許可が必要です。

  • データベースに対する削除アクションには、データベースとカタログに対するアクセス許可に加えて、データベース内のすべてのテーブルおよびユーザー定義関数に対するアクセス許可も必要です。

  • テーブル、パーティション、またはテーブルバージョンに対するアクションには、テーブル、データベース、およびカタログに対するアクセス許可が必要です。

  • ユーザー定義関数に対するアクションには、ユーザー定義関数、データベース、およびカタログに対するアクセス許可が必要です。

  • 接続に対するアクションには、接続およびカタログに対するアクセス許可が必要です。

AWS Glue にあるカタログ以外のオブジェクトの ARN

一部の AWS Glue リソースによって、ARN を使用してアクセスをコントロールするリソースレベルの許可が付与されます。IAM ポリシーでこれらの ARN を使用して、きめ細かなアクセスコントロールを有効にします。次の表は、リソース ARN を含むことができるリソースの一覧です。

リソースタイプ: ARN 形式

Crawler

arn:aws:glue:region:account-id:crawler/crawler-name

例: arn:aws:glue:us-east-1:123456789012:crawler/mycrawler

ジョブ

arn:aws:glue:region:account-id:job/job-name

例: arn:aws:glue:us-east-1:123456789012:job/testjob

Trigger トリガー)

arn:aws:glue:region:account-id:trigger/trigger-name

例: arn:aws:glue:us-east-1:123456789012:trigger/sampletrigger

開発エンドポイント

arn:aws:glue:region:account-id:devEndpoint/development-endpoint-name

例: arn:aws:glue:us-east-1:123456789012:devEndpoint/temporarydevendpoint

機械学習変換

arn:aws:glue:region:account-id:mlTransform/transform-id

例: arn:aws:glue:us-east-1:123456789012:mlTransform/tfm-1234567890

AWS Glue のカタログ以外の単一の API オペレーション

AWS Glue のカタログ以外の単一の API オペレーションは、単一の項目 (開発エンドポイント) で動作します。例は、GetDevEndpoint, CreateUpdateDevEndpoint および UpdateDevEndpoint です。これらのオペレーションでは、ポリシーは API 名を "action" ブロックに、リソース ARN を "resource" ブロックに置く必要があります。

GetDevEndpoint オペレーションの呼び出しをユーザーに許可するとします。次のポリシーは、myDevEndpoint-1 という名前のエンドポイントに必要最小限のアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "MinimumPermissions", "Effect": "Allow", "Action": "glue:GetDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-1" } ] }

次のポリシーは、ワイルドカード (*) を使用して myDevEndpoint- と一致するリソースへのアクセスを UpdateDevEndpoint に許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionWithWildcard", "Effect": "Allow", "Action": "glue:UpdateDevEndpoint", "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-*" } ] }

次の例のように 2 つのポリシーを組み合わせることができます。名前が A で始まるすべての開発エンドポイントに対して EntityNotFoundException が表示される場合があります。一方、その他の開発エンドポイントにアクセスしようとすると、アクセス拒否エラーが表示されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CombinedPermissions", "Effect": "Allow", "Action": [ "glue:UpdateDevEndpoint", "glue:GetDevEndpoint" ], "Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/A*" } ] }

複数の項目を取得する AWS Glue のカタログ以外の API オペレーションのアクセスコントロール

一部の AWS Glue API オペレーション (GetDevEndpoints など) は、複数の項目 (複数の開発エンドポイントなど) を取得します。このオペレーションでは、特定の ARN ではなく、ワイルドカード (*) リソースのみを指定できます。

たとえば、GetDevEndpoints をポリシーに含めるには、リソースの範囲をワイルドカード (*) に限定する必要があります。単一のオペレーション (GetDevEndpointCreateDevEndpoint、および DeleteDevendpoint) の範囲も、例のすべての (*) リソースに限定されます。

{ "Sid": "PluralAPIIncluded", "Effect": "Allow", "Action": [ "glue:GetDevEndpoints", "glue:GetDevEndpoint", "glue:CreateDevEndpoint", "glue:UpdateDevEndpoint" ], "Resource": [ "*" ] }

AWS Glue のカタログ以外のバッチ取得 API オペレーションのアクセス制御

一部の AWS Glue API オペレーション (BatchGetDevEndpoints など) は、複数の項目 (複数の開発エンドポイントなど) を取得します。このオペレーションでは、アクセス可能なリソースの範囲を制限するために ARN を指定できます。

たとえば、特定の開発エンドポイントへのアクセスを許可するには、そのリソース ARN を指定して BatchGetDevEndpoints をポリシーに含めます。

{ "Sid": "BatchGetAPIIncluded", "Effect": "Allow", "Action": [ "glue:BatchGetDevEndpoints" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:devEndpoint/de1" ] }

このポリシーでは、de1 という名前の開発エンドポイントに正常にアクセスできます。ただし、de2 という名前の開発エンドポイントにアクセスしようとすると、エラーが返されます。

An error occurred (AccessDeniedException) when calling the BatchGetDevEndpoints operation: No access to any requested resource.
重要

ListBatchGet API オペレーションを使用するなど、IAM ポリシーを設定するための別の方法については、「AWS Glue のアイデンティティベースポリシーの例」を参照してください。