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 形式 |
---|---|
カタログ |
例: |
データベース |
例: |
テーブル |
例: |
ユーザー定義関数 |
例: |
Connection |
例: |
インタラクティブセッション |
例: |
きめ細かなアクセスコントロールを有効にするには、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 |
例: |
ジョブ |
例: |
Trigger トリガー) |
例: |
開発エンドポイント |
例: |
機械学習変換 |
例: |
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
をポリシーに含めるには、リソースの範囲をワイルドカード (*) に限定する必要があります。単一のオペレーション (GetDevEndpoint
、CreateDevEndpoint
、および 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.
重要
List
や BatchGet
API オペレーションを使用するなど、IAM ポリシーを設定するための別の方法については、「AWS Glue のアイデンティティベースのポリシーの例」を参照してください。