AWS CodeStar プロジェクトレベルのポリシーとアクセス許可 - AWS CodeStar

2024 年 7 月 31 日に、Amazon Web Services (AWS) は AWS CodeStar プロジェクトの作成と表示のサポートを終了します。2024 年 7 月 31 日以降、 AWS CodeStar コンソールにアクセスしたり、新しいプロジェクトを作成したりできなくなります。ただし、ソースリポジトリ AWS CodeStar、パイプライン、ビルドなど、 によって作成された AWS リソースは、この変更の影響を受けず、引き続き機能します。 AWS CodeStar 接続と AWS CodeStar 通知は、この中止の影響を受けません。

 

作業の追跡、コードの開発、アプリケーションの構築、テスト、デプロイを行う場合、Amazon CodeCatalyst は効率的な開始プロセスと、ソフトウェアプロジェクトを管理するための追加機能を提供します。Amazon の機能https://codecatalyst.aws/exploreおよび料金の詳細をご覧ください CodeCatalyst。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CodeStar プロジェクトレベルのポリシーとアクセス許可

プロジェクトを作成すると、 はプロジェクトリソースの管理に必要なIAMロールとポリシー AWS CodeStar を作成します。ポリシーは 3 つのカテゴリに分類されます:

  • IAM プロジェクトチームメンバー向けの ポリシー。

  • IAM ワーカーロールの ポリシー。

  • IAM ランタイム実行ロールの ポリシー。

IAM チームメンバーのポリシー

プロジェクトを作成すると、 は、プロジェクトへの所有者、寄稿者、閲覧者アクセス用に 3 つのカスタマー管理ポリシー AWS CodeStar を作成します。すべての AWS CodeStar プロジェクトには、これら 3 つのアクセスレベルのIAMポリシーが含まれています。これらのアクセスレベルはプロジェクト固有であり、標準名を持つ IAMマネージドポリシーで定義されます。ここで、project-id は AWS CodeStar プロジェクトの ID (例:my-first-projec):

  • CodeStar_project-id_Owner

  • CodeStar_project-id_Contributor

  • CodeStar_project-id_Viewer

重要

これらのポリシーは、 によって変更される可能性があります AWS CodeStar。手動では編集しないでください。アクセス許可を追加または変更する場合は、IAMユーザーに追加のポリシーをアタッチします。

チームメンバー (IAM ユーザー) をプロジェクトに追加してアクセスレベルを選択すると、対応するポリシーがIAMユーザーにアタッチされ、プロジェクトリソースを操作するための適切なアクセス許可のセットがユーザーに付与されます。ほとんどの場合、 でポリシーやアクセス許可を直接アタッチまたは管理する必要はありませんIAM。 AWS CodeStar アクセスレベルポリシーをIAMユーザーに手動でアタッチすることはお勧めしません。どうしても必要な場合は、 AWS CodeStar アクセスレベルポリシーの補足として、独自の管理ポリシーまたはインラインポリシーを作成して、独自のレベルのアクセス許可をIAMユーザーに適用できます。

ポリシーの対象は、厳密にプロジェクトのリソースと特定のアクションになります。インフラストラクチャスタックに新しいリソースが追加されると、サポートされているリソースタイプの 1 AWS CodeStar つである場合、 は、新しいリソースへのアクセス許可を含めるようにチームメンバーポリシーを更新しようとします。

注記

AWS CodeStar プロジェクトのアクセスレベルのポリシーは、そのプロジェクトにのみ適用されます。これにより、ユーザーは自分のロールによって決定されるレベルで、アクセス許可を持つ AWS CodeStar プロジェクトのみを表示して操作できます。 AWS CodeStar プロジェクトを作成するユーザーのみが、プロジェクトに関係なく、すべての AWS CodeStar リソースへのアクセスを許可するポリシーを適用する必要があります。

アクセスレベルポリシーはすべて、 AWS CodeStar アクセスレベルが関連付けられているプロジェクトに関連付けられた AWS リソースによって異なります。他の AWS サービスとは異なり、これらのポリシーは、プロジェクトのリソースの変更に応じてプロジェクトが作成および更新されたときにカスタマイズされます。したがって、正規の所有者、寄稿者、閲覧者の管理ポリシーはありません。

AWS CodeStar 所有者ロールポリシー

CodeStar_project-id_Owner カスタマー管理ポリシーでは、ユーザーは制限なしで AWS CodeStar プロジェクト内のすべてのアクションを実行できます。これは、ユーザーがチームメンバーを追加または削除することを許可する唯一のポリシーです。ポリシーの内容は、プロジェクトに関連付けられたリソースによって異なります。例については、「AWS CodeStar 所有者ロールポリシー」を参照してください。

