AWS Glue のアイデンティティベースのポリシーの例
デフォルトでは、ユーザーとロールには AWS Glue リソースを作成または変更するアクセス許可がありません。また、、 AWS Command Line Interface (AWS CLI) AWS Management Console、または を使用してタスクを実行することはできません AWS API。必要なリソースに対してアクションを実行するアクセス許可をユーザーに付与するには、IAM管理者はIAMポリシーを作成できます。その後、管理者はIAMポリシーをロールに追加し、ユーザーはロールを引き受けることができます。
これらのポリシードキュメントの例を使用して IAM ID ベースのJSONポリシーを作成する方法については、IAM「 ユーザーガイド」のIAM「ポリシーの作成 (コンソール)」を参照してください。
各リソースタイプの の形式など、 AWS Glue で定義されるアクションとARNsリソースタイプの詳細については、「サービス認可リファレンス」のAWS 「Glue のアクション、リソース、および条件キー」を参照してください。
注記
このセクションで取り上げる例は、すべて us-west-2
リージョンを使用しています。これは、使用する AWS リージョンに置き換えることができます。
トピック
ポリシーのベストプラクティス
ID ベースのポリシーは、アカウント内の AWS Glue リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを開始して、最小権限のアクセス許可に移行 – ユーザーとワークロードへのアクセス許可の付与を開始するには、多くの一般的なユースケースのアクセス許可を付与するAWS マネージドポリシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義することで、アクセス許可をさらに減らすことをお勧めします。詳細については、IAM「 ユーザーガイド」のAWS 「 管理ポリシーAWS 」または ジョブ機能の 管理ポリシーを参照してください。
-
最小権限のアクセス許可を適用する - IAMポリシーでアクセス許可を設定する場合、タスクの実行に必要なアクセス許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用してアクセス許可を適用する方法の詳細については、 ユーザーガイドの「」の「ポリシーとアクセス許可IAM」を参照してください。 IAM
-
IAM ポリシーの条件を使用してアクセスをさらに制限する – ポリシーに条件を追加して、アクションとリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを を使用して送信する必要があることを指定できますSSL。また、 などの特定の を通じてサービスアクションが使用されている場合 AWS のサービス、 条件を使用してサービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「 ユーザーガイド」のIAMJSON「ポリシー要素: 条件」を参照してください。 IAM
-
IAM Access Analyzer を使用してIAMポリシーを検証し、安全で機能的なアクセス許可を確保します – IAM Access Analyzer は、ポリシーがポリシー言語 (JSON) とIAMベストプラクティスに準拠するように、新規および既存のIAMポリシーを検証します。IAM Access Analyzer には、安全で機能的なポリシーの作成に役立つ 100 を超えるポリシーチェックと実用的な推奨事項が用意されています。詳細については、IAM「 ユーザーガイド」のIAM「Access Analyzer を使用したポリシーの検証」を参照してください。
-
多要素認証が必要 (MFA) – でIAMユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、 をオンにMFAしてセキュリティを強化します。API オペレーションが呼び出されるMFAタイミングを要求するには、ポリシーにMFA条件を追加します。詳細については、「 ユーザーガイド」の「 によるセキュアAPIアクセスMFA」を参照してください。 IAM
のベストプラクティスの詳細についてはIAM、「 ユーザーガイド」の「 セキュリティのベストプラクティスIAM」を参照してください。 IAM
リソースレベルのアクセス許可は、特定の AWS Glue objects
で特定のオブジェクトに対してのみきめ細かなコントロールを定義できます AWS Glue。 したがって、Resource
ステートメントの Amazon リソースネーム (ARNs) を許可するAPIオペレーションが、 を許可しないAPIオペレーションと混在しないように、クライアントのIAMポリシーを記述する必要がありますARNs。
例えば、次のIAMポリシーでは、 GetClassifier
および のAPIオペレーションを許可しますGetJobRun
。これは を Resource
として定義します*
。その理由は AWS Glue では、分類子とジョブの実行ARNsは許可されません。ARNs は GetDatabase
や などの特定のAPIオペレーションに許可されているためGetTable
、ポリシーの後半で指定ARNsできます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }
のリスト AWS Glue を許可するオブジェクトについてはARNs、「」を参照してくださいAWS Glue リソース ARN の指定。
AWS Glue コンソールの使用
AWS Glue コンソールにアクセスするには、最小限のアクセス許可のセットが必要です。これらのアクセス許可により、 の AWS Glue リソースの詳細を一覧表示して表示できます AWS アカウント。最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。
AWS CLI または のみに呼び出しを行うユーザーに対して、最小限のコンソールアクセス許可を付与する必要はありません AWS API。代わりに、実行しようとしているAPIオペレーションに一致するアクションにのみアクセスを許可します。
ユーザーとロールが AWS Glue コンソールを引き続き使用できるようにするには、 AWS Glue
またはConsoleAccess
AWS マネージドポリシーをエンティティにアタッチします。詳細については、「 ユーザーガイド」の「ユーザーへのアクセス許可の追加」を参照してください。 IAM ReadOnly
ユーザーが を操作するには AWS Glue コンソールの場合、そのユーザーは、AWS Glue AWS アカウントの リソース。これらに加えて AWS Glue アクセス許可。コンソールには、次のサービスからのアクセス許可が必要です。
-
Amazon CloudWatch Logs ログを表示するアクセス許可。
-
AWS Identity and Access Management (IAM) ロールを一覧表示して渡すアクセス許可。
-
AWS CloudFormation スタックを操作するアクセス許可。
-
VPCs、サブネット、セキュリティグループ、インスタンス、およびその他のオブジェクトを一覧表示する Amazon Elastic Compute Cloud (Amazon EC2) アクセス許可。
-
バケットとオブジェクトをリストし、スクリプトを取得して保存する Amazon Simple Storage Service (Amazon S3) のアクセス許可。
-
クラスターでの作業に必要な Amazon Redshift のアクセス許可。
-
インスタンスを一覧表示するための Amazon Relational Database Service (Amazon RDS) アクセス許可。
ユーザーが を表示して操作するために必要なアクセス許可の詳細については、AWS Glue コンソール、「」を参照してくださいステップ 3: AWS Glue にアクセスするユーザーまたはグループにポリシーをアタッチする。
最低限必要なアクセス許可よりも制限の厳しいIAMポリシーを作成すると、そのIAMポリシーを持つユーザーに対してコンソールは意図したとおりに機能しません。これらのユーザーが引き続き を使用できるようにするには AWS Glue コンソールには、「」で説明されているように、 AWSGlueConsoleFullAccess
マネージドポリシーもアタッチしますAWS Glue の AWS マネージド (事前定義) ポリシー。
自分の権限の表示をユーザーに許可する
この例では、IAMユーザーがユーザー ID にアタッチされているインラインポリシーとマネージドポリシーを表示できるようにするポリシーを作成する方法を示します。このポリシーには、 コンソールで、または AWS CLI または を使用してプログラムでこのアクションを実行するアクセス許可が含まれています AWS API。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
テーブルへの読み取り専用のアクセスを許可する
次のポリシーは、データベース db1
の books
テーブルに対する読み取り専用アクセス許可を付与します。リソース Amazon リソースネーム (ARNs) の詳細については、「」を参照してくださいデータカタログの ARN。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
このポリシーでは db1
という名前のデータベースにある books
という名前のテーブルへの読み取り専用許可を付与します。テーブルへの Get
アクセスを許可するには、カタログとデータベースリソースへのアクセス許可も必要になります。
次のポリシーは、データベース db1
にテーブル tb1
を作成するための必要最小限のアクセス許可を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:table/db1/tbl1", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:catalog" ] } ] }
アクセス GetTables 許可でテーブルをフィルタリングする
データベース db1
内に、customers
、stores
、および store_sales
の 3 つのテーブルがあるとします。次のポリシーは、GetTables
アクセス許可を stores
および store_sales
に付与しますが、customers
には付与しません。このポリシーで GetTables
を呼び出すと、結果には 2 つの認可されたテーブルのみが含まれます (customers
テーブルは返されません)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store_sales", "arn:aws:glue:us-west-2:123456789012:table/db1/stores" ] } ] }
store*
を使用して store
で始まる任意のテーブル名に一致させることで、前述のポリシーを簡素化できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample2", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store*" ] } ] }
同様に、/db1/*
を使用して db1
内のすべてのテーブルと一致させることで、次のポリシーによって db1
内のすべてのテーブルへのアクセスが GetTables
に付与されます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesReturnAll", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }
テーブルが指定されていない場合、 への呼び出しARNはGetTables
成功しますが、空のリストが返されます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesEmptyResults", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }
データベースARNがポリシーにない場合、 の呼び出しは でGetTables
失敗しますAccessDeniedException
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesAccessDeny", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }
テーブルとすべてのパーティションへのフルアクセスを付与する
次のポリシーは、データベース db1
で books
という名前のテーブルのすべての許可を付与します。これには、テーブル自体、テーブルのアーカイブされたバージョン、テーブルのすべてのパーティションでの読み込みおよび書き込みアクセス許可が含まれます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
前述のポリシーは、実際に次のように簡素化できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:*Table*", "glue:*Partition*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }
きめ細かなアクセスコントロールの最小粒度はテーブルレベルであることに注意してください。つまり、テーブル内の一部のパーティションへのアクセス許可をユーザーに付与できませんが、他のパーティションには付与できます。また、一部のテーブルの列には付与できませんが、他のテーブルの列には付与できます。ユーザーはすべてのテーブルへのアクセス許可を持っているか、どのアクセス許可も持っていません。
名前のプレフィックスと明示的な拒否によりアクセスを制御する
この例では、 AWS Glue Data Catalog のデータベースとテーブルが名前プレフィックスを使用して整理されているとします。開発ステージのデータベースには、名前のプレフィックス dev-
があります。実稼働環境のデータベースには、名前のプレフィックス prod-
があります。以下のポリシーを使用して、dev-
プレフィックスを持つすべてのデータベース、テーブル、 UDFsなどへのフルアクセスをデベロッパーに許可できます。ただし、prod-
プレフィックスを使用して、すべての読み取り専用アクセス許可を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DevAndProdFullAccess", "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*", "glue:*UserDefinedFunction*", "glue:*Connection*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/dev-*", "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/dev-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/dev-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/dev-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/dev-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/dev-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] }, { "Sid": "ProdWriteDeny", "Effect": "Deny", "Action": [ "glue:*Create*", "glue:*Update*", "glue:*Delete*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] } ] }
前述のポリシーの 2 番目のステートメントは、明示的な deny
を使用します。明示的な deny
を使用して、プリンシパルに付与された任意の allow
アクセス許可を上書きできます。これにより、重要なリソースへのアクセスをロックダウンして、別のポリシーによって重要なリソースへのアクセスが誤って付与されることを防ぐことができます。
前述の例では、最初のステートメントによって prod-
リソースへのフルアクセスが付与されていますが、2 番目のステートメントによって明示的にリソースへの書き込みアクセスが取り消され、prod-
リソースへの読み取りアクセスのみが残されています。
タグを使用してアクセスを許可する
たとえば、お使いのアカウントの Tom
という名前の特定のユーザーに対して、トリガー t2
へのアクセスを制限するとします。その他すべてのユーザー (Sam
など) は、トリガー t1
にアクセスできます。トリガー t1
と t2
には、以下のプロパティがあります。
aws glue get-triggers { "Triggers": [ { "State": "CREATED", "Type": "SCHEDULED", "Name": "t1", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" }, { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } ] }
- AWS Glue 管理者は をトリガーするためにタグ値 Tom
(aws:ResourceTag/Name": "Tom"
) をアタッチしましたt2
。- AWS Glue 管理者は、タグに基づく条件ステートメントを含むIAMポリシーを Tom にも付与しました。そのため、Tom は のみを使用できます。AWS Glue タグ値 を持つリソースで動作する オペレーションTom
。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
Tom がトリガー t1
にアクセスしようとすると、アクセス拒否メッセージが返されます。一方、トリガー t2
は正常に取得できます。
aws glue get-trigger --name t1 An error occurred (AccessDeniedException) when calling the GetTrigger operation: User: Tom is not authorized to perform: glue:GetTrigger on resource: arn:aws:glue:us-east-1:123456789012:trigger/t1 aws glue get-trigger --name t2 { "Trigger": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } }
Tom は複数のGetTriggers
APIオペレーションを使用してトリガーを一覧表示することはできません。このオペレーションではタグのフィルタリングがサポートされていないためです。
Tom に へのアクセスを許可するにはGetTriggers
、AWS Glue 管理者は、アクセス許可を 2 つのセクションに分割するポリシーを作成します。1 つのセクションでは、 GetTriggers
APIオペレーションを使用して Tom がすべてのトリガーにアクセスできます。2 番目のセクションでは、Tom に値 でタグ付けされたAPIオペレーションへのアクセスを許可しますTom
。このポリシーでは、Tom はトリガー t2
に対する GetTriggers
と GetTrigger
の両方のアクセスが許可されます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
タグを使用してアクセスを拒否する
リソースポリシーのもう 1 つの方法は、リソースへのアクセスを明示的に拒否することです。
重要
明示的な拒否ポリシーは、 などの複数のAPIオペレーションでは機能しませんGetTriggers
。
次のポリシー例では、すべての AWS Glue ジョブオペレーションは許可されます。ただし、2 番目の Effect
ステートメントでは、Team
キーと Special
値がタグ付けされたジョブへのアクセスが明示的に拒否されています。
管理者が次のポリシーをアイデンティティにアタッチすると、このアイデンティティは、Team
キーと Special
値がタグ付けされたジョブを除くすべてのジョブにアクセスできます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*" }, { "Effect": "Deny", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Special" } } } ] }
リストオペレーションとバッチAPIオペレーションでタグを使用する
リソースポリシーを記述する 3 番目の方法は、 List
APIオペレーションを使用してリソースへのアクセスを許可し、タグ値のリソースを一覧表示することです。次に、対応するBatch
APIオペレーションを使用して、特定のリソースの詳細へのアクセスを許可します。このアプローチでは、管理者は複数の GetCrawlers
、、GetDevEndpoints
GetJobs
、または GetTriggers
APIオペレーションへのアクセスを許可する必要はありません。代わりに、次のAPIオペレーションを使用してリソースを一覧表示できます。
-
ListCrawlers
-
ListDevEndpoints
-
ListJobs
-
ListTriggers
また、次のAPIオペレーションを使用して、個々のリソースの詳細を取得できます。
-
BatchGetCrawlers
-
BatchGetDevEndpoints
-
BatchGetJobs
-
BatchGetTriggers
管理者は、この方法を使用して、次の操作を実行できます。
-
クローラ、開発エンドポイント、ジョブ、およびトリガーにタグを追加します。
-
GetCrawlers
、、GetDevEndponts
、GetJobs
などのGet
APIオペレーションへのユーザーアクセスを拒否しますGetTriggers
。 -
ユーザーがアクセスできるタグ付けされたリソースを特定できるようにするには、
ListCrawlers
、、ListDevEndponts
ListJobs
、 などのList
APIオペレーションへのユーザーアクセスを許可しますListTriggers
。 -
へのユーザーアクセスを拒否する AWS Glue
TagResource
や APIsなどの のタグ付けUntagResource
。 -
BatchGetCrawlers
、、BatchGetDevEndponts
、 などのBatchGet
APIオペレーションを使用してBatchGetJobs
、リソースの詳細へのアクセスをユーザーに許可しますBatchGetTriggers
。
たとえば、ListCrawlers
オペレーションを呼び出すときに、ユーザー名と一致するタグ値を指定します。結果として、指定したタグ値と一致するクローラのリストが返されます。指定されたタグを持つ各クローラーの詳細を取得するには、BatchGetCrawlers
に名前のリストを提供します。
例えば、Tom が でタグ付けされたトリガーの詳細のみを取得できる場合Tom
、管理者は のトリガーにタグを追加Tom
し、すべてのユーザーに対して GetTriggers
API オペレーションへのアクセスを拒否し、 ListTriggers
と へのすべてのユーザーへのアクセスを許可できますBatchGetTriggers
。
以下は、AWS Glue 管理者は Tom に を付与します。ポリシーの最初のセクションでは、AWS Glue API の オペレーションは拒否されますGetTriggers
。ポリシーの 2 番目のセクションでは、ListTriggers
がすべてのリソースに対して許可されています。ただし、3 番目のセクションでは、Tom
でタグ付けされたリソースは BatchGetTriggers
アクセスでアクセスが許可されています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:ListTriggers" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:BatchGetTriggers" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }
前の例と同じトリガーを使用して、Tom はトリガー t2
にはアクセスできますが、トリガー t1
にはアクセスできません。次の例は、Tom が BatchGetTriggers
で t1
と t2
にアクセスしようとしたときの結果を示しています。
aws glue batch-get-triggers --trigger-names t2 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "Schedule": "cron(0 0/1 * * ? *)" } } aws glue batch-get-triggers --trigger-names t1 An error occurred (AccessDeniedException) when calling the BatchGetTriggers operation: No access to any requested resource.
次の例は、Tom が同じ BatchGetTriggers
呼び出しでトリガー t2
とトリガー t3
(存在しない) の両方にアクセスしようとしたときの結果を示しています。Tom は t2
をトリガーするアクセス権を持っており、それが存在するため、t2
のみが返されることに注意してください。Tom はトリガー t3
へのアクセスを許可されていますが、トリガー t3
は存在しないため、t3
はレスポンスの "TriggersNotFound":
[]
のリストで返されます。
aws glue batch-get-triggers --trigger-names t2 t3 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "TriggersNotFound": ["t3"], "Schedule": "cron(0 0/1 * * ? *)" } }
条件キーまたはコンテキストキーを使用して設定を制御する
ジョブを作成および更新する権限を付与する場合は、条件キーまたはコンテキストキーを使用できます。ここでは、キーについて説明します。
条件キーを使って設定を制御するポリシーを制御する
AWS Glue には、3 つのIAM条件キー glue:VpcIds
、glue:SubnetIds
、および がありますglue:SecurityGroupIds
。ジョブを作成および更新するアクセス許可を付与するときに、IAMポリシーで条件キーを使用できます。この設定を使用して、ジョブまたはセッションが目的のVPC環境外で実行されるように作成 (または更新) しないようにできます。VPC 設定情報はCreateJob
リクエストからの直接入力ではなく、 を指すジョブ「接続」フィールドから推測されます。AWS Glue 接続。
使用例
を作成する AWS Glue 希望するtraffic-monitored-connection「vpc-id1234 VpcId 」、 SubnetIdsおよび という名前のネットワークタイプ接続 SecurityGroupIds。
IAM ポリシーで CreateJob
および UpdateJob
アクションの条件キー条件を指定します。
{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }
同様のIAMポリシーを作成して、AWS Glue 接続情報を指定しないジョブ。
でのセッションの制限 VPCs
作成されたセッションを指定された 内で実行するように強制するにはVPC、glue:vpc-id が vpc-<123> と等しくない条件を使用してglue:CreateSession
、アクションに対するDeny
効果を追加してロールアクセス許可を制限します。例:
"Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "StringNotEquals" : {"glue:VpcIds" : ["vpc-123"]} }
また、 glue:vpc-id
が null である条件でglue:CreateSession
アクションに対するDeny
効果を追加VPCすることで、 内で作成されたセッションを実行するように強制することもできます。例:
{ "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "Null": {"glue:VpcIds": true} } }, { "Effect": "Allow", "Action": [ "glue:CreateSession" ], "Resource": ["*"] }
条件キーを使って設定を制御するポリシーを制御する
AWS Glue は、各ロールセッションにコンテキストキー (glue:CredentialIssuingService= glue.amazonaws.com
) を提供します。AWS Glue は、ジョブとデベロッパーエンドポイントで を利用できるようにします。これにより、 によって実行されたアクションのセキュリティコントロールを実装できます。AWS Glue スクリプト。AWS Glue は、各ロールセッションに別のコンテキストキー (glue:RoleAssumedBy=glue.amazonaws.com
) を提供します。AWS Glue は、お客様に代わって別の AWS サービス (ジョブ/開発エンドポイントではなく、AWS Glue サービス)。
使用例
IAM ポリシーで条件付きアクセス許可を指定し、 で使用するロールにアタッチします。AWS Glue ジョブ。これにより、ロールセッションが AWS Glue ジョブランタイム環境。
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }
ID によるデータプレビューセッションの作成を拒否する
このセクションでは、アイデンティティにデータプレビューセッションを作成する機能を拒否するために使用されるIAMポリシーの例を示します。このポリシーを ID にアタッチします。ID は、データプレビューセッションの実行中に使用するロールとは別のものです。
{ "Sid": "DatapreviewDeny", "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Resource": [ "arn:aws:glue:*:*:session/glue-studio-datapreview*" ] }