AWS CodeDeploy
ユーザーガイド (API バージョン 2014-10-06)

CodeDeploy でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) にアクセス許可ポリシーをアタッチし、それによって CodeDeploy リソースでオペレーションを実行するアクセス許可を付与する方法を示すアイデンティティベースのポリシーの例を示します。CodeDeploy を使用するために IAM ユーザーにアタッチする必要があるポリシーの詳細については、「ステップ 1: IAM ユーザーをプロビジョニングする」を参照してください。

重要

初めに、CodeDeploy リソースへのアクセスを管理するための基本概念と、使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「CodeDeploy リソースへのアクセス許可の管理の概要」を参照してください。

次のアクセス権限ポリシーの例では、us-west-2 リージョンのアプリケーション (WordPress_App) に関連付けられているデプロイグループ (WordPress_DepGroup) を削除することをユーザーに許可します。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:DeleteDeploymentGroup" ], "Resource" : [ "arn:aws: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

これらの最小限必要なアクセス権限よりも制限された IAMIAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。「CodeDeploy での AWS 管理 (事前定義) ポリシー」で説明されているとおり、ユーザーが CodeDeploy コンソールを使用できること、および、AWSCodeDeployReadOnlyAccess 管理対象ポリシーがユーザーにアタッチされていることを確認してください。

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 – Amazon EC2 インスタンスを Amazon EC2 タグまたは Amazon EC2 Auto Scaling グループ名で識別し、オンプレミスインスタンスをオンプレミスインスタンスタグで識別して、それぞれのインスタンスにアプリケーションリビジョンをデプロイすることを CodeDeploy に許可します。Amazon SNS トピックに通知を発行し、CloudWatch からアラームに関する情報を取得するために必要なアクセス権限を提供します。

     

  • [AWSCodeDeployRoleForLambda] – AWS Lambda やデプロイで必要な他のリソースにアクセスするための CodeDeploy アクセス許可を付与します。

     

  • [AWSCodeDeployRoleForECS] – Amazon ECS やデプロイで必要な他のリソースにアクセスするための CodeDeploy アクセス許可を付与します。

     

  • [AWSCodeDeployRoleForECSLimited] – Amazon ECS やデプロイで必要な他のリソースにアクセスするための CodeDeploy アクセス許可を付与します。以下は例外です。

デプロイプロセスの一部に対するアクセス権限は、IAM ユーザーではなく、CodeDeploy を代行する他の 2 つのロールタイプに付与されます。

  • 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 がサポートする通知では、deployments への重要な変更をユーザーに通知できます。CodeDeploy の 管理ポリシーには、通知機能用のポリシーステートメントが含まれています。詳細については、「通知とは」を参照してください。

フルアクセス管理ポリシーの通知に関連するアクセス許可

AWSCodeDeployFullAccess 管理ポリシーには、通知へのフルアクセスを許可する以下のステートメントが含まれています。この管理ポリシーが適用されたユーザーは、通知の Amazon SNS トピックの作成と管理、トピックに対するユーザーのサブスクライブとサブスクライブ解除、通知ルールのターゲットとして選択するトピックの一覧表示を行うこともできます。

{ "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" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "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" ], "Resource": "*" }

IAM および通知の詳細については、「AWS CodeStar Notifications の Identity and Access Management」を参照してください。

お客様が管理するポリシーの例

このセクションでは、さまざまな CodeDeploy アクションのアクセス権限を付与するユーザーポリシー例を示しています。これらのポリシーは、CodeDeploy API、AWS SDK、または 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:codedeploy:us-west-2:80398EXAMPLE:*" ] } ] }

例 2: ユーザーに 1 つのアプリケーションのリビジョンの登録を許可する

次の例では、us-west-2 リージョンの Test で始まるすべてのアプリケーションのアプリケーションリビジョンを登録するアクセス権限を付与します。

{ "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 リージョンに関連付けられています。

{ "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" ] } ] }

例 4: 起動テンプレートによって作成された Auto Scaling グループを使用したデプロイの作成をユーザーに許可する

次の例では、起動テンプレートを使用して作成された Auto Scaling グループを使用する Amazon EC2 デプロイを作成するためのアクセス権限を付与します。これらのアクセス権限は、「AWSCodeDeployRole」に記載されているアクセス権限に加えて必要になります。詳細については、「サービスロールを作成する」、「チュートリアル: CodeDeploy を使用して Amazon EC2 Auto Scaling グループにアプリケーションをデプロイする」、および「Auto Scaling グループの起動テンプレートの作成」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "ec2:RunInstance", "ec2:CreateTags" ], "Resource": "*" } ] }