AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。了解更多
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 AWS Data Pipeline 的 IAM 角色
AWS Data Pipeline 使用 AWS Identity and Access Management 角色。附加到 IAM 角色的权限策略决定了您的应用程序可以执行哪些操作 AWS Data Pipeline 以及它们可以访问哪些 AWS 资源。有关更多信息,请参阅《IAM 用户指南》中的 IAM 角色。
AWS Data Pipeline 需要两个 IAM 角色:
-
管道角色控制 AWS Data Pipeline 对 AWS 资源的访问。在管道对象定义中,
role
字段指定此角色。 -
EC2 实例角色控制在 EC2 实例上运行的应用程序(包括 Amazon EMR 集群中的 EC2 实例)对 AWS 资源的访问权限。在管道对象定义中,
resourceRole
字段指定此角色。
重要
如果您在 2022 年 10 月 3 日之前使用带有默认角色的 AWS Data Pipeline 控制台,AWS Data Pipeline 为您创建了 DataPipelineDefaultRole
并将 AWSDataPipelineRole
托管策略附加到该角色。自 2022 年 10 月 3 日起,AWSDataPipelineRole
托管策略已被弃用,使用控制台时必须为管道指定管道角色。
我们建议您查看现有管道,并确定 DataPipelineDefaultRole
是否与管道相关联以及 AWSDataPipelineRole
是否已关联到该角色。如果是,请查看此策略允许的访问权限,以确保其符合您的安全要求。根据需要添加、更新或替换附加到此角色的策略和策略语句。或者,您也可以更新管道以使用您创建的具有不同权限策略的角色。
AWS Data Pipeline 角色权限策略示例
每个角色都附加了一个或多个权限策略,用于确定该角色可以访问的 AWS 资源以及该角色可以执行的操作。本主题提供了管道角色的权限策略示例。它还提供了 AmazonEC2RoleforDataPipelineRole
(默认 EC2 实例角色的托管策略 DataPipelineDefaultResourceRole
)的内容。
管道角色权限策略示例
以下示例策略的范围经过限定,允许 AWS Data Pipeline 需要使用 Amazon EC2 和 Amazon EMR 资源运行管道的基本功能。它还提供了许多管道所要求的访问其他 AWS 资源所需的权限,如 Amazon Simple Storage Service 和 Amazon Simple Notification Service。如果管道中定义的对象不需要 AWS 服务的资源,我们强烈建议您移除用于访问该服务的权限。例如,如果您的管道未定义 D ynamoDBData 节点 或未使用 SnsAlarm 操作,我们建议您删除这些操作的允许语句。
将
替换为您的AWS账户 ID。111122223333
替换为管道角色的名称(此策略所关联的角色)。NameOfDataPipelineRole
替换为 EC2 实例角色的名称。NameOfDataPipelineResourceRole
替换为适合您的应用程序的区域。us-west-1
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PassRole" ], "Resource": [ "arn:aws:iam::
111122223333
:role/NameOfDataPipelineRole
", "arn:aws:iam::111122223333
:role/NameOfDataPipelineResourceRole
" ] }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeDhcpOptions", "ec2:DescribeImages", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeLaunchTemplates", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:DetachNetworkInterface", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RevokeSecurityGroupEgress", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:DescribeVolumeStatus", "ec2:DescribeVolumes", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:ListSteps", "elasticmapreduce:ListClusters", "elasticmapreduce:RunJobFlow", "elasticmapreduce:DescribeCluster", "elasticmapreduce:AddTags", "elasticmapreduce:RemoveTags", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ModifyInstanceGroups", "elasticmapreduce:GetCluster", "elasticmapreduce:DescribeStep", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:ListInstances", "iam:ListInstanceProfiles", "redshift:DescribeClusters" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "sns:GetTopicAttributes", "sns:Publish" ], "Resource": [ "arn:aws:sns:us-west-1
:111122223333
:MyFirstSNSTopic", "arn:aws:sns:us-west-1
:111122223333
:MySecondSNSTopic", "arn:aws:sns:us-west-1
:111122223333
:AnotherSNSTopic" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListMultipartUploads" ], "Resource": [ "arn:aws:s3:::MyStagingS3Bucket", "arn:aws:s3:::MyLogsS3Bucket", "arn:aws:s3:::MyInputS3Bucket", "arn:aws:s3:::MyOutputS3Bucket", "arn:aws:s3:::AnotherRequiredS3Buckets" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectMetadata", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::MyStagingS3Bucket/*", "arn:aws:s3:::MyLogsS3Bucket/*", "arn:aws:s3:::MyInputS3Bucket/*", "arn:aws:s3:::MyOutputS3Bucket/*", "arn:aws:s3:::AnotherRequiredS3Buckets/*" ] }, { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:us-west-1
:111122223333
:table/MyFirstDynamoDBTable", "arn:aws:dynamodb:us-west-1
:111122223333
:table/MySecondDynamoDBTable", "arn:aws:dynamodb:us-west-1
:111122223333
:table/AnotherDynamoDBTable" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:us-west-1
:111122223333
:db:MyFirstRdsDb", "arn:aws:rds:us-west-1
:111122223333
:db:MySecondRdsDb", "arn:aws:rds:us-west-1
:111122223333
:db:AnotherRdsDb" ] } ] }
EC2 实例角色的默认托管策略
下面显示的是 AmazonEC2RoleforDataPipelineRole
的内容。这是附加到 DataPipelineDefaultResourceRole
AWS Data Pipeline 的默认资源角色的托管策略。在为管道定义资源角色时,我们建议您从此权限策略开始,然后删除不需要的 AWS 服务操作的权限。
所示的是该策略的第 3 版,这在撰写本文时是最新版本。在 IAM 控制台中查看最新版的策略。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudwatch:*", "datapipeline:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:Describe*", "elasticmapreduce:ListInstance*", "elasticmapreduce:ModifyInstanceGroups", "rds:Describe*", "redshift:DescribeClusters", "redshift:DescribeClusterSecurityGroups", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": ["*"] }] }
为 AWS Data Pipeline 创建 IAM 角色和编辑角色权限
在 IAM 控制台中,请按照以下过程为 AWS Data Pipeline 创建角色。该过程包括两个步骤。首先,创建一个权限策略以附加到该角色。然后,创建一个角色并附加到该策略。创建角色后,您可以通过附加和分离权限策略来更改角色的权限。
注意
当您按照下文所述使用控制台为 AWS Data Pipeline 创建角色时,IAM 会创建并附加该角色所需的相应信任策略。
创建权限策略以与 AWS Data Pipeline 角色配合使用
访问:https://console.aws.amazon.com/iam/
,打开 IAM 控制台。 在导航窗格中,选择 Policies (策略),然后选择 Create policy (创建策略)。
请选择 JSON 选项卡。
如果您要创建管道角色,请将策略示例的内容复制并粘贴到 管道角色权限策略示例 中,然后根据您的安全要求酌情对其进行编辑。或者,如果您要创建自定义 EC2 实例角色,请对 EC2 实例角色的默认托管策略 中的示例执行相同的操作。
选择Review policy(查看策略)。
输入您策略的名称(如
MyDataPipelineRolePolicy
)和可选描述,然后选择创建策略。记下策略的名称。当您创建角色时,您将需要它。
为 AWS Data Pipeline 创建 IAM 角色
访问:https://console.aws.amazon.com/iam/
,打开 IAM 控制台。 -
在导航窗格中,选择角色,然后选择创建角色。
在选择使用案例下,选择数据管道。
在选择您的使用案例下,请执行以下操作之一:
选择
Data Pipeline
以创建管道角色。选择
EC2 Role for Data Pipeline
以创建资源角色。
选择Next: Permissions(下一步: 权限)。
如果列出了 AWS Data Pipeline 的默认策略,请继续执行以下步骤来创建角色,然后根据下一个过程中的说明对其进行编辑。否则,输入您在上一个过程中创建的策略的名称,然后从列表中选择它。
选择下一步:标签,输入任何要添加到角色的标签,然后选择下一步:审核。
输入角色的名称(如
MyDataPipelineRole
)和可选描述,然后选择创建角色。
为 AWS Data Pipeline 的 IAM 角色附加或取消附加权限策略
-
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 在导航窗格中,选择角色
在搜索框中,开始键入要编辑的角色的名称,例如 DataPipelineDefaultRole 或 MyDataPipelineRole,然后从列表中选择角色名称。
-
在权限选项卡上,执行以下操作:
要分离权限策略,请在权限策略下,选择策略条目最右侧的“删除”按钮。当系统提示进行确认时,选择分离。
要附加您之前创建的策略,请选择附加策略。在搜索框中,开始键入要编辑的策略的名称,从列表中选中它,然后选择附加策略。
更改现有管道的角色
如果要为管道分配不同的管道角色或资源角色,则可以在 AWS Data Pipeline 控制台中使用架构师编辑器。
使用控制台来编辑分配给管道的角色
-
打开 AWS Data Pipeline 控制台,网址为 https://console.aws.amazon.com/datapipeline/
。 -
从列表中选择管道,然后选择操作、编辑。
-
在架构师编辑器的右侧窗格中,选择其他。
从资源角色和角色列表中,选择要为 AWS Data Pipeline 分配的角色,然后选择保存。