Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

CodePipeline、IAM アクセスアナライザー、AWS CloudFormation マクロを使用して、AWS アカウントの IAM ポリシーとロールを自動的に検証してデプロイする - AWS 規範ガイダンス

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

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

CodePipeline、IAM アクセスアナライザー、AWS CloudFormation マクロを使用して、AWS アカウントの IAM ポリシーとロールを自動的に検証してデプロイする

作成者: Helton ™eiro (AWS) と Guilherme Simoes (AWS)

概要

注意: AWS CodeCommit は、新規のお客様には利用できなくなりました。AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

このパターンでは、開発チームが Amazon Web Services (AWS)アカウントで AWS Identity and Access Management (IAM) のポリシーとロールを作成できるようにするデプロイパイプラインを作成するための手順を説明し、コードを提供します。このアプローチは、運用チームの負担を減らし、デプロイプロセスをスピードアップするのに役立ちます。また、デベロッパーが既存のガバナンスやセキュリティ統制と両立する IAM ロールやポリシーを作成するのにも役立ちます。

このパターンのアプローチでは、AWS Identity and Access Management アクセスアナライザーを使用して IAM ロールにアタッチしたい IAM ポリシーを検証し、AWS CloudFormation を使用して IAM ロールをデプロイします。ただし、開発チームは AWS CloudFormation テンプレートファイルを直接編集する代わりに、JSON 形式の IAM ポリシーとロールを作成します。AWS CloudFormation マクロは、デプロイを開始する前に、これらの JSON 形式のポリシーファイルを AWS CloudFormation IAM リソースタイプに変換します。

デプロイパイプライン (RolesPipeline) には、ソース、検証、デプロイの各段階があります。ソースステージでは、開発チームが IAM ロールとポリシーの定義を含む JSON ファイルを AWS CodeCommit リポジトリにプッシュします。次に、AWS CodeBuild はスクリプトを実行してそれらのファイルを検証し、Amazon Simple Storage Service (Amazon S3) バケットにコピーします。開発チームは別の S3 バケットに保存されている AWS CloudFormation テンプレートファイルに直接アクセスできないため、JSON ファイルの作成と検証のプロセスに従う必要があります。

最後に、デプロイフェーズ中に、AWS CodeDeploy は AWS CloudFormation スタックを使用して、アカウント内の IAM ポリシーとロールを更新または削除します。

重要

このパターンのワークフローは概念実証 (POC) であり、テスト環境でのみ使用することをお勧めします。このパターンのアプローチを本番環境で使用する場合は、IAM ドキュメントの「IAM でのセキュリティのベストプラクティス」を参照し、IAM ロールと AWS サービスに必要な変更を加えます。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • RolesPipeline パイプライン用の新規または既存の S3 バケット。使用しているアクセス認証情報に、このバケットにオブジェクトをアップロードする権限があることを確認してください。

  • インストールおよび設定済みの AWS コマンドラインインターフェイス (AWS CLI)。詳細については、AWS CLI ドキュメントの「AWS CLI の最新バージョンを使用してインストールまたは更新を行う」を参照してください。 

  • インストールおよび設定済みの AWS サーバーレスアプリケーションモデル (AWS SAM) CLI。詳細については、AWS SAM ドキュメントの「AWS SAM CLI のインストール」を参照してください。 

  • ローカルマシンで Python 3 をインストールします。詳細については、Python のドキュメントを参照してください。

  • インストールおよび設定済みの Git クライアント。

  • ローカルマシンにクローンされた GitHub IAM roles pipeline リポジトリ。 

  • JSON 形式の既存の IAM ポリシーとロール。詳細については、Github IAM roles pipeline リポジトリの ReadMe ファイルを参照してください。

  • 開発チームには、このソリューションの AWS CodePipeline、CodeBuild、および CodeDeploy リソースを編集する権限があってはなりません。

制限

  • このパターンのワークフローは概念実証 (POC) であり、テスト環境でのみ使用することをお勧めします。このパターンのアプローチを本番環境で使用する場合は、IAM ドキュメントの「IAM でのセキュリティのベストプラクティス」を参照し、IAM ロールと AWS サービスに必要な変更を加えます。

アーキテクチャ

次の図は、CodePipeline、IAM アクセスアナライザー、および AWS CloudFormation マクロを使用して IAM ロールとポリシーを自動的に検証してアカウントにデプロイする方法を示しています。

AWS アカウントで IAM ポリシーとロールを検証してデプロイする手順。

