

# 为 AWS Glue 设置 IAM 权限
<a name="set-up-iam"></a>

本主题中的说明可帮助您为 AWS Glue 快速设置 AWS Identity and Access Management (IAM) 权限。您需要完成以下任务：
+ 授予您的 IAM 身份访问 AWS Glue 资源的权限。
+ 创建用于运行作业、访问数据和运行 AWS Glue Data Quality 任务的服务角色。

有关可用于为 [为 AWS Glue 配置 IAM 权限](configure-iam-for-glue.md) 自定义 IAM 权限的详细说明，请参阅 AWS Glue。

**在 AWS 管理控制台 中为 AWS Glue 设置 IAM 权限**

1. 登录 AWS 管理控制台，然后打开 AWS Glue 控制台，网址为：[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 选择**开始使用**。

1. 在**为 AWS Glue 准备好账号**下，选择**设置 IAM 权限**。

1. 选择您要向其授予 AWS Glue 权限的 IAM 身份（角色或用户）。AWS Glue 将 `[AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)` 托管策略附加到这些身份。如果您想手动设置这些权限或只想设置默认服务角色，则可以跳过此步骤。

1. 选择**下一步**。

1. 选择您的角色和用户需要的 Amazon S3 访问权限级别。您在此步骤中选择的选项将应用于您选择的所有身份。

   1. 在**选择 S3 地点**下，选择您想要授予访问权限的 Amazon S3 地点。

   1. 接下来，选择您的身份应该对您之前选择的位置具有**只读（推荐）**还是**读写**权限。AWS Glue 根据您选择的位置和读取或写入权限的组合为您的身份添加权限策略。

      下表显示了 AWS Glue 为访问 Amazon S3 而附加的权限。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/set-up-iam.html)

1. 选择**下一步**。

1. 为您的账户选择默认 AWS Glue 服务角色。服务角色是一个 IAM 角色，AWS Glue 用于代表您访问其他 AWS 服务中的资源。有关更多信息，请参阅 [AWS Glue 的服务角色](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service)。
   + 当您选择标准 AWS Glue 服务角色时，AWS Glue 会在您的名为 `AWSGlueServiceRole` 的 AWS 账户 中创建一个新的 IAM 角色，并附加以下托管策略。如果您的账户已经有一个名为 `AWSGlueServiceRole` 的 IAM 角色，AWS Glue 会将这些策略附加到现有角色。
     +  [ AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – 此托管策略是 AWS Glue 代表您访问和管理资源所必需的。它允许 AWS Glue 创建、更新和删除各种资源，例如 AWS Glue 作业、爬网程序和连接。此策略还授予 AWS Glue 出于记录目的访问 Amazon CloudWatch 日志的权限。为了便于入门，我们建议您使用此策略来学习如何使用 AWS Glue。随着您逐渐熟悉 AWS Glue，您可以创建策略，以便根据需要微调对资源的访问权限。
     +  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) - 此托管策略通过 AWS 管理控制台 授予对 AWS Glue 服务的完全访问权限。该策略授予在 AWS Glue 内执行任何操作的权限，使您能够根据需要创建、修改和删除任何 AWS Glue 资源。但需要注意的是，此策略不授予访问 ETL 流程中可能涉及的底层数据存储或其他 AWS 服务的权限。由于 `AWSGlueConsoleFullAccess` 策略授予的权限范围很广，因此在分配权限时应谨慎行事，并遵循最低权限原则。一般建议尽可能创建和使用针对特定用例和要求的更细粒度的策略。
     +  [ AWSGlueConsole-S3-read-only-policy](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-only-policy) – 此策略允许 GLU 从指定的 Amazon S3 存储桶读取数据，但不授予在 Amazon S3 中写入或修改数据的权限，或者 

        [ AWSGlueConsole-S3-read-and-write](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-and-write) – 该策略允许 AWS Glue 将数据读写到指定的 Amazon S3 存储桶，作为 ETL 流程的一部分。
   +  当您选择现有 IAM 角色时，AWS Glue 会将该角色设置为默认角色，但不会向其添加 `AWSGlueServiceRole` 权限。确保您已将角色配置为用作 AWS Glue 的服务角色。有关更多信息，请参阅 [步骤 1：为 AWS Glue 服务创建 IAM policy](create-service-policy.md) 和 [步骤 2：为 AWS Glue 创建 IAM 角色](create-an-iam-role.md)。

