步骤 3:将策略附加到访问 Amazon Glue 的 IAM 用户 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

步骤 3:将策略附加到访问 Amazon Glue 的 IAM 用户

登录 Amazon Glue 控制台或 Amazon Command Line Interface(Amazon CLI)的任何 IAM 用户都必须具有访问特定资源的权限。您可使用 Amazon Identity and Access Management(IAM)通过策略提供这些权限。

完成此步骤后,您的 IAM 用户将附加以下策略:

  • Amazon托管式策略 AWSGlueConsoleFullAccess 或自定义策略 GlueConsoleAccessPolicy

  • AWSGlueConsoleSageMakerNotebookFullAccess

  • CloudWatchLogsReadOnlyAccess

  • AWSCloudFormationReadOnlyAccess

  • AmazonAthenaFullAccess

附加内联策略并将其嵌入到 IAM 用户中

您可以将Amazon托管式策略或内联策略附加到 IAM 用户以便访问 Amazon Glue 控制台。在此策略中指定的某些资源引用了 Amazon Glue 对 Amazon S3 存储桶、Amazon S3 ETL 脚本、CloudWatch Logs、Amazon CloudFormation 和 Amazon EC2 资源使用的默认名称。为简便起见,默认情况下,Amazon Glue 会将某些 Amazon S3 对象写入到您的账户中带有前缀 aws-glue-* 的存储桶。

注意

如果您使用了Amazon托管式策略 AWSGlueConsoleFullAccess,则可跳过此步骤。

重要

Amazon Glue 需要代入用于代表您执行工作的角色的权限。要达到此目的,您要将 iam:PassRole 权限添加到您的 Amazon Glue 用户。此策略向以 AWSGlueServiceRole 开头的角色授予对 Amazon Glue 服务角色的权限,并向以 AWSGlueServiceNotebookRole 开头的角色授予对您创建笔记本服务器时所需的角色的权限。您还可以针对 iam:PassRole 权限创建您自己的遵循您的命名约定的策略。

根据安全性最佳实践,建议通过收紧策略来限制访问,从而进一步限制对 Amazon S3 存储桶和 Amazon CloudWatch 日志组的访问。有关示例 Amazon S3 策略,请参阅编写 IAM 策略:如何授予对 Amazon S3 存储桶的访问权限

在此步骤中,您将创建一个类似于 AWSGlueConsoleFullAccess 的策略。您可以在 IAM 控制台中找到最新版本的 AWSGlueConsoleFullAccess

  1. 登录 Amazon Web Services Management Console,单击 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择 Users (用户)

  3. 在列表中,选择要在其中嵌入策略的用户的名称。

  4. 选择 Permissions (权限) 选项卡,然后展开 Permissions policies (权限策略) 部分(如有必要)。

  5. 选择 Add Inline policy (添加内联策略) 链接。

  6. Create Policy (创建策略) 屏幕上,导航到用于编辑 JSON 的选项卡。使用以下 JSON 语句创建策略文档,然后选择 Review policy (查看策略)。

    { "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/*" ] }, { "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:*"

    "*"

    授予运行所有 Amazon 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"

    "*"

    允许在运行任务、爬网程序和开发终端节点时设置 Amazon EC2 网络项,如 VPC。

    "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"

    "*"

    允许检索Amazon标签。

    "s3:CreateBucket", "s3:PutBucketPublicAccessBlock"

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

    允许在存储 ETL 脚本和笔记本服务器位置等对象时在您的账户中创建 Amazon S3 存储桶。

    命名约定:向名称以 aws-glue- 为前缀的 Amazon S3 存储桶授予权限。

    使 Amazon Glue 创建阻止公有访问的存储桶。

    "logs:GetLogEvents"

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

    允许检索 CloudWatch Logs。

    命名约定:Amazon Glue 将日志写入到名称以 aws-glue- 开头的日志组。

    "cloudformation:CreateStack", "cloudformation:DeleteStack"

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

    允许在使用笔记本服务器时管理 Amazon CloudFormation 堆栈。

    命名约定:Amazon 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/*"

    允许操作开发终端节点和笔记本服务器。

    命名约定:Amazon Glue Amazon CloudFormation 堆栈使用前缀为 aws-glue- 和 logical-id ZeppelinInstance 的名称。

    "iam:PassRole"

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

    允许 Amazon Glue 使用针对以 AWSGlueServiceRole 开头的角色的 PassRole 权限。

    "iam:PassRole"

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

    允许 Amazon EC2 使用针对以 AWSGlueServiceNotebookRole 开头的角色的 PassRole 权限。

    "iam:PassRole"

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

    允许 Amazon Glue 使用针对以 service-role/AWSGlueServiceRole 开头的角色的 PassRole 权限。

  7. Review policy (查看策略) 屏幕上,输入您的策略的名称,例如 GlueConsoleAccessPolicy。如果您对该策略感到满意,请选择 Create policy (创建策略)。确保屏幕顶部的红框中没有显示错误。更正报告的任何错误。

    注意

    如果选择了 Use autoformatting,则每当您打开策略或选择 Validate Policy 时,都会重新设置策略的格式。

附加 AWSGlueConsoleFullAccess 托管策略

您可以附加 AWSGlueConsoleFullAccess 策略以提供 Amazon Glue 控制台用户所需的权限。

注意

如果您已针对 Amazon Glue 控制台访问创建自己的策略,则可跳过此步骤。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中 AWSGlueConsoleFullAccess 旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。

附加 AWSGlueConsoleSageMakerNotebookFullAccess 托管式策略

可将 AWSGlueConsoleSageMakerNotebookFullAccess 策略附加到用户,以管理在 Amazon Glue 控制台中创建的 SageMaker 笔记本。除了其他必要的 Amazon Glue 控制台权限外,该策略还授予管理 SageMaker 笔记本所需资源的访问权限。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中 AWSGlueConsoleSageMakerNotebookFullAccess 旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。

附加 CloudWatchLogsReadOnlyAccess 托管策略

您可以将 CloudWatchLogsReadOnlyAccess 策略附加到用户以查看由 Amazon Glue 在 CloudWatch Logs 控制台上创建的日志。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中 CloudWatchLogsReadOnlyAccess 旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。

附加 AWSCloudFormationReadOnlyAccess 托管策略

您可以将 AWSCloudFormationReadOnlyAccess 策略附加到用户以查看 Amazon Glue 在 Amazon CloudFormation 控制台上使用的 Amazon CloudFormation 堆栈。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中 AWSCloudFormationReadOnlyAccess 旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。

附加 AmazonAthenaFullAccess 托管策略

您可以将 AmazonAthenaFullAccess 策略附加到用户,以在 Athena 控制台中查看 Amazon S3 数据。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies(策略)

  3. 在策略列表中,选中 AmazonAthenaFullAccess 旁边的复选框。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。