

# AWS Glue の IAM アクセス許可の設定
<a name="configure-iam-for-glue"></a>

AWS Identity and Access Management (IAM) を使用して、リソースにアクセスするために AWS Glue が使用するポリシーとロールを定義します。次の手順では、AWS Glue のアクセス許可を設定するためのさまざまなオプションについて説明します。ビジネスニーズに応じて、リソースへのアクセスを追加または削減できます。

**注記**  
オプションを設定せず、基本的な IAM アクセス許可で AWS Glue の使用を開始する場合は、「[AWS Glue 用の IAM アクセス許可のセットアップ](set-up-iam.md)」を参照してください。

1. [AWS Glue サービスの IAM ポリシーを作成する](create-service-policy.md): AWS Glue リソースへのアクセスを許可するサービスポリシーを作成します。

1. [AWS Glue の IAM ロールを作成する](create-an-iam-role.md): IAM ロールを作成して、AWS Glue が使用する Amazon Simple Storage Service (Amazon S3) リソース用の AWS Glue サービスポリシーおよびポリシーをアタッチします。

1. [AWS Glue にアクセスするユーザーまたはグループにポリシーをアタッチする](attach-policy-iam-user.md): AWS Glue コンソールにサインインするユーザーまたはグループにポリシーをアタッチします。

1. [ノートブックの IAM ポリシーを作成する](create-notebook-policy.md): 開発エンドポイント上のノートブックサーバーの作成に使用する、ノートブックサーバーポリシーを作成します。

1. [ノートブックの IAM ロールを作成する](create-an-iam-role-notebook.md): IAM ロールを作成し、ノートブックサーバーポリシーをアタッチします。

1. [Amazon SageMaker AI ノートブックの IAM ポリシーを作成する](create-sagemaker-notebook-policy.md): 開発エンドポイント上に Amazon SageMaker AI ノートブックを作成する際に使用する IAM ポリシーを作成します。

1. [Amazon SageMaker AI ノートブックの IAM ロールを作成する](create-an-iam-role-sagemaker-notebook.md): IAM ロールを作成し、開発エンドポイント上に Amazon SageMaker AI ノートブックを作成する際のアクセス許可を付与するポリシーをアタッチします。

# ステップ 1: AWS Glue サービスの IAM ポリシーを作成する
<a name="create-service-policy"></a>

Amazon S3 のオブジェクトにアクセスするなど、別の AWS リソース上のデータにアクセスするオペレーションの場合、AWS Glue には、ユーザーの代わりにリソースにアクセスするためのアクセス許可が必要です。AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。

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

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

**AWS Glue の IAM ポリシーを作成するには**

このポリシーは、AWS Glue がこのポリシーを使用してロールを引き受ける際に必要となる、アカウント内のリソースを管理する Amazon S3 アクションの一部を許可します。このポリシーで指定されているリソースの一部は、Amazon S3 バケット、Amazon S3 ETL スクリプト、CloudWatch Logs、および Amazon EC2 リソースのために AWS Glue で使用される、デフォルト名を参照しています。簡素化のため AWS Glue のデフォルトでは、`aws-glue-*` のプレフィックスが付いた Amazon S3 オブジェクトをアカウント内のバケットに書き込みます。

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

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

1. **[ポリシーを作成]** を選択します。

