AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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

重要

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

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

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

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

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

  • 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 策略的用户,控制台将无法按预期正常运行。为确保这些用户仍可使用 AWS CodeDeploy 控制台,同时向用户附加 AWSCodeDeployReadOnlyAccess 托管策略,请参阅适用于 AWS CodeDeploy 的 AWS 托管(预定义)策略

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

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

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

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

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

    注意

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

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

     

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

     

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

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

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

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

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

    • 要在实例上执行操作,蓝/绿部署中需要 Auto Scaling 组和 Elastic Load Balancing 负载均衡器。

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

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

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

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

客户托管策略示例

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

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

注意

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

示例

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

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

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

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

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

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

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

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

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