このポリシーを持つIAMユーザーは、プロジェクト内のすべての AWS CodeStar アクションを実行できますが、AWSCodeStarFullAccessポリシーを持つIAMユーザーとは異なり、ユーザーはプロジェクトを作成できません。アクセスcodestar:*許可の範囲は、特定のリソース (その AWS CodeStar プロジェクト ID に関連付けられたプロジェクト) に限定されます。

AWS CodeStar 寄稿者ロールポリシー

CodeStar_project-id_Contributor カスタマー管理ポリシーは、プロジェクトに投稿してプロジェクトダッシュボードを変更することをユーザーに許可しますが、チームメンバーを追加または削除することは許可しません。ポリシーの内容は、プロジェクトに関連付けられたリソースによって異なります。例については、「AWS CodeStar 寄稿者のロールポリシー」を参照してください。

AWS CodeStar ビューワーロールポリシー

CodeStar_project-id_Viewer カスタマー管理ポリシーは、 AWS CodeStar内のプロジェクトを表示することをユーザーに許可しますが、リソースを変更したり、チームメンバーを追加または削除することは許可しません。ポリシーの内容は、プロジェクトに関連付けられたリソースによって異なります。例については、「AWS CodeStar ビューワーロールポリシー 」を参照してください。

IAM ワーカーロールのポリシー

2018 年 12 月 6 日以降に AWS CodeStar プロジェクトを作成すると、 AWS CodeStar は PDT2 つのワーカーロール CodeStar-project-id-ToolChainと を作成しますCodeStar-project-id-CloudFormation。ワーカーロールは、 がサービスに渡すために AWS CodeStar 作成するプロジェクト固有のIAMロールです。これにより、サービスがリソースを作成し、 AWS CodeStar プロジェクトのコンテキストでアクションを実行できるようにアクセス許可が付与されます。ツールチェーンワーカーロールには、、 CodeBuild CodeDeploy、 などのツールチェーンサービスとの信頼関係が確立されています CodePipeline。プロジェクトのチームメンバー (所有者と寄稿者) には、信頼されたダウンストリームサービスにワーカーロールを渡すためのアクセス権が付与されます。このロールのインラインポリシーステートメントの例については、「AWS CodeStar ツールチェーンワーカーロールポリシー (2018 年 12 月 6 日以降PDT)」を参照してください。

CloudFormation ワーカーロールには AWS CloudFormation、 でサポートされている選択したリソースのアクセス許可と、アプリケーションスタックにIAMユーザー、ロール、ポリシーを作成するアクセス許可が含まれます。また、 との信頼関係も確立されています AWS CloudFormation。権限のエスカレーションと破壊的アクションのリスクを軽減するために、 AWS CloudFormation ロールポリシーには、インフラストラクチャスタックで作成されたすべてのIAMエンティティ (ユーザーまたはロール) にプロジェクト固有のアクセス許可の境界を要求する条件が含まれています。このロールのインラインポリシーステートメントの例については、「AWS CloudFormation ワーカーロールポリシー」を参照してください。

2018 年 12 月 6 日より前に作成されたAWS CodeStar プロジェクトでは、 CodePipeline、 CodeBuild、 CloudWatch イベントなどのツールチェーンリソースの個々のワーカーロールPDT AWS CodeStar を作成し、限られたリソースセット AWS CloudFormation をサポートする のワーカーロールも作成します。これらの各ロールには、対応するサービスとの間で確立された信頼関係があります。プロジェクトのチームメンバー (所有者、寄稿者) および他の一部のワーカーロールには、信頼されたダウンストリームサービスにロールを渡すためのアクセス権が付与されます。ワーカーロールのアクセス許可は、一連のプロジェクトリソースでロールが実行できる基本的なアクションのセットまで制限されたインラインポリシーで定義されます。これらのアクセス権限は静的です。作成時にプロジェクトに含まれるリソースへのアクセス許可が含まれますが、プロジェクトに新しいリソースが追加されるときに更新されません。これらのポリシーステートメントの例については、以下を参照してください:

IAM 実行ロールのポリシー

2018 年 12 月 6 日以降に作成されたプロジェクトの場合、 PDTAWS CodeStar はアプリケーションスタックにサンプルプロジェクトの汎用実行ロールを作成します。このロールは、アクセス許可の境界ポリシーを使用してプロジェクトリソースに制限されます。サンプルプロジェクトを拡張すると、追加のIAMロールを作成できます。 AWS CloudFormation ロールポリシーでは、権限のエスカレーションを避けるために、アクセス許可の境界を使用してこれらのロールの範囲を絞り込む必要があります。詳細については、「IAM ロールをプロジェクトに追加する」を参照してください。