1. 选择**下一步**。

1. 最后，检查您选择的权限，然后选择**应用更改**。当您应用更改时，AWS Glue 会向您选择的身份添加 IAM 权限。您可以在 IAM 控制台中查看或修改新权限，网址为 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

现在，您已经完成了为 AWS Glue 设置最低 IAM 权限。在生产环境中，我们建议您熟悉 [AWS Glue 中的安全性](security.md) 和 [适用于 AWS Glue 的 Identity and Access Management](security-iam.md)，帮助您保护用例的 AWS 资源。

## 后续步骤
<a name="set-up-iam-next-steps"></a>

现在您已经设置了 IAM 权限，您可以探索以下主题以开始使用 AWS Glue：
+ [AWS Skill Builder 中的 AWS Glue 入门](https://explore.skillbuilder.aws/learn/course/external/view/elearning/8171/getting-started-with-aws-glue)
+ [开始使用 AWS Glue Data Catalog](start-data-catalog.md)

# 对 AWS Glue Studio 进行设置
<a name="setting-up-studio"></a>

如果您首次将 AWS Glue 用于可视化 ETL，请完成本部分中的任务：

**Topics**
+ [审核 AWS Glue Studio 用户需要 IAM 权限](getting-started-min-privs.md)
+ [审核 ETL 任务所需的 IAM 权限](getting-started-min-privs-job.md)
+ [为 AWS Glue Studio 设置 IAM 权限](getting-started-iam-permissions.md)
+ [为 ETL 任务配置 VPC](getting-started-vpc-config.md)

# 审核 AWS Glue Studio 用户需要 IAM 权限
<a name="getting-started-min-privs"></a>

要使用 AWS Glue Studio，用户必须有权访问各种 AWS 资源。用户必须能够查看和选择 Amazon S3 存储桶、IAM policy 和角色，以及 AWS Glue Data Catalog 对象。

## AWS Glue 服务权限
<a name="getting-started-min-privs-glue"></a>

AWS Glue Studio 使用 AWS Glue 服务的操作和资源。您的用户需要这些操作和资源的权限，从而有效使用 AWS Glue Studio。您可以授予 AWS Glue Studio 用户 `AWSGlueConsoleFullAccess` 托管式策略，或创建具有较小权限集的自定义策略。

**重要**  
根据安全性最佳实践，建议通过收紧策略来限制访问，从而进一步限制对 Amazon S3 存储桶和 Amazon CloudWatch 日志组的访问。有关示例 Amazon S3 策略，请参阅[编写 IAM policy：如何授予对 Amazon S3 存储桶的访问权限](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)。

## 为 AWS Glue Studio 创建自定义 IAM policy
<a name="getting-started-all-gs-privs"></a>

您可以为 AWS Glue Studio 创建一个包含较小权限集的自定义策略。该策略可以为对象或操作子集授予权限。创建自定义策略时，请使用以下信息。

 要使用 AWS Glue Studio API，请在 IAM 权限的操作策略中包括 `glue:UseGlueStudio`。使用 `glue:UseGlueStudio` 将允许您访问所有 AWS Glue Studio，即使随着时间的推移向 API 中添加了更多操作。

 有关 AWS Glue 定义的操作的更多信息，请参阅 [ Actions defined by AWS Glue](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)。

 **数据准备创作操作** 
+ SendRecipeAction
+ GetRecipeAction

 **有向非循环图 (DAG) 操作** 
+ CreateDag
+ UpdateDag
+ GetDag
+ DeleteDag

 **任务操作** 
+ SaveJob
+ GetJob
+ CreateJob
+ DeleteJob
+ GetJobs
+ UpdateJob

 **任务运行操作** 
+ StartJobRun
+ GetJobRuns
+ BatchStopJobRun
+ GetJobRun
+ QueryJobRuns
+ QueryJobs
+ \$1QueryJobRunsAggregated

 **架构操作** 
+ GetSchema
+ \$1GetInferredSchema

 **数据库操作** 
+ GetDatabases

 **计划操作** 
+ GetPlan

 **表操作** 
+ SearchTables
+ GetTables
+ GetTable

 **连接操作** 
+ CreateConnection
+ DeleteConnection
+ UpdateConnection
+ GetConnections
+ GetConnection

 **映射操作** 
+ GetMapping

 **S3 代理操作**
+ ListBuckets
+ ListObjectsV2
+ GetBucketLocation

**安全配置操作**
+ GetSecurityConfigurations 

**脚本操作**
+ CreateScript（不同于 AWS Glue 中的同名 API）

## 访问 AWS Glue Studio API
<a name="getting-started-glue-studio-apis"></a>

 要访问 AWS Glue Studio，请在 IAM 权限的操作策略列表中添加 `glue:UseGlueStudio`。

 在以下示例中，`glue:UseGlueStudio` 已包括在操作策略中，但 AWS Glue Studio API 不是单独识别的。这是因为当您包括 `glue:UseGlueStudio` 时，系统将会向您自动授予访问内部 API 的权限，而无需在 IAM 权限中指定单个 AWS Glue Studio API。

 在该示例中，列出的其他操作策略（例如，`glue:SearchTables`）并非 AWS Glue Studio API，因此，需要根据需要将它们包含在 IAM 权限中。此外，您可能还希望包括 Amazon S3 代理操作，以指定要授予的 Amazon S3 访问权限级别。以下示例策略提供对开放 AWS Glue Studio、创建可视化任务及保存/运行任务（如果选定 IAM 角色具有足够权限）的访问权限。

## 笔记本和数据预览权限
<a name="getting-started-data-preview-perms"></a>

数据预览和笔记本允许您在任务的任何阶段（读取、转换、写入）查看数据样本，而无需运行任务。您可以为 AWS Glue Studio 指定访问数据时要使用的 AWS Identity and Access Management (IAM) 角色。IAM 角色可代入，没有关联的标准长期凭证（如密码或访问密钥）。相反，当 AWS Glue Studio 代入角色时，IAM 会为其提供临时安全凭证。

要确保数据预览和笔记本命令正常工作，请使用名称开头为字符串 `AWSGlueServiceRole` 的角色。如果选择为角色使用其他名称，则必须在 IAM 中为角色添加 `iam:passrole` 权限并配置策略。有关更多信息，请参阅 [为未命名为“AWSGlueServiceRole\$1”的角色创建 IAM policy](getting-started-iam-permissions.md#create-iam-policy)。

**警告**  
如果角色为笔记本授予 `iam:passrole` 权限，并且您实施了角色链接，则用户可能会无意中获得访问笔记本的权限。目前没有实施审计，因此不允许您监控哪些用户已被授予访问笔记本的权限。

如果您想拒绝 IAM 身份创建数据预览会话，请参阅以下示例 [拒绝某个身份创建数据预览会话](security_iam_id-based-policy-examples.md#deny-data-preview-sessions-per-identity)。

## Amazon CloudWatch 权限
<a name="getting-started-min-privs-cloudwatch"></a>

您可以使用 Amazon CloudWatch 来监控 AWS Glue Studio 任务，此工具可从 AWS Glue 收集原始数据，并将数据处理为可读的近实时指标。默认情况下，AWS Glue 指标数据自动发送到 CloudWatch。有关更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[什么是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)和《AWS Glue 开发人员指南》**中的 [AWS Glue 指标](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html#awsglue-metrics)。

要访问 CloudWatch 控制面板，则访问 AWS Glue Studio 的用户需要以下内容之一：
+ `AdministratorAccess` 策略
+ `CloudWatchFullAccess` 策略
+ 包含以下一个或多个特定权限的自定义策略：
  + `cloudwatch:GetDashboard` 和 `cloudwatch:ListDashboards`，以查看控制面板
  + `cloudwatch:PutDashboard`，以创建或修改控制面板
  + `cloudwatch:DeleteDashboards`，以删除控制面板

有关使用策略更改 IAM 用户权限的更多信息，请参阅《IAM 用户指南》**中的[更改 IAM 用户的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

# 审核 ETL 任务所需的 IAM 权限
<a name="getting-started-min-privs-job"></a>

当您使用 AWS Glue Studio 创建任务时，该任务代入您在创建它时指定的 IAM 角色的权限。此 IAM 角色必须有权限从您的数据源中提取数据，将其写入您的目标，并访问 AWS Glue 资源。

为任务创建的角色的名称必须以字符串 `AWSGlueServiceRole` 开头，以便其能够正确地被 AWS Glue Studio 使用。例如，您可以将角色命名为 `AWSGlueServiceRole-FlightDataJob`。

## 数据源和数据目标权限
<a name="getting-started-min-privs-data"></a>

AWS Glue Studio 任务必须具有您在任务中使用的任何源、目标、脚本和临时目录等 Amazon S3 的访问权限。您可以创建策略，提供对特定 Amazon S3 资源的精细访问权限。
+ 数据源需要 `s3:ListBucket` 和 `s3:GetObject` 权限。
+ 数据目标需要`s3:ListBucket`、`s3:PutObject` 和 `s3:DeleteObject` 权限。

**注意**  
 您的 IAM 策略需要允许对用于托管 AWS Glue 转换的特定存储桶执行 `s3:GetObject` 操作。  
 以下存储桶由 AWS 服务账户所有，并且可在全球范围内读取。这些存储桶充当与可通过 AWS Glue Studio 可视化编辑器访问的转换子集相关的源代码存储库。存储桶上的权限设置为拒绝对该存储桶执行任何其他 API 操作。任何人都可以读取我们提供的转换脚本，但是除我们的服务团队外，任何人都不能向其中“放入”任何内容。当您的 AWS Glue 作业运行时，将通过本地导入的方式拉取该文件，因此会将该文件下载到本地容器中。之后，将不再与该账户进行其他通信。

 区域：存储桶名称 
+ af-south-1：aws-glue-studio-transforms-762339736633-prod-af-south-1
+ ap-east-1：aws-glue-studio-transforms-125979764932-prod-ap-east-1
+ ap-northeast-2：aws-glue-studio-transforms-673535381443-prod-ap-northeast-2
+ ap-northeast-3：aws-glue-studio-transforms-149976050262-prod-ap-northeast-3
+ ap-south-1：aws-glue-studio-transforms-584702181950-prod-ap-south-1
+ ap-south-2：aws-glue-studio-transforms-380279651983-prod-ap-south-2
+ ap-southeast-1：aws-glue-studio-transforms-737106620487-prod-ap-southeast-1
+ ap-southeast-2：aws-glue-studio-transforms-234881715811-prod-ap-southeast-2
+ ap-southeast-3：aws-glue-studio-transforms-151265630221-prod-ap-southeast-3
+ ap-southeast-4：aws-glue-studio-transforms-052235663858-prod-ap-southeast-4
+ ca-central-1：aws-glue-studio-transforms-622716468547-prod-ca-central-1
+ ca-west-1：aws-glue-studio-transforms-915795495192-prod-ca-west-1
+ eu-central-1：aws-glue-studio-transforms-560373232017-prod-eu-central-1
+ eu-central-2：aws-glue-studio-transforms-907358657121-prod-eu-central-2
+ eu-north-1：aws-glue-studio-transforms-312557305497-prod-eu-north-1
+ eu-south-1：aws-glue-studio-transforms-939684186351-prod-eu-south-1
+ eu-south-2：aws-glue-studio-transforms-239737454084-prod-eu-south-2
+ eu-west-1：aws-glue-studio-transforms-244479516193-prod-eu-west-1
+ eu-west-2：aws-glue-studio-transforms-804222392271-prod-eu-west-2
+ eu-west-3：aws-glue-studio-transforms-371299348807-prod-eu-west-3
+ il-central-1：aws-glue-studio-transforms-806964611811-prod-il-central-1
+ me-central-1：aws-glue-studio-transforms-733304270342-prod-me-central-1
+ me-south-1：aws-glue-studio-transforms-112120182341-prod-me-south-1
+ sa-east-1：aws-glue-studio-transforms-881619130292-prod-sa-east-1
+ us-east-1：aws-glue-studio-transforms-510798373988-prod-us-east-1
+ us-east-2：aws-glue-studio-transforms-251189692203-prod-us-east-2
+ us-west-1：aws-glue-studio-transforms-593230150239-prod-us-west-1
+ us-west-2：aws-glue-studio-transforms-818035625594-prod-us-west-2
+ ap-northeast-1：aws-glue-studio-transforms-200493242866-prod-ap-northeast-1
+ cn-north-1：aws-glue-studio-transforms-071033555442-prod-cn-north-1
+ cn-northwest-1：aws-glue-studio-transforms-070947029561-prod-cn-northwest-1
+ us-gov-west-1：aws-glue-studio-transforms-227493901923-prod-us-gov-west-1-2604
+ eusc-de-east-1：aws-glue-studio-transforms-780995497573-prod-eusc-de-east-1-555

如果选择 Amazon Redshift 作为数据源，那么您可以为集群权限提供角色。针对 Amazon Redshift 集群运行的任务会发出命令，使用临时凭证访问 Amazon S3 进行临时存储。如果您的任务运行超过一小时，这些凭证将会过期，导致任务失败。若要避免此问题，您可以将角色分配给 Amazon Redshift 集群本身，其授予使用临时凭证的任务所需的权限。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的[将数据移入和移出 Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html)。

如果任务使用 Amazon S3 以外的数据源或目标，则您必须为任务使用的 IAM 角色附上所需的权限，从而访问这些数据源和目标。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的[设置环境以访问数据存储](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)。

如果要为数据存储使用连接器和连接，则您需要在[使用连接器所需的权限](#getting-started-min-privs-connectors)中描述的其他权限。

## 删除任务所需的权限
<a name="getting-started-min-privs-delete-job"></a>

在 AWS Glue Studio 中，您可以在控制台选择多个任务删除。若要执行此操作，您必须具有 `glue:BatchDeleteJob` 权限。这不同于需要 `glue:DeleteJob` 权限来删除任务的 AWS Glue 控制台。

## AWS Key Management Service 权限
<a name="getting-started-min-privs-kms"></a>

如果您计划访问使用 AWS Key Management Service（AWS KMS）进行服务器端加密的 Amazon S3 源和目标，则需为任务使用的 AWS Glue Studio 角色附上策略，从而使任务能够解密数据。任务角色需要 `kms:ReEncrypt`、`kms:GenerateDataKey` 和 `kms:DescribeKey` 权限。此外，任务角色需要 `kms:Decrypt` 权限来上载或下载使用 AWS KMS 客户主密钥（CMK）加密的 Amazon S3 对象。

使用 AWS KMS CMK 需支付额外费用。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS Key Management Service 概念 – 客户主密钥（CMK）](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)和 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing)。

## 使用连接器所需的权限
<a name="getting-started-min-privs-connectors"></a>

如果您使用 AWS Glue 自定义连接器和连接来访问数据存储，则需要为用于运行 AWS Glue ETL 任务的角色附上其他权限：
+ 亚马逊云科技托管式策略 `AmazonEC2ContainerRegistryReadOnly`，用于访问购买于 AWS Marketplace 的连接器。
+ `glue:GetJob` 和 `glue:GetJobs` 权限。
+ AWS Secrets Manager 权限，用于访问与连接一起使用的密钥。有关示例 IAM 策略，请参阅 [Example: Permission to retrieve secret values](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_read)（示例：检索密钥值的权限）。

如果您的 AWS Glue ETL 任务在运行 Amazon VPC 的 VPC 中运行，则 VPC 必须按照[为 ETL 任务配置 VPC](getting-started-vpc-config.md)中的描述进行配置。

# 为 AWS Glue Studio 设置 IAM 权限
<a name="getting-started-iam-permissions"></a>

您可以通过使用 AWS 管理员用户，创建角色并将策略分配给用户和任务角色。

您可以使用 **AWSGlueConsoleFullAccess** AWS 托管式策略提供使用 AWS Glue Studio 控制台所需的权限。

要创建您自己的策略，请按照*《AWS Glue 开发人员指南》*中的[为 AWS Glue 服务创建 IAM policy](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html) 记录的步骤进行操作。包括前面在 [审核 AWS Glue Studio 用户需要 IAM 权限](getting-started-min-privs.md) 中描述的 IAM 权限。

**Topics**
+ [将策略附加至 AWS Glue Studio 用户](#attach-iam-policy)
+ [为未命名为“AWSGlueServiceRole\$1”的角色创建 IAM policy](#create-iam-policy)

## 将策略附加至 AWS Glue Studio 用户
<a name="attach-iam-policy"></a>

登录 AWS Glue Studio 控制台的任何 AWS 用户都必须具有访问特定资源的权限。您可使用向用户分配 IAM 策略来提供这些权限。

**向用户附加 **AWSGlueConsoleFullAccess** 托管策略**

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**（筛选条件）菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后，选择 **Attach policy** (附加策略)。

1. 根据需要，重复前面的步骤向用户附上其他策略。

## 为未命名为“AWSGlueServiceRole\$1”的角色创建 IAM policy
<a name="create-iam-policy"></a>

**要为 AWS Glue Studio 所使用的角色配置 IAM policy**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 添加新的 IAM policy。您可以添加到现有策略或创建新的 IAM 内联策略。若要创建 IAM policy：

   1. 选择 **Policies**，然后选择 **Create Policy**。如果 **Get Started (开始使用)** 按钮出现，选择此按钮，然后选择 **Create Policy (创建策略)**。

   1. 在 **Create Your Own Policy** 旁，选择 **Select**。

   1. 对于 **Policy Name (策略名称)**，键入一个便于您稍后参考的值。（可选）在 **Description (描述)** 中键入说明性文本。

   1. 对于 **Policy Document (策略文档)**，请使用以下格式键入策略语句，然后选择 **Create Policy (创建策略)**：

1. 将以下块复制并粘贴到“Statement”数组下的策略中，将 *my-interactive-session-role-prefix* 替换为所有要与 AWS Glue 的权限关联的常用角色的前缀。

   ```
   {
       "Action": [
           "iam:PassRole"
       ],
       "Effect": "Allow",
       "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
       "Condition": {
           "StringLike": {
               "iam:PassedToService": [
                   "glue.amazonaws.com "
               ]
           }
       }
   }
   ```

    以下是策略中包含的版本和语句阵列的完整示例 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com "
             ]
           }
         }
       }
     ]
   }
   ```

------

1. 要对某个用户启用策略，请选择**用户**。

1. 选择您要向其挂载策略的 用户。

# 为 ETL 任务配置 VPC
<a name="getting-started-vpc-config"></a>

您可以使用 Amazon Virtual Private Cloud (Amazon VPC) 在 AWS 云 内您自己的逻辑隔离区域中定义虚拟化网络，我们称之为 *虚拟私有云 (VPC) *。可在 VPC 中启动实例等 AWS 资源。您的 VPC 与您可能在自己的数据中心中运行的传统网络极为相似，同时享有使用来自 AWS 的可扩展基础设施的优势。您可以配置您的 VPC；您可以选择它的 IP 地址范围、创建子网并配置路由表、网关和安全设置。您可以将您的 VPC 中的实例连接到网络。您可以将您的 VPC 连接到公司的数据中心，并将 AWS 云 作为数据中心的延伸。要保护各个子网中的资源，您可以利用多种安全层，包括安全组和网络访问控制列表。有关更多信息，请参阅[《Amazon VPC 用户指南》](https://docs.aws.amazon.com/vpc/latest/userguide/)。

使用连接器时，您可以配置您的 AWS Glue ETL 任务，使其在 VPC 内运行。您必须根据需要为以下内容配置 VPC：
+ 不在 AWS 中的数据存储的公有网络访问。必须能够从 VPC 子网使用任务访问的所有数据存储。
+ 如果您的任务既要访问 VPC 资源又要访问公有 Internet，VPC 内部必须具有网络地址转换（NAT）网关。

  有关更多信息，请参阅《AWS Glue 开发人员指南》**中的[设置环境以访问数据存储](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)。

# 在 AWS Glue Studio 中开启笔记本
<a name="notebook-getting-started"></a>

 当您通过 AWS Glue Studio 开启笔记本时，所有配置步骤都已为您完成，让您在几秒钟后即可浏览数据并开始开发任务脚本。

 以下部分介绍如何创建角色并授予在 AWS Glue Studio for ETL 作业中使用笔记本的适当权限。

 有关 AWS Glue 定义的操作的更多信息，请参阅 [Actions defined by AWS Glue](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)。

**Topics**
+ [为 IAM 角色授予权限](#studio-notebook-permissions)

## 为 IAM 角色授予权限
<a name="studio-notebook-permissions"></a>

 设置 AWS Glue Studio 是使用笔记本的先决条件。

要在 AWS Glue 中使用笔记本，您的角色需要满足以下条件：
+  与 AWS Glue 建立信任关系以进行 `sts:AssumeRole` 操作，如果您要进行标记操作，则与 `sts:TagSession` 建立信任关系。
+  包含笔记本电脑实例、AWS Glue 和交互式会话的所有 API 操作的 IAM 策略。
+  传递角色的 IAM policy，因为该角色需要能够将自己从笔记本传递到交互式会话。

 例如，在创建新角色时，您可以向该角色添加标准 AWS 托管策略（如 `AWSGlueConsoleFullAccessRole`），然后为笔记本操作添加新策略，为 IAM PassRole 策略添加另一个策略。

### 与 AWS Glue 建立信任关系所需的操作
<a name="create-notebook-permissions-trust"></a>

 启动笔记本会话时，您必须将 `sts:AssumeRole` 添加至传递到笔记本的角色的信任关系中。如果您的会话包括标签，您也必须传递 `sts:TagSession` 操作。如果未进行这些操作，则笔记本会话无法开启。

 例如：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

### 包含笔记本实例的 IAM 权限的策略
<a name="create-notebook-permissions-operations"></a>

 以下示例策略描述了笔记本所需的 AWS IAM 权限。如果您要创建新角色，请创建包含以下内容的策略：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartNotebook",
        "glue:TerminateNotebook",
        "glue:GlueNotebookRefreshCredentials",
        "glue:DeregisterDataPreview",
        "glue:GetNotebookInstanceStatus",
        "glue:GlueNotebookAuthorize"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 您可以使用以下 IAM 策略允许访问特定资源：
+  *AwsGlueSessionUserRestrictedNotebookServiceRole*：提供对除会话外所有 AWS Glue 资源的完全访问权限。允许用户仅创建和使用与用户关联的笔记本会话。此策略还包括由 AWS Glue 管理其他 AWS 服务中的 AWS Glue 资源所需的其他权限。
+  *AwsGlueSessionUserRestrictedNotebookPolicy*：提供允许用户仅创建和使用与用户关联的笔记本会话的权限。此策略还包括明确允许用户传递受限 AWS Glue 会话角色的权限。

### 传递角色的 IAM policy
<a name="create-notebook-permissions-pass-role"></a>

 当您创建具有角色的笔记本时，该角色将传递至交互式会话，以便同一角色可以在两个位置使用。因此，`iam:PassRole` 权限需要成为角色策略的一部分。

 使用以下示例为您的角色创建新策略。将账号替换为您的账号，并将角色名称替换为您的角色名称。

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

****  

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

------