この図表は、次のワークフローを示しています:

  1. デベロッパーは IAM ポリシーとロールの定義を含む JSON ファイルを作成します。デベロッパーがコードを CodeCommit リポジトリにプッシュし、CodePipeline が RolesPipeline パイプラインを開始します。

  2. CodeBuild は IAM Access Analyzer を使用して JSON ファイルを検証します。セキュリティまたはエラー関連の検出結果がある場合、デプロイプロセスは停止されます。

  3. セキュリティまたはエラー関連の検出結果がない場合、JSON ファイルは RolesBucket S3 バケットに送信されます。

  4. 次に、AWS Lambda 関数として実装された AWS CloudFormation マクロが RolesBucket バケットから JSON ファイルを読み取り、それらを AWS CloudFormation IAM リソースタイプに変換します。

  5. 定義済みの AWS CloudFormation スタックは、アカウント内の IAM ポリシーとロールをインストール、更新、または削除します。 

自動化とスケール

このパターンを自動的にデプロイする AWS CloudFormation テンプレートは、GitHub IAM ロールのパイプラインリポジトリで提供されます。

ツール

  • AWS コマンドラインインターフェイス (AWS CLI)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。

  • AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

  • IAM Access Analyzer は、外部エンティティと共有されている組織およびアカウント (S3 バケットや IAM ロールなど) 内のリソースを識別するのに役立ちます。これは、リソースやデータへの意図しないアクセスを特定するのに役立ちます。

  • AWS サーバーレスアプリケーションモデル (AWS SAM) は、AWS クラウドでサーバーレスアプリケーションを構築するのに役立つオープンソースフレームワークです。

コード

このパターンのソースコードとテンプレートは、GitHub IAM roles pipeline リポジトリにあります。

エピック

タスク説明必要なスキル

サンプルリポジトリのクローンを作成します。

GitHub IAM roles pipeline リポジトリをローカルマシンにクローンします。

アプリ開発者、AWS 全般

リポジトリをクローンする

タスク説明必要なスキル

サンプルリポジトリのクローンを作成します。

GitHub IAM roles pipeline リポジトリをローカルマシンにクローンします。

アプリ開発者、AWS 全般
タスク説明必要なスキル

パイプラインをデプロイします。

  1. クローン作成されたリポジトリが含まれるディレクトリに移動します。

  2. 重要

    make deploy bucket=<bucket_name> コマンドを実行します。: を既存の S3 バケットのバケット名<bucket_name>に置き換える必要があります。

  3. aws codepipeline get-pipeline –name RolesPipeline コマンドを実行して、デプロイが成功したかどうかを確認します。

アプリ開発者、AWS 全般

パイプラインのリポジトリをクローンします。

  1. RolesPipeline AWS CloudFormation スタックは roles-pipeline-repo CodeCommit リポジトリを作成します。

  2. AWS マネジメントコンソールにサインインし、AWS CodeCommit コンソールを開き、CodeCommit リポジトリの URL をコピーしてローカルマシンに複製します。これに関する詳細については、AWS CodeCommit ドキュメントの「AWS CodeCommit リポジトリに接続する」を参照してください。

アプリ開発者、AWS 全般

RolesPipeline パイプラインをデプロイします。

タスク説明必要なスキル

パイプラインをデプロイします。

  1. クローン作成されたリポジトリが含まれるディレクトリに移動します。

  2. 重要

    make deploy bucket=<bucket_name> コマンドを実行します。: を既存の S3 バケットのバケット名<bucket_name>に置き換える必要があります。

  3. aws codepipeline get-pipeline –name RolesPipeline コマンドを実行して、デプロイが成功したかどうかを確認します。

アプリ開発者、AWS 全般

パイプラインのリポジトリをクローンします。

  1. RolesPipeline AWS CloudFormation スタックは roles-pipeline-repo CodeCommit リポジトリを作成します。

  2. AWS マネジメントコンソールにサインインし、AWS CodeCommit コンソールを開き、CodeCommit リポジトリの URL をコピーしてローカルマシンに複製します。これに関する詳細については、AWS CodeCommit ドキュメントの「AWS CodeCommit リポジトリに接続する」を参照してください。

アプリ開発者、AWS 全般
タスク説明必要なスキル