1. [**ポリシーの作成**] 画面で、JSON 編集のためのタブに移動します。次の JSON ステートメントを使用してポリシードキュメントを作成して、[**ポリシーの確認**] を選択します。
**注記**  
Amazon S3 リソースに必要なアクセス許可を追加します。アクセスポリシーのリソースセクションを必要なリソースだけに絞り込みたい場合があるかもしれません。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "glue:*",
           "s3:GetBucketLocation",
           "s3:ListBucket",
           "s3:ListAllMyBuckets",
           "s3:GetBucketAcl",
           "ec2:DescribeVpcEndpoints",
           "ec2:DescribeRouteTables",
           "ec2:CreateNetworkInterface",
           "ec2:DeleteNetworkInterface",
           "ec2:DescribeNetworkInterfaces",
           "ec2:DescribeSecurityGroups",
           "ec2:DescribeSubnets",
           "ec2:DescribeVpcAttribute",
           "iam:ListRolePolicies",
           "iam:GetRole",
           "iam:GetRolePolicy",
           "cloudwatch:PutMetricData"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:PutBucketPublicAccessBlock"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue-*/*",
           "arn:aws:s3:::*/*aws-glue-*/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": [
           "arn:aws:s3:::crawler-public*",
           "arn:aws:s3:::aws-glue-*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:*:*:log-group:/aws-glue/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags",
           "ec2:DeleteTags"
         ],
         "Condition": {
           "ForAllValues:StringEquals": {
             "aws:TagKeys": [
               "aws-glue-service-resource"
             ]
           }
         },
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:security-group/*",
           "arn:aws:ec2:*:*:instance/*"
         ]
       }
     ]
   }
   ```

------

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

1. [**Review Policy (ポリシーの確認)**] 画面で、[**Policy Name (ポリシー名)**]（[**GlueServiceRolePolicy**] など）を入力します。オプションの説明を入力し、ポリシーが適切であることを確認したら、[**Create policy**] を選択します。

# ステップ 2: AWS Glue 用の IAM ロールを作成する
<a name="create-an-iam-role"></a>

ユーザーに代わり他のサービスを呼び出す際に AWS Glue が引き受けることができる、IAM ロールのアクセス許可を付与する必要があります。これには、AWS Glue で使用するすべてのソース、ターゲット、スクリプト、および一時ディレクトリでの Amazon S3 へのアクセスが含まれます。クローラ、ジョブ、および開発エンドポイントによって許可が必要です。

AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。AWS Glue に渡す IAM ロールにポリシーを追加します。

****ジョブエディタで IAM ロールを作成するには****

1. AWS Glue コンソールでジョブを作成するときは、ロールセクションを見つけます。

1. [**Create new role (新しいロールの選択)**] を選択します。

1. インラインロール作成フォームが開き、次のことが可能になります：
   + **ロール名**を指定します。例: `AWSGlueServiceRoleDefault`。
   + 管理ポリシー `AWSGlueServiceRole` が自動的に選択されます。
   + 信頼ポリシーを確認してロールを引き受けます。
   + メタデータのオプションのタグを追加します。

1. [**Create role （ロールの作成）**] を選択します。

1. 新しく作成されたロールがジョブに自動的に選択されます。

または、IAM コンソールを使用してロールを作成できます。

****IAM コンソールを使用してAWS Glue IAM ロールを作成するには****

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

1. 左のナビゲーションペインで、**[Roles (ロール)]** を選択してください。

1. [**Create role （ロールの作成）**] を選択します。

1.  信頼されたエンティティの種類として **[AWS サービス]** を選択します。次に、サービスまたはユースケースに対して **[AWS Glue]** を検索して選択します。[**次へ**] を選択します。

1. **[許可の追加]** のページで、必要な許可を含むポリシーを選択します。例えば、一般的な AWS Glue 許可の AWS マネージドポリシー `AWSGlueServiceRole` や Amazon S3 リソースにアクセスするための AWS マネージドポリシー **[AmazonS3FullAccess]** などがあります。次に、**[次へ]** を選択します。
**注記**  
Amazon S3 のソースとターゲットに対するアクセス許可を、このロールのポリシーの 1 つにより付与してください。独自のポリシーを、特定の Amazon S3 リソースにアクセスするために指定します。データソースには、`s3:ListBucket` および `s3:GetObject` アクセス許可が必要です。データターゲットには、`s3:ListBucket`、`s3:PutObject`、`s3:DeleteObject` アクセス許可が必要です。リソースの Amazon S3 ポリシーの作成については、「[Specifying Resources in a Policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)」を参照してください。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/)」を参照してください。  
SSE-KMS で暗号化された Amazon S3 のソースとターゲットにアクセスする予定がある場合は、AWS Glue のクローラ、ジョブ、開発エンドポイントに、データを復号化するためのポリシーをアタッチしてください。詳細については、「[Protecting Data Using Server-Side Encryption with AWS KMS-Managed Keys (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)」を参照してください。  
以下に例を示します。  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

1.  ロールに名前を付けて説明 (オプション) を追加したら、信頼ポリシーおよび許可を確認します。[**Role name (ロール名)**] に、`AWSGlueServiceRoleDefault` などのロール名を入力します。コンソールユーザーからサービスにロールを渡すには、名前に文字列 `AWSGlueServiceRole` のプレフィックスが付けられたロールを作成します。`AWSGlueServiceRole` が提供するポリシーでは、IAM サービスロールが AWS Glue で始まることを想定しています。それ以外の場合は、ユーザーにポリシーを追加して、IAM ロールの `iam:PassRole` アクセス許可をユーザーの命名規則に一致させる必要があります。**[Create Role （ロールの作成）]** を選択します。
**注記**  
ロールを使用してノートブックを作成すると、そのロールがインタラクティブセッションに渡され、その両方で同じロールを使用できるようになります。このように、`iam:PassRole` のアクセス許可がロールのポリシーの一部として必要です。  
次の例を使用して、ロール用の新しいポリシーを作成します。アカウント番号とロール名を自分のものに置き換えます。  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:PassRole",
         "Resource": "arn:aws:iam::090000000210:role/<role_name>"
       }
     ]
   }
   ```

1.  ロールにタグを追加します (オプション)。タグは AWS リソースに追加できるキーと値のペアであり、リソースの識別、整理、検索するために役立ちます。続いて、**[Create role （ロールの作成）]** を選択します。

# ステップ 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**] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[**ポリシーのアタッチ**] を選択します。

# ステップ 4: ノートブックサービス用に IAM ポリシーを作成する
<a name="create-notebook-policy"></a>

開発エンドポイントでノートブックを使用する予定の場合は、ノートブックサーバーの作成時にアクセス許可を指定する必要があります。AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。

このポリシーは、AWS Glue がこのポリシーを使用してロールを引き受ける際に必要となる、アカウント内のリソースを管理する Amazon S3 アクションの一部を許可します。このポリシーで指定されているリソースの一部は、 AWS Glue で (Amazon S3 バケット、Amazon S3 ETL スクリプト、および Amazon EC2 リソース用として) 使用されるデフォルトの名前を参照しています。分かりやすさのために、AWS Glue のデフォルトでは一部の Amazon S3 オブジェクトを、アカウント内の `aws-glue-*` のプレフィックスが付いたバケットに書き込んでいます。

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

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

**ノートブック用に IAM ポリシーを作成するには**

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

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

1. **[ポリシーを作成]** を選択します。

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

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "glue:CreateDatabase",
           "glue:CreatePartition",
           "glue:CreateTable",
           "glue:DeleteDatabase",
           "glue:DeletePartition",
           "glue:DeleteTable",
           "glue:GetDatabase",
           "glue:GetDatabases",
           "glue:GetPartition",
           "glue:GetPartitions",
           "glue:GetTable",
           "glue:GetTableVersions",
           "glue:GetTables",
           "glue:UpdateDatabase",
           "glue:UpdatePartition",
           "glue:UpdateTable",
           "glue:GetJobBookmark",
           "glue:ResetJobBookmark",
           "glue:CreateConnection",
           "glue:CreateJob",
           "glue:DeleteConnection",
           "glue:DeleteJob",
           "glue:GetConnection",
           "glue:GetConnections",
           "glue:GetDevEndpoint",
           "glue:GetDevEndpoints",
           "glue:GetJob",
           "glue:GetJobs",
           "glue:UpdateJob",
           "glue:BatchDeleteConnection",
           "glue:UpdateConnection",
           "glue:GetUserDefinedFunction",
           "glue:UpdateUserDefinedFunction",
           "glue:GetUserDefinedFunctions",
           "glue:DeleteUserDefinedFunction",
           "glue:CreateUserDefinedFunction",
           "glue:BatchGetPartition",
           "glue:BatchDeletePartition",
           "glue:BatchCreatePartition",
           "glue:BatchDeleteTable",
           "glue:UpdateDevEndpoint",
           "s3:GetBucketLocation",
           "s3:ListBucket",
           "s3:ListAllMyBuckets",
           "s3:GetBucketAcl"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": [
           "arn:aws:s3:::crawler-public*",
           "arn:aws:s3:::aws-glue*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::aws-glue*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags",
           "ec2:DeleteTags"
         ],
         "Condition": {
           "ForAllValues:StringEquals": {
             "aws:TagKeys": [
               "aws-glue-service-resource"
             ]
           }
         },
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:security-group/*",
           "arn:aws:ec2:*:*:instance/*"
         ]
       }
     ]
   }
   ```

------

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

1. [**Review Policy (ポリシーの確認)**] 画面で、[**Policy Name (ポリシー名)**]（[**GlueServiceNotebookPolicyDefault**] など）を入力します。オプションの説明を入力し、ポリシーが適切であることを確認したら、[**Create policy**] を選択します。

# ステップ 5: ノートブックサービス用に IAM ロールを作成する
<a name="create-an-iam-role-notebook"></a>

開発エンドポイントでノートブックを使用する予定がある場合は、IAM ロールのアクセス許可を付与する必要があります。AWS Identity and Access Management IAM を使用しながら IAM ロールを介して、これらのアクセス許可を付与できます。

**注記**  
IAM コンソールを使用して IAM ロールを作成すると、コンソールによりインスタンスプロファイルが自動的に作成され、対応するロールと同じ名前が付けられます。

**ノートブック用に IAM ロールを作成するには**

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

1. 左のナビゲーションペインで、**[Roles (ロール)]** を選択してください。

1. **[Create role (ロールの作成)]** を選択してください。

1. ロールタイプについては、[**AWS Service**] (サービス) を選択した後に [**EC2**] を見つけて選択し、ユースケースで [**EC2**] を選択した後、[**Next: Permissions**] (次へ: アクセス許可) をクリックします。

1. [**アクセス許可ポリシーを添付する**] のページで、必要なアクセス許可を含むポリシーを選択します。例えば、一般的な AWS Glue 許可には **AWSGlueServiceNotebookRole**、Amazon S3 リソースへのアクセスには AWS マネージドポリシー **AmazonS3FullAccess** を選択します。続いて、**[Next: Review (次へ: レビュー)]** を選択します。
**注記**  
Amazon S3 のソースとターゲットに対するアクセス許可を、このロールのポリシーの 1 つにより付与してください。また、ノートブックサーバーの作成時にノートブックを保管する場所へのフルアクセスがポリシーで許可されていることを確認してください。独自のポリシーを、特定の Amazon S3 リソースにアクセスするために指定します。リソースの Amazon S3 ポリシーの作成については、「[Specifying Resources in a Policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)」を参照してください。  
SSE-KMS で暗号化された Amazon S3 のソースとターゲットにアクセスする予定がある場合は、ノートブックがデータを復号化できるようにポリシーをアタッチします。詳細については、「[Protecting Data Using Server-Side Encryption with AWS KMS-Managed Keys (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)」を参照してください。  
以下に例を示します。  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

1. **ロール名** に、ロールの名前を入力します。コンソールユーザーからノートブックサーバーにロールを渡すには、名前に文字列 `AWSGlueServiceNotebookRole` のプレフィックスが付けられたロールを作成します。AWS Glue が提供するポリシーでは、IAM サービスロールが `AWSGlueServiceNotebookRole` で始まることを想定しています。それ以外の場合は、ユーザーにポリシーを追加して、IAM ロールに対する `iam:PassRole` の許可を命名規則に一致させる必要があります。たとえば、`AWSGlueServiceNotebookRoleDefault` と入力します。次に、**[Create role (ロールの作成)]** を選択します。

# ステップ 6: SageMaker AI ノートブック用の IAM ポリシーを作成する
<a name="create-sagemaker-notebook-policy"></a>

開発エンドポイントで SageMaker AI ノートブックを使用する予定の場合は、ノートブックの作成時にアクセス許可を指定する必要があります。AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。

**SageMaker AI ノートブック用の IAM ポリシーを作成するには**

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

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

1. **[ポリシーを作成]** を選択します。

1. [**Create Policy**] ページで、JSON を編集するタブに移動します。次の JSON ステートメントを使用して、ポリシードキュメントを作成します。環境の *bucket-name*、*region-code*、*account-id* を編集します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:ListBucket"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           },
           {
               "Action": [
                   "s3:GetObject"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket*"
               ]
           },
           {
               "Action": [
                   "logs:CreateLogStream",
                   "logs:DescribeLogStreams",
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/*",
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/*:log-stream:aws-glue-*"
               ]
           },
           {
               "Action": [
                   "glue:UpdateDevEndpoint",
                   "glue:GetDevEndpoint",
                   "glue:GetDevEndpoints"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:devEndpoint/*"
               ]
           },
           {
               "Action": [
                   "sagemaker:ListTags"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:sagemaker:us-east-1:111122223333:notebook-instance/*"
               ]
           }
       ]
   }
   ```

------

   次に [**ポリシーの確認**] を選択します。

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

1. [**Review Policy**] (ポリシーの確認) 画面で、[**Policy Name**] (ポリシー名)に `AWSGlueSageMakerNotebook` (など)を入力します。オプションの説明を入力し、ポリシーが適切であることを確認したら、[**Create policy**] を選択します。

# ステップ 7: SageMaker AI ノートブック用の IAM ロールを作成する
<a name="create-an-iam-role-sagemaker-notebook"></a>

開発エンドポイントで SageMaker AI ノートブックを使用する予定がある場合は、IAM ロールのアクセス許可を付与する必要があります。AWS Identity and Access Management (IAM) を使用しながら IAM ロールを介して、アクセス許可を付与できます。

**SageMaker AI ノートブック用の IAM ロールを作成するには**

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

1. 左のナビゲーションペインで、**[Roles (ロール)]** を選択してください。

1. **[Create role (ロールの作成)]** を選択してください。

1. ロールタイプについては、[**AWS Service**] を選択し、[**SageMaker**] を見つけて選択してから、[**SageMaker - Execution**] ユースケースを選択します。その後、**[Next: Permissions (次へ: アクセス許可)]** を選択します。

1. [**Attach permissions policy**] ページで、必要なアクセス許可を含むポリシー ([**AmazonSageMakerFullAccess**] など) を選択します。**[Next: Review (次へ: レビュー)]** を選択します。

   SSE-KMS で暗号化された Amazon S3 のソースとターゲットにアクセスする予定がある場合は、次の例に示すように、ノートブックによるデータの復号化を許可するポリシーをアタッチしてください。詳細については、「[Protecting Data Using Server-Side Encryption with AWS KMS-Managed Keys (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": [
           "arn:aws:kms:*:111122223333:key/key-id"
         ]
       }
     ]
   }
   ```

------

1. **ロール名** に、ロールの名前を入力します。コンソールユーザーから SageMaker AI にロールを渡すには、文字列 `AWSGlueServiceSageMakerNotebookRole` のプレフィックスが付けられた名前を使用します。AWS Glue が提供するポリシーでは、IAM ロールが `AWSGlueServiceSageMakerNotebookRole` で始まることを想定しています。それ以外の場合は、ユーザーにポリシーを追加して、IAM ロールに対する `iam:PassRole` の許可を命名規則に一致させる必要があります。

   例えば、`AWSGlueServiceSageMakerNotebookRole-Default` を入力した上で、**[Create role (ロールの作成)]**] をクリックします。

1. ロールを作成した後に、AWS Glue から SageMaker AI ノートブックを作成するために必要な、追加のアクセス許可を付与するポリシーをアタッチします。

   作成したロール `AWSGlueServiceSageMakerNotebookRole-Default` を開き、**[Attach policies (ポリシーのアタッチ)]** をクリックします。作成した `AWSGlueSageMakerNotebook` ポリシーを、ロールにアタッチします。