2018 年 12 月 6 日より前に作成された Lambda プロジェクトの場合、 はPDT、プロジェクト AWS SAM スタック内のリソースを操作するアクセス許可を持つインラインポリシーがアタッチされた Lambda 実行ロール AWS CodeStar を作成します。新しいリソースがSAMテンプレートに追加されると、サポートされているリソースタイプの 1 つである場合、 は Lambda 実行ロールポリシーを更新 AWS CodeStar して新しいリソースへのアクセス許可を含めます。

IAM アクセス権限の境界

2018 年 12 月 6 日以降、プロジェクトを作成するとPDT、カスタマー管理ポリシーAWS CodeStar が作成され、そのポリシーがプロジェクトのIAMロールにアクセスIAM許可の境界として割り当てられます。AWS CodeStar では、アプリケーションスタックで作成されたすべてのIAMエンティティに許可の境界が必要です。アクセス許可の境界により、ロールが持つことができる最大アクセス許可が管理されますが、アクセス許可を持つロールは提供されません。アクセス許可ポリシーにより、ロールのアクセス許可が定義されます。つまり、どれだけ多くのアクセス許可がロールに追加されても、そのロールを使用するすべてのユーザーは、アクセス許可の境界に含まれている以上のアクションを実行することはできません。アクセス許可ポリシーとアクセス許可の境界がどのように評価されるかについては、「 ユーザーガイド」の「ポリシー評価ロジックIAM」を参照してください。

AWS CodeStar は、プロジェクト固有のアクセス許可の境界を使用して、プロジェクト外のリソースへの権限のエスカレーションを防ぎます。アクセスAWS CodeStar 許可の境界には、プロジェクトリソースARNsの が含まれます。このポリシーステートメントの例については、「AWS CodeStar アクセス許可の境界ポリシー」を参照してください。

AWS CodeStar 変換は、サポートされているリソースをアプリケーションスタック () を介してプロジェクトに追加または削除するときに、このポリシーを更新しますtemplate.yml

既存のプロジェクトにアクセスIAM許可の境界を追加する

2018 年 12 月 6 日より前にAWS CodeStar 作成されたプロジェクトPDTがある場合は、プロジェクト内のIAMロールに手動でアクセス許可の境界を追加する必要があります。ベストプラクティスとして、プロジェクトのリソースのみを含むプロジェクト固有の境界を使用し、プロジェクト外部のリソースへの特権のエスカレーションを回避することをお勧めします。プロジェクトの進化に合わせて更新されるAWS CodeStar 管理アクセス許可の境界を使用するには、次の手順に従います。

  1. AWS CloudFormation コンソールにサインインし、プロジェクト内のツールチェーンスタックのテンプレートを見つけます。このテンプレートは awscodestar-project-id という名前です。

  2. このテンプレートを選択し、[Actions] (アクション) を選択して、[View/Edit template in Designer] (デザイナーでテンプレートを表示/編集) を選択します。

  3. [Resources] セクションを見つけ、セクションの上部にある次のスニペットを含めます。

    PermissionsBoundaryPolicy: Description: Creating an IAM managed policy for defining the permissions boundary for an AWS CodeStar project Type: AWS::IAM::ManagedPolicy Properties: ManagedPolicyName: !Sub 'CodeStar_${ProjectId }_PermissionsBoundary' Description: 'IAM policy to define the permissions boundary for IAM entities created in an AWS CodeStar project' PolicyDocument: Version: '2012-10-17' Statement: - Sid: '1' Effect: Allow Action: ['*'] Resource: - !Sub 'arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:stack/awscodestar-${ProjectId}-*'

    AWS CloudFormation コンソールからスタックを更新するには、追加のIAMアクセス許可が必要になる場合があります。

  4. (オプション) アプリケーション固有のIAMロールを作成する場合は、このステップを完了します。IAM コンソールから、プロジェクトの AWS CloudFormation ロールにアタッチされているインラインポリシーを更新して、次のスニペットを含めます。ポリシーを更新するには、追加のIAMリソースが必要になる場合があります。

    { "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::{AccountId}:role/CodeStar-{ProjectId}*", "Effect": "Allow" }, { "Action": [ "iam:CreateServiceLinkedRole", "iam:GetRole", "iam:DeleteRole", "iam:DeleteUser" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:AttachRolePolicy", "iam:AttachUserPolicy", "iam:CreateRole", "iam:CreateUser", "iam:DeleteRolePolicy", "iam:DeleteUserPolicy", "iam:DetachUserPolicy", "iam:DetachRolePolicy", "iam:PutUserPermissionsBoundary", "iam:PutRolePermissionsBoundary" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::{AccountId}:policy/CodeStar_{ProjectId}_PermissionsBoundary" } }, "Effect": "Allow" }
  5. が適切なアクセス許可でアクセス許可の境界AWS CodeStar を更新するように、プロジェクトパイプラインを通じて変更をプッシュします。

詳細については、「IAM ロールをプロジェクトに追加する」を参照してください。