AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 CodeDeploy 使用基于身份的策略(IAM 策略)

本主题提供基于身份的策略的示例,这些示例展示账户管理员如何将权限策略附加到 IAM 身份(即用户、组和角色),从而授予对 CodeDeploy 资源执行操作的权限。有关必须附加到 IAM 用户才能使用 CodeDeploy 的策略的信息,请参阅步骤 1:预置 IAM 用户

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了可用于管理 CodeDeploy 资源访问的基本概念和选项。有关更多信息,请参阅管理您的 CodeDeploy 资源的访问权限概述

以下是一个权限策略示例,允许用户删除与 us-west-2 区域中名为 WordPress_DepGroup 的应用程序关联的名为 WordPress_App 的部署组。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:DeleteDeploymentGroup" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] } ] }

使用 CodeDeploy 控制台所需要的权限

用户若要能够使用 CodeDeploy 控制台,则必须拥有一组最低的权限来允许其描述自己的 AWS 账户的其他 AWS 资源。要充分使用 CodeDeploy 控制台中的 CodeDeploy,您必须拥有来自以下服务的权限:

  • Amazon EC2 Auto Scaling

  • AWS CodeDeploy

  • Amazon Elastic Compute Cloud

  • Elastic Load Balancing

  • AWS Identity and Access Management

  • Amazon Simple Storage Service

  • Amazon Simple Notification Service

  • Amazon CloudWatch

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加该 IAM 策略的用户,控制台将无法按预期正常运行。为确保这些用户仍可使用 CodeDeploy 控制台,请另外附加 AWSCodeDeployReadOnlyAccess 托管策略,如适用于 CodeDeploy 的 AWS 托管(预定义)策略所述。

对于只需要调用 AWS CLI 或 CodeDeploy API 的用户,您无需为其提供最低控制台权限。

适用于 CodeDeploy 的 AWS 托管(预定义)策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决许多常用案例。这些 AWS 托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略(您可以将它们挂载到自己账户中的用户)是特定于 CodeDeploy 的:

  • AWSCodeDeployFullAccess – 授予对 CodeDeploy 的完全访问权限。

    注意

    AWSCodeDeployFullAccess 不提供对部署您的应用程序所需的其他服务中的操作的权限(如 Amazon EC2 和 Amazon S3),仅提供对特定于 CodeDeploy 的操作的权限。

  • AWSCodeDeployDeployerAccess – 向 IAM 用户授予注册和部署修订的访问权限。

     

  • AWSCodeDeployReadOnlyAccess – 授予对 CodeDeploy 的只读访问权限。

     

  • AWSCodeDeployRole – 允许 CodeDeploy 通过 Amazon EC2 实例的 Amazon EC2 标签或 Amazon EC2 Auto Scaling 组名称来识别这些实例,通过本地实例的标签来识别本地实例,以及将应用程序修订相应地部署到这些实例。提供所需权限向 Amazon SNS 主题发布通知和从 CloudWatch 检索关于警报的信息。

     

  • AWSCodeDeployRoleForLambda – 授予 CodeDeploy 权限以访问 AWS Lambda 和部署所需的任何其他资源。

     

  • AWSCodeDeployRoleForECS – 授予 CodeDeploy 权限以访问 Amazon ECS 和部署所需的任何其他资源。

     

  • AWSCodeDeployRoleForECSLimited – 授予 CodeDeploy 权限以访问 Amazon ECS 和部署所需的任何其他资源,以下情况除外:

    • 在 AppSpec file的 hooks 部分中,只能使用以 CodeDeployHook_ 开头的 Lambda 函数。有关更多信息,请参阅 用于 Amazon ECS 部署的 AppSpec 的“hooks”部分

    • Amazon S3 存储桶访问权限仅限于具有注册标记 UseWithCodeDeploy 且值为 true 的 S3 存储桶。有关更多信息,请参阅对象标记

部署过程的某些方面的权限已授给两个代表 CodeDeploy 进行操作的其他角色类型,而不是授给 IAM 用户:

  • IAM 实例配置文件:一种附加到 Amazon EC2 实例的 IAM 角色。此配置文件包含访问 Amazon S3 存储桶或 GitHub 存储库(其中存储将由 ∿ 部署的应用程序)所需的权限。有关更多信息,请参阅步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件

  • 服务角色:一种用于向 AWS 服务授予权限以便可访问 AWS 资源的 IAM 角色。附加到服务角色的策略将确定服务可访问的 AWS 资源以及可使用这些资源执行的操作。对于 CodeDeploy,服务角色用于:

    • 读取应用于实例的标记或与实例关联的 Amazon EC2 Auto Scaling 组名。这使 CodeDeploy 能够标识它可将应用程序部署到的实例。

    • 针对实例、Amazon EC2 Auto Scaling 组和 Elastic Load Balancing 负载均衡器执行操作。

    • 将信息发布到 Amazon SNS 主题,以便在发生指定的部署或实例事件时能够发送通知。

    • 检索有关 CloudWatch 警报的信息,以设置部署的警报监视。

    有关更多信息,请参阅 步骤 3:为 CodeDeploy 创建服务角色

此外,您还可以创建自己的自定义 IAM 策略,以授予 CodeDeploy 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管策略示例

本节的用户策略示例介绍如何授予各 CodeDeploy 操作的权限。当您使用 CodeDeploy API、AWS 开发工具包或 AWS CLI 时,可以使用这些策略。当您使用控制台时,您需要授予特定于控制台的其他权限,使用 CodeDeploy 控制台所需要的权限中对此进行了讨论。

您可以使用列出的以下示例 IAM 策略来限制 IAM 用户和角色对 CodeDeploy 的访问。

注意

所有示例都使用美国西部(俄勒冈)区域 (us-west-2) 和虚构的账户 ID。

示例

示例 1:允许用户在单个区域中执行 CodeDeploy 操作

以下示例授予仅在 us-west-2 区域执行 CodeDeploy 操作的权限:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:*" ] } ] }

示例 2:允许用户为单个应用程序注册修订

以下示例授予为 us-west-2 区域中所有以 Test 开头的应用程序注册应用程序修订的权限:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:RegisterApplicationRevision" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:application:Test*" ] } ] }

示例 3:允许用户为单个部署组创建部署

以下示例允许指定用户为与名为 WordPress_App 的应用程序关联的名为 WordPress_DepGroup 的部署组、名为 ThreeQuartersHealthy 的自定义部署配置以及与名为 WordPress_App 的应用程序关联的任何应用程序修订创建部署。所有这些资源都与 us-west-2 区域关联。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:CreateDeployment" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetDeploymentConfig" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:deploymentconfig:ThreeQuartersHealthy" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetApplicationRevision" ], "Resource" : [ "arn:aws-cn:codedeploy:us-west-2:80398EXAMPLE:application:WordPress_App" ] } ] }