AWS 的托管(预定义)策略 CodeDeploy - AWS CodeDeploy

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

的 AWS 托管策略列表 CodeDeploy

您可以将以下 AWS 托管策略附加到账户中的用户,这些策略特定于 CodeDeploy:

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

    注意

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

  • AWSCodeDeployDeployerAccess:授予注册和部署修订版的权限。

     

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

     

  • AWSCodeDeployRole: 允 CodeDeploy 许:

    • 读取您的实例上的标签或通过 Amazon A EC2 uto Scaling 组名识别您的亚马逊EC2实例

    • 读取、创建、更新和删除 Amazon A EC2 uto Scaling 群组、生命周期挂钩、扩展策略和温池功能

    • 向 Amazon SNS 主题发布信息

    • 检索有关 Amazon CloudWatch 警报的信息

    • 读取和更新 Elastic Load Balancing 服务中的资源

    策略包含以下代码:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction", "autoscaling:DeleteLifecycleHook", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeLifecycleHooks", "autoscaling:PutLifecycleHook", "autoscaling:RecordLifecycleActionHeartbeat", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags", "autoscaling:UpdateAutoScalingGroup", "autoscaling:EnableMetricsCollection", "autoscaling:DescribePolicies", "autoscaling:DescribeScheduledActions", "autoscaling:DescribeNotificationConfigurations", "autoscaling:SuspendProcesses", "autoscaling:ResumeProcesses", "autoscaling:AttachLoadBalancers", "autoscaling:AttachLoadBalancerTargetGroups", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:PutNotificationConfiguration", "autoscaling:DescribeScalingActivities", "autoscaling:DeleteAutoScalingGroup", "autoscaling:PutWarmPool", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:TerminateInstances", "tag:GetResources", "sns:Publish", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:DeregisterTargets" ], "Resource": "*" } ] }

     

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

     

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

     

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

    • 在该 AppSpec 文件的hooks部分中,只能使用名称以开头的 Lambda 函数。CodeDeployHook_有关更多信息,请参阅 AppSpec Amazon ECS 部署的 “挂钩” 部分

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

  • AmazonEC2RoleforAWSCodeDeployLimited:授 CodeDeploy 予获取和列出 CodeDeploy Amazon S3 存储桶中对象的权限。策略包含以下代码:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*/CodeDeploy/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } } } ] }

部署过程某些方面的权限被授予代表以下两个角色的另外两个角色类型 CodeDeploy:

  • IAM实例配置文件是您附加到您的 Amazon EC2 实例的IAM角色。此配置文件包括访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库所需的权限。有关更多信息,请参阅 步骤 4:为您的 Amazon IAM 实例创建EC2实例配置文件

  • 服务IAM角色是一种向 AWS 服务授予权限的角色,使其可以访问 AWS 资源。您附加到服务角色的策略决定了服务可以访问哪些 AWS 资源以及它可以对这些资源执行的操作。对于 CodeDeploy,服务角色用于以下用途:

    • 读取应用于实例的标签或与实例关联的 Amazon A EC2 uto Scaling 组名称。这样就可以 CodeDeploy 确定它可以将应用程序部署到的实例。

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

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

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

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

您还可以创建自定义IAM策略来授予 CodeDeploy操作和资源的权限。您将这些自定义策略附加到IAM角色,然后将角色分配给需要权限的用户或群组。

CodeDeploy 托管策略和通知

CodeDeploy 支持通知,可以将部署的重要更改通知用户。的托管策略 CodeDeploy 包括通知功能的策略声明。有关更多信息,请参阅什么是通知?

完全访问托管策略中的通知的相关权限

AWSCodeDeployFullAccess 托管策略包含以下语句,以允许对通知进行完全访问。应用了此托管策略的用户还可以创建和管理通知的 Amazon SNS 主题、为用户订阅和取消订阅主题、列出要选择作为通知规则目标的主题,以及列出为 Slack 配置的 AWS Chatbot 客户端。

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource", "codestar-notifications:ListEventTypes" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsChatbotAccess", "Effect": "Allow", "Action": [ "chatbot:DescribeSlackChannelConfigurations", "chatbot:ListMicrosoftTeamsChannelConfigurations" ], "Resource": "*" }

只读托管策略中的通知的相关权限

AWSCodeDeployReadOnlyAccess 托管策略包含以下语句,以允许对通知进行只读访问。应用此策略的用户可以查看资源的通知,但无法创建、管理或订阅这些通知。

{ "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Resource": "*" }

有关IAM和通知的更多信息,请参阅 Ident ity and Access Management AWS CodeStar 通知