CodePipeline サービスロールを管理する - AWS CodePipeline

CodePipeline サービスロールを管理する

CodePipeline サービスロールは、パイプラインによって使用される AWS リソースへのアクセスをコントロールする 1 つ以上のポリシーで設定されています。このロールにさらにポリシーをアタッチする、ロールにアタッチされているポリシーを編集する、または AWS の他のサービスロールのポリシーを設定することができます。また、パイプラインへクロスアカウントアクセスを設定する際に、ポリシーをロールにアタッチすることもできます。

重要

ポリシーステートメントを変更するか、他のポリシーをロールにアタッチすると、パイプラインの動作が停止することがあります。CodePipeline のサービスロールは、必ず影響を理解した上で変更するようにしてください。パイプラインは、必ずサービスロールに変更を加えてからテストします。

注記

コンソールでは、2018 年 9 月より前に作成されたサービスロールは、oneClick_AWS-CodePipeline-Service_ID-Number という名前で作成されています。

2018 年 9 月以降に作成されたサービスロールは、サービスロール名の形式 AWSCodePipelineServiceRole-Region-Pipeline_Name を使用します。例えば、MyFirstPipeline という名前のパイプラインが eu-west-2 にある場合、コンソールはロールとポリシー AWSCodePipelineServiceRole-eu-west-2-MyFirstPipeline の名前を付けます。

CodePipeline のサービスロールポリシー

CodePipeline のサービスロールポリシーステートメントには、パイプラインを管理するための最小限必要なアクセス許可が含まれています。サービスロールのステートメントを編集して、使用していないリソースへのアクセスを削除または追加します。CodePipeline が各アクションに使用する最小限必要なアクセス許可については、適切なアクションリファレンスを参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowS3BucketAccess", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } }, { "Sid": "AllowS3ObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectVersion", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } } ] }
注記

ポリシーでは、ソースバケット内の S3 オブジェクトにタグがある場合、次のアクセス許可が必要です。

s3:PutObjectTagging s3:GetObjectTagging s3:GetObjectVersionTagging

CodePipeline サービスロールからアクセス許可を削除する

サービスロールのステートメントを編集して、使用していないリソースへのアクセスを削除します。例えば、いずれのパイプラインにも Elastic Beanstalk が含まれていない場合は、ポリシーステートメントを編集して Elastic Beanstalk リソースへのアクセスを許可するセクションを削除できます。

同様に、いずれのパイプラインにも CodeDeploy が含まれていない場合は、ポリシーステートメントを編集して CodeDeploy リソースへのアクセスを許可するセクションを削除できます。

