ステップ 3: AWS Glue にアクセスするユーザーまたはグループにポリシーをアタッチする
管理者は、AWS Glue コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、すべてのユーザー、グループ、ロールにアクセス許可を割り当てる必要があります。これらのアクセス許可は、AWS Identity and Access Management (IAM) を使用しながらポリシーを介して提供します。このステップでは、ユーザーまたはグループにアクセス許可を割り当てる方法について説明します。
このステップを完了すると、ユーザーまたはグループに次のポリシーがアタッチされます。
-
AWS 管理ポリシー [
AWSGlueConsoleFullAccess
]、またはカスタムポリシー [GlueConsoleAccessPolicy]。 -
AWSGlueConsoleSageMakerNotebookFullAccess
-
CloudWatchLogsReadOnlyAccess
-
AWSCloudFormationReadOnlyAccess
-
AmazonAthenaFullAccess
インラインポリシーをアタッチしてこれをユーザーまたはグループに埋め込むには
AWS Glue コンソールにアクセスするユーザーまたはグループに、AWS マネージドポリシーまたはインラインポリシーをアタッチすることができます。このポリシーで指定されているリソースの中には、AWS Glue で (Amazon S3 バケット、Amazon S3 ETL スクリプト、CloudWatch Logs、AWS CloudFormation、および Amazon EC2 リソース用として) 使用されるデフォルトの名前があります。簡素化のため AWS Glue のデフォルトでは、aws-glue-*
のプレフィックスが付いた Amazon S3 オブジェクトをアカウント内のバケットに書き込みます。
注記
AWS 管理ポリシー AWSGlueConsoleFullAccess
を使用する場合は、このステップをスキップできます。
重要
AWS Glue には、ユーザーの代理操作を実行するために使用されるロールを引き受けるアクセス権限が必要です。そのためには、iam:PassRole
アクセス権限を AWS Glue ユーザーまたはグループに追加します。このポリシーは、AWS Glue サービスロールの AWSGlueServiceRole
で始まるロール、およびノートブックサーバーの作成に必要なロール AWSGlueServiceNotebookRole
にアクセス権限を与えます。また、命名規則に従った iam:PassRole
アクセス権限の独自のポリシーを作成することもできます。
セキュリティのベストプラクティスに従って、ポリシーを強化して、Amazon S3 バケットおよび Amazon CloudWatch ロググループへのアクセスをさらに制限することが推奨されます。Amazon S3 ポリシーの例については、「Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket
このステップでは、AWSGlueConsoleFullAccess
に似たポリシーを作成します。AWSGlueConsoleFullAccess
の最新バージョンは IAM コンソールで取得できます。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Users] (ユーザー) または [User groups] (ユーザーグループ) を選択します。
-
一覧から、ポリシーを埋め込むユーザーまたはグループの名前を選択します。
-
[Permissions (アクセス許可)] タブを選択して、必要であれば [Permissions policies (アクセス許可ポリシー)] セクションを展開します。
-
[Add Inline policy] (インラインポリシーの追加) リンクを選択します。
-
[ポリシーの作成] 画面で、JSON 編集のためのタブに移動します。次の JSON ステートメントを使用してポリシードキュメントを作成して、[ポリシーの確認] を選択します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*", "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups", "iam:ListRoles", "iam:ListUsers", "iam:ListGroups", "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", "rds:DescribeDBClusters", "rds:DescribeDBSubnetGroups", "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-*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPublicAccessBlock" ], "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/*" ] }, { "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" ] } } } ] }
次の表は、このポリシーによって付与されたアクセス権限を示しています。
Action リソース 説明 "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", "s3:PutBucketPublicAccessBlock"
"arn:aws:s3::: aws-glue-*"
ETL スクリプトやノートブックサーバーのロケーションなどのオブジェクトを格納する際に、アカウントで Amazon S3 バケットを作成することを許可します。
命名規則: 名前に aws-glue- のプレフィックスが付いている Amazon S3 バケットにアクセス許可を付与します。
AWS Glue による、パブリックアクセスをブロックするバケットの作成を有効化します。
"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/*"
開発エンドポイントとノートブックサーバーの実行を許可します。
"iam:PassRole"
"arn:aws:iam::*:role/ AWSGlueServiceRole*"
AWSGlueServiceRole
で始まるロールに対するPassRole
の許可を、AWS Glue が引き受けられるようにします。"iam:PassRole"
"arn:aws:iam::*:role/ AWSGlueServiceNotebookRole*"
AWSGlueServiceNotebookRole
で始まるロールに関するアクセス許可PassRole
を引き受けることを、Amazon EC2 に 許可します。"iam:PassRole"
"arn:aws:iam::*:role/service-role/ AWSGlueServiceRole*"
service-role/AWSGlueServiceRole
で始まるロールに対するPassRole
の許可を、AWS Glue が引き受けられるようにします。 -
-
[ポリシーの確認] セクションで、ポリシー名を入力します(例: GlueConsoleAccessPolicy)。ポリシーが完成したら、[Create policy (ポリシーの作成)] を選択します。画面上部の赤いボックスにエラーが表示されていないことを確認します。報告されたエラーがあれば、修正します。
注記
[Use autoformatting (自動フォーマットを使用する)] を選択した場合は、ポリシーを開いたときおよび [Validate Policy (ポリシーの検証)] を選択したときに毎回、ポリシーが再フォーマットされます。
AWSGlueConsoleFullAccess 管理ポリシーをアタッチするには
AWSGlueConsoleFullAccess
ポリシーをアタッチすると、AWS Glue コンソールユーザーが必要とするアクセス許可を提供できます。
注記
AWS Glue コンソールアクセス用に独自のポリシーを作成した場合は、このステップをスキップできます。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、[AWSGlueConsoleFullAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[Policy actions] を選択して、[Attach] を選択します。
-
ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。
AWSGlueConsoleSageMakerNotebookFullAccess
管理ポリシーをアタッチするには
AWSGlueConsoleSageMakerNotebookFullAccess
ポリシーをユーザーにアタッチすることで、AWS Glue コンソールで作成した SageMaker AI ノートブックを管理できます。AWS Glue コンソールのその他の必要なアクセス許可に加え、このポリシーは SageMaker AI ノートブックの管理に必要なリソースへのアクセス許可を付与します。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、[AWSGlueConsoleSageMakerNotebookFullAccess] の横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[Policy actions] を選択して、[Attach] を選択します。
-
ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。
CloudWatchLogsReadOnlyAccess 管理ポリシーをアタッチするには
[CloudWatchLogsReadOnlyAccess] ポリシーをユーザーにアタッチして、CloudWatch Logs コンソールで AWS Glue によって作成されたログを表示できます。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、[CloudWatchLogsReadOnlyAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[Policy actions] を選択して、[Attach] を選択します。
-
ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。
AWSCloudFormationReadOnlyAccess 管理ポリシーをアタッチするには
[AWSCloudFormationReadOnlyAccess] ポリシーをユーザーにアタッチして、AWS CloudFormation コンソールで AWS Glue が使用する AWS CloudFormation スタックを表示できます。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、[AWSCloudFormationReadOnlyAccess] ポリシーの横にあるチェックボックスをオンにします。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[Policy actions] を選択して、[Attach] を選択します。
-
ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。
AmazonAthenaFullAccess 管理ポリシーをアタッチするには
[AmazonAthenaFullAccess] ポリシーをユーザーにアタッチすると、Amazon S3 データを Athena コンソールで表示できます。
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、[AmazonAthenaFullAccess] ポリシーの横にあるチェックボックスを選択します。[Filter (フィルター)] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[Policy actions] を選択して、[Attach] を選択します。
-
ポリシーをアタッチするユーザーを選択します。[Filter] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[ポリシーのアタッチ] を選択します。