有効な IAM ポリシーとロールを使用して RoleSipeline パイプラインをテストします。

  1. IAM ポリシーとロールの JSON ファイルを作成します。GitHub IAM roles pipeline リポジトリの role-example ディレクトリにあるサンプルを使用できます。

  2. 重要

    IAM のポリシーとロールを必要な設定で定義します。: GitHub IAM roles pipelineリポジトリの ReadMe ファイルで説明されている形式に従ってください。

  3. 変更を roles-pipeline-repo CodeCommit リポジトリにプッシュします。

  4. RolesPipeline パイプラインの実装を検証します。

  5. IAM ポリシーとロールがアカウントに正しくデプロイされていることを確認します。

  6. IAM ポリシーまたはロールに関連するアクセス許可の境界があるかどうかを確認します。詳細については、IAM ドキュメントの IAM エンティティのアクセス許可の境界を参照してください。

アプリ開発者、AWS 全般

無効な IAM ポリシーとロールを使用して RoleSpipeline パイプラインをテストします。

  1. roles-pipeline-repo CodeCommit リポジトリを変更し、無効な IAM ロールまたはポリシーを含めてください。例えば、存在しないアクションや無効な IAM ポリシーバージョンを使用できます。

  2. パイプラインの実装を検証してください。IAM Access Analyzer は、無効な IAM ポリシーまたはロールを検出すると、検証段階でパイプラインを停止します。

アプリ開発者、AWS 全般

Roles/Pipeline パイプラインのテスト

タスク説明必要なスキル

有効な IAM ポリシーとロールを使用して RoleSipeline パイプラインをテストします。

  1. IAM ポリシーとロールの JSON ファイルを作成します。GitHub IAM roles pipeline リポジトリの role-example ディレクトリにあるサンプルを使用できます。

  2. 重要

    IAM のポリシーとロールを必要な設定で定義します。: GitHub IAM roles pipelineリポジトリの ReadMe ファイルで説明されている形式に従ってください。

  3. 変更を roles-pipeline-repo CodeCommit リポジトリにプッシュします。

  4. RolesPipeline パイプラインの実装を検証します。

  5. IAM ポリシーとロールがアカウントに正しくデプロイされていることを確認します。

  6. IAM ポリシーまたはロールに関連するアクセス許可の境界があるかどうかを確認します。詳細については、IAM ドキュメントの IAM エンティティのアクセス許可の境界を参照してください。

アプリ開発者、AWS 全般

無効な IAM ポリシーとロールを使用して RoleSpipeline パイプラインをテストします。

  1. roles-pipeline-repo CodeCommit リポジトリを変更し、無効な IAM ロールまたはポリシーを含めてください。例えば、存在しないアクションや無効な IAM ポリシーバージョンを使用できます。

  2. パイプラインの実装を検証してください。IAM Access Analyzer は、無効な IAM ポリシーまたはロールを検出すると、検証段階でパイプラインを停止します。

アプリ開発者、AWS 全般
タスク説明必要なスキル

クリーンアップの準備をします。

S3 バケットを空にしてから、destroy コマンドを実行します。

アプリ開発者、AWS 全般

RolesStack スタックを削除します。

  1. RolesPipeline パイプラインは IAM ポリシーとロールをデプロイする RolesStack AWS CloudFormation スタックを作成します。RolesPipeline パイプラインを削除する前に、このスタックを削除する必要があります。

  2. AWS マネジメントコンソールにサインインし、AWS CloudFormation コンソールを開きます。RolesStack スタックを選択して [削除] を選択します。

アプリ開発者、AWS 全般

RoleSipeline スタックを削除します。

RolesPipeline AWS CloudFormation スタックを削除するには、Github IAM roles pipeline リポジトリの ReadMe ファイルにある指示に従ってください。

アプリ開発者、AWS 全般

リソースのクリーンアップ

タスク説明必要なスキル

クリーンアップの準備をします。

S3 バケットを空にしてから、destroy コマンドを実行します。

アプリ開発者、AWS 全般

RolesStack スタックを削除します。

  1. RolesPipeline パイプラインは IAM ポリシーとロールをデプロイする RolesStack AWS CloudFormation スタックを作成します。RolesPipeline パイプラインを削除する前に、このスタックを削除する必要があります。

  2. AWS マネジメントコンソールにサインインし、AWS CloudFormation コンソールを開きます。RolesStack スタックを選択して [削除] を選択します。

アプリ開発者、AWS 全般

RoleSipeline スタックを削除します。

RolesPipeline AWS CloudFormation スタックを削除するには、Github IAM roles pipeline リポジトリの ReadMe ファイルにある指示に従ってください。

アプリ開発者、AWS 全般

関連リソース

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.