AWS Glue
開発者ガイド

ステップ 3: AWS Glue にアクセスする IAM ユーザーにポリシーをアタッチする

AWS Glue コンソールまたは AWS Command Line Interface (AWS CLI) にサインインする IAM ユーザーは、特定のリソースへのアクセス権限が必要です。ポリシーを通して AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。

このステップを完了すると、IAM ユーザーに次のポリシーがアタッチされます。

  • AWS 管理ポリシー [AWSGlueConsoleFullAccess] またはカスタムポリシー [GlueConsoleAccessPolicy]。

  • AWSGlueConsoleSageMakerNotebookFullAccess

  • [CloudWatchLogsReadOnlyAccess]

  • [AWSCloudFormationReadOnlyAccess]

  • [AmazonAthenaFullAccess]

インラインポリシーをアタッチして IAM ユーザーに埋め込むには

IAM ユーザーに AWS 管理ポリシーまたはインラインポリシーをアタッチして、AWS Glue コンソールにアクセスします。このポリシーで指定されているリソースの中には、Amazon S3 バケット、Amazon S3 ETL スクリプト、CloudWatch Logs、AWS CloudFormation、および Amazon EC2 リソース用の AWS Glue で使用されるデフォルトの名前があります。分かりやすいように、AWS Glue はデフォルトで aws-glue-* のプレフィックスが付いた Amazon S3 オブジェクトをアカウント内のバケットに書き込みます。

注記

AWS 管理ポリシー AWSGlueConsoleFullAccess を使用する場合は、このステップをスキップできます。

重要

AWS Glue には、ユーザーの代理操作を実行するために使用されるロールを引き受けるアクセス権限が必要です。これを実現するには、iam:PassRole アクセス権限を AWS Glue ユーザーに追加します。 このポリシーは、AWS Glue サービスロールの AWSGlueServiceRole で始まるロール、およびノートブックサーバーの作成に必要なロール AWSGlueServiceNotebookRole にアクセス権限を与えます。また、命名規則に従った iam:PassRole アクセス権限の独自のポリシーを作成することもできます。

このステップでは、AWSGlueConsoleFullAccess に似たポリシーを作成します。AWSGlueConsoleFullAccess の最新バージョンは IAM コンソールにあります。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで [Users] を選択します。

  3. 一覧で、ポリシーを埋め込むユーザーの名前を選択します。

  4. [Permissions (アクセス許可)] タブを選択して、必要であれば [Permissions policies (アクセス許可ポリシー)] セクションを展開します。

  5. [Add Inline policy] (インラインポリシーの追加) リンクを選択します。

  6. [ポリシーの作成] 画面で、JSON 編集のためのタブに移動します。次の JSON ステートメントを使用してポリシードキュメントを作成して、[ポリシーの確認] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*", "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups", "iam:ListRoles", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcEndpoints", "ec2:DescribeRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeInstances", "rds:DescribeDBInstances", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation", "cloudformation:DescribeStacks", "cloudformation:GetTemplateSummary", "dynamodb:ListTables", "kms:ListAliases", "kms:DescribeKey", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-glue-*/*", "arn:aws:s3:::*/*aws-glue-*/*", "arn:aws:s3:::aws-glue-*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::aws-glue-*" ] }, { "Effect": "Allow", "Action": [ "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:/aws-glue/*" ] }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "arn:aws:cloudformation:*:*:stack/aws-glue*/*" }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:image/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-id": "arn:aws:cloudformation:*:*:stack/aws-glue-*/*" }, "StringEquals": { "ec2:ResourceTag/aws:cloudformation:logical-id": "ZeppelinInstance" } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSGlueServiceRole*", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSGlueServiceNotebookRole*", "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/service-role/AWSGlueServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } } ] }

    次の表は、このポリシーによって付与されたアクセス権限を示しています。

    アクション リソース 説明

    "glue:*"

    "*"

    すべての AWS Glue API オペレーションを実行する権限を許可します。

    "glue:*" アクションを使用せずに以前にポリシーを作成したことがある場合は、ポリシーに次の個別のアクセス許可を追加する必要があります。

    • "glue:ListCrawlers"

    • "glue:BatchGetCrawlers"

    • "glue:ListTriggers"

    • "glue:BatchGetTriggers"

    • "glue:ListDevEndpoints"

    • "glue:BatchGetDevEndpoints"

    • "glue:ListJobs"

    • "glue:BatchGetJobs"

    "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups"

    "*"

    Amazon Redshift への接続を作成できます。

    "iam:ListRoles", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies"

    "*"

    クローラ、ジョブ、開発エンドポイント、ノートブックサーバーを使用する場合の IAM ロールの一覧表示を許可します。

    "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcEndpoints", "ec2:DescribeRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeInstances"

    "*"

    ジョブ、クローラ、開発エンドポイントの実行時に、VPC などの Amazon EC2 ネットワーク項目の設定を許可します。

    "rds:DescribeDBInstances"

    "*"

    Amazon RDS への接続を作成できます。

    "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation"

    "*"

    クローラ、ジョブ、開発エンドポイント、ノートブックサーバーを使用する場合の Amazon S3 バケットの一覧表示を許可します。

    "dynamodb:ListTables"

    "*"

    DynamoDB テーブルのリスティングを許可します。

    "kms:ListAliases", "kms:DescribeKey"

    "*"

    KMS キーを使用できます。

    "cloudwatch:GetMetricData", "cloudwatch:ListDashboards"

    "*"

    CloudWatch メトリクスを使用できます。

    "s3:GetObject", "s3:PutObject"

    "arn:aws:s3::: aws-glue-*/*", "arn:aws:s3::: */*aws-glue-*/*", "arn:aws:s3::: aws-glue-*"

    ETL スクリプトやノートブックサーバーのロケーションなどのオブジェクトを格納する際に、Amazon S3 オブジェクトの取得と配置をアカウントに許可します。

    命名規則: 名前に aws-glue- のプレフィックスが付いている Amazon S3 バケットまたはフォルダにアクセス権限を与えます。

    "tag:GetResources"

    "*"

    AWS タグの取得を許可します。

    "s3:CreateBucket"

    "arn:aws:s3::: aws-glue-*"

    ETL スクリプトやノートブックサーバーのロケーションなどのオブジェクトを格納する際に、Amazon S3 バケットの作成をアカウントに許可します。

    命名規則: 名前に [aws-glue-] のプレフィックスが付いている Amazon S3 バケットにアクセス権限を与えます。

    "logs:GetLogEvents"

    "arn:aws:logs:*:*: /aws-glue/*"

    CloudWatch Logs の取得を許可します。

    命名規則: AWS Glue は名前が [aws-glue-] で始まるロググループにログを書き込みます。

    "cloudformation:CreateStack", "cloudformation:DeleteStack"

    "arn:aws: cloudformation:*:*:stack/ aws-glue*/*"

    ノートブックサーバーで作業するときに AWS CloudFormation スタックの管理を許可します。

    命名規則: AWS Glue は名前が [aws-glue] で始まるスタックを作成します。

    "ec2:RunInstances"

    "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:image/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:volume/*"

    開発エンドポイントとノートブックサーバーの実行を許可します。

    "ec2:TerminateInstances", "ec2:CreateTags", "ec2:DeleteTags"

    "arn:aws:ec2:*:*:instance/*"

    開発エンドポイントとノートブックサーバーの操作を許可します。

    命名規則: AWS Glue AWS CloudFormation スタックの名前はプレフィックスとして aws-glue-、および logical-id ZeppelinInstance を使用します。

    "iam:PassRole"

    "arn:aws:iam::*:role/ AWSGlueServiceRole*"

    AWS Glue が [AWSGlueServiceRole] で始まるロールに対して PassRole アクセス権限を引き受けることを許可します。

    "iam:PassRole"

    "arn:aws:iam::*:role/ AWSGlueServiceNotebookRole*"

    Amazon EC2 が [AWSGlueServiceNotebookRole] で始まるロールに対して PassRole アクセス権限を引き受けることを許可します。

    "iam:PassRole"

    "arn:aws:iam::*:role/service-role/ AWSGlueServiceRole*"

    AWS Glue が [service-role/AWSGlueServiceRole] で始まるロールに対して PassRole アクセス権限を引き受けることを許可します。

  7. [ポリシーの確認] セクションで、ポリシー名を入力します (例: GlueConsoleAccessPolicy)。ポリシーが完成したら、[ポリシーの作成]を選択します。画面上部の赤いボックスにエラーが表示されていないことを確認します。報告されたエラーがあれば、修正します。

    注記

    [Use autoformatting (自動フォーマットを使用する)] を選択した場合は、ポリシーを開いたときおよび [Validate Policy (ポリシーの検証)] を選択したときに毎回、ポリシーが再フォーマットされます。

