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

実行ロールの IAM ポリシー

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

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

IAM アクセス許可の境界

2018 年 12 月 6 日以降、プロジェクトを作成すると、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 プロジェクトがある場合は、プロジェクト内の 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 ロールをプロジェクトに追加する」を参照してください。