

# ステップ 3: AWS Glue にアクセスするユーザーまたはグループにポリシーをアタッチする
<a name="attach-policy-iam-user"></a>

管理者は、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、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](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)」を参照してください。

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

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

1. ナビゲーションペインで、**[Users]** (ユーザー) または **[User groups]** (ユーザーグループ) を選択します。

1. 一覧から、ポリシーを埋め込むユーザーまたはグループの名前を選択します。

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

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

1. [**ポリシーの作成**] 画面で、JSON 編集のためのタブに移動します。次の 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"
             ]
           }
         }
       }
     ]
   }
   ```

------

   次の表は、このポリシーによって付与されたアクセス権限を示しています。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/attach-policy-iam-user.html)

1. [**ポリシーの確認**] セクションで、ポリシー名を入力します（例: **GlueConsoleAccessPolicy**）。ポリシーが完成したら、[**Create policy (ポリシーの作成)**] を選択します。画面上部の赤いボックスにエラーが表示されていないことを確認します。報告されたエラーがあれば、修正します。
**注記**  
[**Use autoformatting (自動フォーマットを使用する)**] を選択した場合は、ポリシーを開いたときおよび [**Validate Policy (ポリシーの検証)**] を選択したときに毎回、ポリシーが再フォーマットされます。

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

`AWSGlueConsoleFullAccess` ポリシーをアタッチすると、AWS Glue コンソールユーザーが必要とするアクセス許可を提供できます。
**注記**  
AWS Glue コンソールアクセス用に独自のポリシーを作成した場合は、このステップをスキップできます。

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

1. ナビゲーションペインで、**[ポリシー]** を選択します。

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

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

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

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

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

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

1. ナビゲーションペインで、**[ポリシー]** を選択します。

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

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

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

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

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

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

1. ナビゲーションペインで、**[ポリシー]** を選択します。

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

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

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

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

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

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

1. ナビゲーションペインで、**[ポリシー]** を選択します。

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

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

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

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

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

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

1. ナビゲーションペインで、**[ポリシー]** を選択します。

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

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

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