AWSGlueConsoleFullAccess 管理ポリシーをアタッチするには

[AWSGlueConsoleFullAccess] ポリシーを添付して、AWS Glue コンソールユーザーが必要とするアクセス権限を提供できます。

注記

AWS Glue コンソールアクセス用に独自のポリシーを作成した場合は、このステップをスキップできます。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択します。

  3. ポリシーのリストで、[AWSGlueConsoleFullAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [Policy actions] を選択して、[Attach] を選択します。

  5. ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。

AWSGlueConsoleSageMakerNotebookFullAccess 管理ポリシーをアタッチするには

[AWSGlueConsoleSageMakerNotebookFullAccess] ポリシーをユーザーにアタッチして、AWS Glue コンソールで作成した Amazon SageMaker ノートブックを管理できます。その他の必要な AWS Glue コンソールアクセス許可に加えて、このポリシーは Amazon SageMaker ノートブックの管理に必要なリソースへのアクセス許可を付与します。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択します。

  3. ポリシーのリストで、[AWSGlueConsoleSageMakerNotebookFullAccess] の横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [Policy actions] を選択して、[Attach] を選択します。

  5. ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。

CloudWatchLogsReadOnlyAccess 管理ポリシーをアタッチするには

[CloudWatchLogsReadOnlyAccess] ポリシーをユーザーにアタッチして、CloudWatch Logs コンソールで AWS Glue によって作成されたログを表示できます。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択します。

  3. ポリシーのリストで、[CloudWatchLogsReadOnlyAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [Policy actions] を選択して、[Attach] を選択します。

  5. ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。

AWSCloudFormationReadOnlyAccess 管理ポリシーをアタッチするには

[AWSCloudFormationReadOnlyAccess] ポリシーをユーザーにアタッチして、AWS CloudFormation コンソールで AWS Glue が使用する AWS CloudFormation スタックを表示できます。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択します。

  3. ポリシーのリストで、[AWSCloudFormationReadOnlyAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [Policy actions] を選択して、[Attach] を選択します。

  5. ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。

AmazonAthenaFullAccess 管理ポリシーをアタッチするには

[AmazonAthenaFullAccess] ポリシーをユーザーにアタッチして、Amazon S3 データを Athena コンソールで表示できます。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択します。

  3. ポリシーのリストで、[AmazonAthenaFullAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

  4. [Policy actions] を選択して、[Attach] を選択します。

  5. ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。