

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

# CodePipeline、IAM アクセスアナライザー、AWS CloudFormation マクロを使用して、IAM ポリシーとロールを自動的に検証してデプロイする
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros"></a>

*Helton ribeiro、Guilherme Simoes (Amazon Web Services)*

## 概要
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-summary"></a>

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

このパターンのアプローチでは、[AWS Identity and Access Management アクセスアナライザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)を使用して 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 でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照し、IAM ロールと AWS サービスに必要な変更を加えます。

## 前提条件と制限事項
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ `RolesPipeline` パイプライン用の新規または既存の S3 バケット。使用しているアクセス認証情報に、このバケットにオブジェクトをアップロードする権限があることを確認してください。
+ インストールおよび設定済みの AWS コマンドラインインターフェイス (AWS CLI)。詳細については、AWS CLI ドキュメントの「[AWS CLI の最新バージョンを使用してインストールまたは更新を行う](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。 
+ インストールおよび設定済みの AWS サーバーレスアプリケーションモデル (AWS SAM) CLI。詳細については、AWS SAM ドキュメントの「[AWS SAM CLI のインストール](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)」を参照してください。 
+ ローカルマシンで Python 3 をインストールします。詳細については、[Python のドキュメント](https://www.python.org/)を参照してください。
+ インストールおよび設定済みの Git クライアント。
+ ローカルマシンにクローンされた GitHub `IAM roles pipeline` リポジトリ。 
+ JSON 形式の既存の IAM ポリシーとロール。詳細については、Github `IAM roles pipeline` リポジトリの [ReadMe](https://github.com/aws-samples/iam-roles-pipeline/blob/main/README.md) ファイルを参照してください。
+ 開発チームには、このソリューションの AWS CodePipeline、CodeBuild、および CodeDeploy リソースを編集する権限があってはなりません。

**制限**
+ このパターンのワークフローは概念実証 (POC) であり、テスト環境でのみ使用することをお勧めします。このパターンのアプローチを本番環境で使用する場合は、IAM ドキュメントの「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照し、IAM ロールと AWS サービスに必要な変更を加えます。

## アーキテクチャ
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-architecture"></a>

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

![\[AWS アカウントの IAM ポリシーとロールを検証してデプロイする手順。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/df1add4d-f211-43e3-8976-5314da75f627/images/832bebaf-27a0-4949-9c30-99fc4c9982b8.png)


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

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

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

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

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

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

**自動化とスケール**

このパターンを自動的にデプロイする AWS CloudFormation テンプレートは、GitHub [IAM](https://github.com/aws-samples/iam-roles-pipeline) ロールのパイプラインリポジトリで提供されます。

## ツール
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-tools"></a>
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) は、外部エンティティと共有されている組織およびアカウント (S3 バケットや IAM ロールなど) 内のリソースを識別するのに役立ちます。これは、リソースやデータへの意図しないアクセスを特定するのに役立ちます。
+ [AWS サーバーレスアプリケーションモデル (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) は、AWS クラウドでサーバーレスアプリケーションを構築するのに役立つオープンソースフレームワークです。

**コード**

このパターンのソースコードとテンプレートは、GitHub [IAM roles pipeline](https://github.com/aws-samples/iam-roles-pipeline) リポジトリにあります。

## エピック
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-epics"></a>

### リポジトリをクローンする
<a name="clone-the-repository"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  サンプルリポジトリのクローンを作成します。 | GitHub [IAM roles pipeline](https://github.com/aws-samples/iam-roles-pipeline) リポジトリをローカルマシンにクローンします。 | アプリ開発者、AWS 全般 | 

### RolesPipeline パイプラインをデプロイします。
<a name="deploy-the-rolespipeline-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| パイプラインをデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.html) | アプリ開発者、AWS 全般 | 
| パイプラインのリポジトリをクローンします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.html) | アプリ開発者、AWS 全般 | 

### Roles/Pipeline パイプラインのテスト
<a name="test-the-rolespipeline-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 有効な IAM ポリシーとロールを使用して RoleSipeline パイプラインをテストします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.html) | アプリ開発者、AWS 全般 | 
| 無効な IAM ポリシーとロールを使用して RoleSpipeline パイプラインをテストします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.html) | アプリ開発者、AWS 全般 | 

### リソースのクリーンアップ
<a name="clean-up-your-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| クリーンアップの準備をします。 | S3 バケットを空にしてから、`destroy` コマンドを実行します。 | アプリ開発者、AWS 全般 | 
| RolesStack スタックを削除します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.html) | アプリ開発者、AWS 全般 | 
| RoleSipeline スタックを削除します。 | `RolesPipeline` AWS CloudFormation スタックを削除するには、Github `IAM roles pipeline` リポジトリの [ReadMe](https://github.com/aws-samples/iam-roles-pipeline/blob/main/README.md) ファイルにある指示に従ってください。 | アプリ開発者、AWS 全般 | 

## 関連リソース
<a name="automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros-resources"></a>
+ [IAM Access Analyzer - Policy validation](https://aws.amazon.com/blogs/aws/iam-access-analyzer-update-policy-validation/) (AWS ニュースブログ)
+ [AWS CloudFormation マクロを使用したテンプレートのカスタム処理の実行](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) (AWS CloudFormation ドキュメント)
+ [Python による Lambda 関数の構築](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) (AWS Lambda ドキュメント)