适用于 AWS Data Pipeline 的 IAM 策略 - AWS Data Pipeline

适用于 AWS Data Pipeline 的 IAM 策略

默认情况下,IAM 实体没有创建或修改 AWS 资源的权限。要允许 IAM 实体创建或修改资源和执行任务,您必须创建 IAM policy 以允许 IAM 实体使用他们所需的特定资源和 API 操作,然后将这些策略与需要这些权限的 IAM 实体关联起来。

在将策略附加到一个用户或一组用户时,它会授权或拒绝用户使用指定资源执行指定任务。有关 IAM policy 的一般信息,请参阅 IAM 用户指南中的权限与策略。有关管理和创建自定义 IAM policy 的更多信息,请参阅管理 IAM policy

策略语法

IAM policy 是包含一个或多个语句的 JSON 文档。每个语句的结构如下:

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"*", "Condition":{ "condition":{ "key":"value" } } } ] }

策略声明包含以下元素:

  • Effect:effect 可以是 AllowDeny。在默认情况下,IAM 实体没有使用资源和 API 操作的许可,因此,所有请求均会被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。

  • Actionaction 是对其授予或拒绝权限的特定 API 操作。要查看 AWS Data Pipeline 操作的列表,请参阅 AWS Data Pipeline API 参考中的操作

  • Resource:受操作影响的资源。此处唯一有效值为 "*"

  • Condition:条件是可选的。它们可以用于控制策略生效的时间。

    AWS Data Pipeline 会实施 AWS 范围内的上下文键(请参阅可用的条件键)以及以下服务特定的键。

使用标签控制对管道的访问权限

您可以创建引用管道标签的 IAM 策略。这使您能够使用管道标签来执行以下操作:

  • 授予对管道的只读访问权限

  • 授予对管道的读/写访问权限

  • 阻止对管道的访问

例如,假设一个管理员有生产和开发两个管道环境,每个环境有一个 IAM 组。对于生产环境中的管道,管理员向生产 IAM 组中的用户授予读/写访问权限,但向开发人员 IAM 组中的用户授予只读访问权限。对于开发环境中的管道,管理员向生产和开发人员 IAM 组中的用户均授予读/写访问权限。

要实现这一场景,管理员使用“environment = production”标签来标记生产管道,并将以下策略附加到开发人员 IAM 组。第一条语句授予对所有管道的只读访问权限。第二条语句授予对没有“environment = production”标签的管道的读/写访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringNotEquals": {"datapipeline:Tag/environment": "production"} } } ] }

此外,管理员将以下策略附加到生产 IAM 组。此语句授予对所有管道的完全访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*" } ] }

有关更多示例,请参阅基于标签向用户授予只读访问权限基于标签向用户授予完全访问权限

使用工作线程组控制对管道的访问权限

您可以创建引用工作线程组名称的 IAM 策略。

例如,假设一个管理员有生产和开发两个管道环境,每个环境有一个 IAM 组。管理员有三个数据库服务器,分别为生产、生产前和开发人员环境配置了任务运行程序。管理员想要确保用户在生产 IAM 组中的用户可以创建推送任务到生产资源的管道,而开发 IAM 组中的用户可以创建推送任务到生产前和开发人员资源的管道。

要实现这种场景,管理员使用生产凭证在生产资源上安装任务运行程序,并将 workerGroup 设置为“prodresource”。此外,管理员使用开发凭证在开发资源上安装任务运行程序,并将 workerGroup 设置为“pre-production”和“development”。管理员将以下策略附加到开发人员 IAM 组来阻止对“prodresource”资源的访问。第一条语句授予对所有管道的只读访问权限。第二条语句在工作线程组的名称具有前缀“dev”或“pre-prod”时,授予对管道的读/写访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Action": "datapipeline:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "datapipeline:workerGroup": ["dev*","pre-prod*"] } } } ] }

此外,管理员将以下策略附加到生产 IAM 组来授予对“prodresource”资源的访问权限。第一条语句授予对所有管道的只读访问权限。第二条语句在工作线程组的名称具有前缀“prod”时,授予读/写访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "datapipeline:Describe*", "datapipeline:ListPipelines", "datapipeline:GetPipelineDefinition", "datapipeline:QueryObjects" ], "Resource": "*" }, { "Effect": "Allow", "Action": "datapipeline:*", "Resource": "*", "Condition": { "StringLike": {"datapipeline:workerGroup": "prodresource*"} } } ] }