{ "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetApplicationRevision", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:RegisterApplicationRevision" ], "Resource": "*", "Effect": "Allow" },

CodePipeline サービスロールにアクセス許可を追加する

サービスロールのポリシーステートメントは、パイプラインで使用する前に、デフォルトのサービスロールのポリシーステートメントに含まれていない AWS のサービス のアクセス許可で更新する必要があります。

これは、CodePipeline に AWS のサービス への対応が追加される前に、パイプラインで使用しているサービスロールが作成された場合に特に重要です。

以下の表は、他の AWS のサービス にサポートが追加された場合の例を示しています。

AWS のサービス CodePipeline のサポート日付
CodePipeline の呼び出しアクションのサポートが追加されました。「CodePipeline 呼び出しアクションのサービスロールポリシーのアクセス許可」を参照してください。 2025 年 3 月 14 日
EC2 アクションのサポートが追加されました。「EC2 デプロイアクションのサービスロールポリシーのアクセス許可」を参照してください。 2025 年 2 月 21 日
EKS アクションのサポートが追加されました。「サービスロールのポリシーのアクセス許可」を参照してください。 2025 年 2 月 20 日
Amazon Elastic Container Registry の ECRBuildAndPublish アクションのサポートが追加されました。「サービスロールのアクセス許可: ECRBuildAndPublish アクション」を参照してください。 2024 年 11 月 22 日
Amazon Inspector の InspectorScan アクションのサポートが追加されました。「サービスロールのアクセス許可: InspectorScan アクション」を参照してください。 2024 年 11 月 22 日
コマンドアクションのサポートが追加されました。「サービスロールのアクセス許可: コマンドアクション」を参照してください。 2024 年 10 月 3 日
CloudFormation アクションのサポートが追加されました。「サービスロールのアクセス許可: CloudFormationStackSet アクション」および「サービスロールのアクセス許可: CloudFormationStackInstances アクション」を参照してください。 2020 年 12 月 30 日
CodeCommit フルクローン出力アーティファクト形式のサポートが追加されました。「サービスロールのアクセス許可: CodeCommit アクション」を参照してください。 2020 年 11 月 11 日
CodeBuild のバッチビルドアクションのサポートが追加されました。「サービスロールのアクセス許可: CodeCommit アクション」を参照してください。 2020 年 7 月 30 日
AWS AppConfig アクションのサポートが追加されました。「サービスロールのアクセス許可: AppConfig アクション」を参照してください。 2020年6月22日
AWS Step Functions アクションのサポートが追加されました。「サービスロールのアクセス許可: StepFunctions アクション」を参照してください。 2020 年 5 月 27 日
AWS CodeStar Connections アクションのサポートが追加されました。「サービスロールのアクセス許可: CodeConnections アクション」を参照してください。 2019 年 12 月 18 日
S3 デプロイアクションのサポートが追加されました。「サービスロールのアクセス許可: S3 デプロイアクション」を参照してください。 2019 年 1 月 16 日
CodeDeployToECS アクションのサポートが追加されました。「サービスロールのアクセス許可: CodeDeployToECS アクション」を参照してください。 2018 年 11 月 27 日
Amazon ECR アクションのサポートが追加されました。「サービスロールのアクセス許可: Amazon ECR アクション」を参照してください。 2018 年 11 月 27 日
Service Catalog アクションのサポートが追加されました。「サービスロールのアクセス許可: Service Catalog アクション」を参照してください。 2018 年 10 月 16 日
AWS Device Farm アクションのサポートが追加されました。「サービスロールのアクセス許可: AWS Device Farm アクション」を参照してください。 2018 年 7 月 19 日
Amazon ECS アクションのサポートが追加されました。「サービスロールのアクセス許可: Amazon ECS 標準アクション」を参照してください。 2017 年 12 月 12 日 / 2017 年 7 月 21 日から開始されたタグ付け承認のオプトインのための更新
CodeCommit アクションのサポートが追加されました。「サービスロールのアクセス許可: CodeCommit アクション」を参照してください。 2016 年 4 月 18 日
AWS OpsWorks アクションのサポートが追加されました。「サービスロールのアクセス許可: AWS OpsWorks アクション」を参照してください。 2016 年 6 月 2 日
CloudFormation アクションのサポートが追加されました。「サービスロールのアクセス許可: CloudFormation アクション」を参照してください。 2016 年 11 月 3 日
AWS CodeBuild アクションのサポートが追加されました。「サービスロールのアクセス許可: CodeBuild アクション」を参照してください。 2016 年 12 月 1 日
Elastic Beanstalk アクションのサポートが追加されました。「サービスロールのアクセス許可: ElasticBeanstalk のデプロイアクション」を参照してください。 初回サービス起動
CodeDeploy アクションのサポートが追加されました。「サービスロールのアクセス許可: AWS CodeDeploy アクション」を参照してください。 初回サービス起動
S3 ソースアクションのサポートが追加されました。「サービスロールのアクセス許可: S3 ソースアクション」を参照してください。 初回サービス起動

サポートされているサービスのアクセス許可を追加するには、次の手順に従います。

  1. AWS マネジメントコンソール にサインインして、IAM コンソール https://console.aws.amazon.com/iam/ を開きます。

  2. IAM コンソールのナビゲーションペインで、[ロール] を選択し、ロールのリストから AWS-CodePipeline-Service ロール を選択します。

  3. [アクセス権限] タブの [インラインポリシー] で、サービスロールポリシーの列の [ポリシーの編集] を選択します。

  4. [Policy Document] ボックスに必要なアクセス許可を追加します。

    注記

    IAM ポリシーを作成するとき、最小限の特権を認めるという標準的なセキュリティアドバイスに従いましょう。そうすれば、タスクを実行するというリクエストのアクセス許可のみを認めることができます。一部の API コールはリソースベースのアクセス許可をサポートしており、アクセスを制限できます。たとえば、この場合、DescribeTasks および ListTasks を呼び出す際のアクセス許可を制限するために、ワイルドカード文字 (*) をリソース ARN またはワイルドカード文字 (*) を含むリソース ARN に置き換えることができます。最小権限アクセスを付与するポリシーの作成の詳細については、 、 を参照してくださいhttps://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege

  5. [Review policy] (ポリシーの確認) を選択して、ポリシーにエラーがないことを確認します。ポリシーにエラーがなければ、ポリシーの適用 を選択します。