翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
、IAMAccess Analyzer CodePipeline、および AWS CloudFormation マクロを使用して、 AWSアカウントにIAMポリシーとロールを自動的に検証してデプロイする
作成者: Helton Calceeiro (AWS) と Guilherme Simoes (AWS)
コードリポジトリ: IAM ロールパイプライン | 環境:PoC またはパイロット | テクノロジー: セキュリティ、アイデンティティ、コンプライアンス DevOps |
AWS サービス: AWS CloudFormation; AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AWS Lambda; AWS SAM |
[概要]
このパターンでは、ステップを説明し、開発チームが Amazon Web Services (IAM) AWSアカウントで AWS Identity and Access Management () ポリシーとロールを作成できるようにするデプロイパイプラインを作成するためのコードを提供します。このアプローチは、運用チームの負担を減らし、デプロイプロセスをスピードアップするのに役立ちます。また、デベロッパーが既存のガバナンスとセキュリティコントロールと互換性のあるIAMロールとポリシーを作成するのにも役立ちます。
このパターンのアプローチでは、AWSIdentity and Access Management Access Analyzer を使用して、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) がインストールされ、設定されています。詳細については、 AWSCLIAWSCLIドキュメントの「 のインストール、更新、アンインストール」を参照してください。
AWS サーバーレスアプリケーションモデル (AWS SAM)CLI、インストールおよび設定済み。詳細については、 AWSSAMAWSSAMドキュメントの「 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サービスに必要な変更を加えます。
アーキテクチャ
次の図は、、IAMAccess Analyzer CodePipeline、マクロを使用してIAMロールとポリシーを自動的に検証し、アカウントにデプロイする方法を示していますAWS CloudFormation 。
この図表は、次のワークフローを示しています:
開発者は、IAMポリシーとロールの定義を含むJSONファイルを書き込みます。デベロッパーはコードを CodeCommit リポジトリにプッシュ CodePipeline し、
RolesPipeline
パイプラインを開始します。CodeBuild は、Access Analyzer IAM を使用してJSONファイルを検証します。セキュリティまたはエラー関連の検出結果がある場合、デプロイプロセスは停止されます。
セキュリティまたはエラー関連の検出結果がない場合、JSONファイルは S3
RolesBucket
バケットに送信されます。次に、AWSLambda 関数として実装されたAWS CloudFormation マクロは、
RolesBucket
バケットからJSONファイルを読み取り、AWS CloudFormation IAMリソースタイプに変換します。事前定義されたAWS CloudFormation スタックは、アカウント内のIAMポリシーとロールをインストール、更新、または削除します。
自動化とスケール
AWS CloudFormation このパターンを自動的にデプロイする テンプレートは、 GitHub IAMロールパイプライン
ツール
AWS コマンドラインインターフェイス (AWS CLI) は、コマンドラインシェルのコマンドを通じて AWSサービスとやり取りするのに役立つオープンソースツールです。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を許可するかを制御することで、 AWSリソースへのアクセスを安全に管理するのに役立ちます。
IAM Access Analyzer は、外部エンティティと共有されている S3 バケットやIAMロールなど、組織やアカウント内のリソースを識別するのに役立ちます。これは、リソースやデータへの意図しないアクセスを特定するのに役立ちます。
AWS サーバーレスアプリケーションモデル (AWSSAM) は、 AWS クラウドでサーバーレスアプリケーションを構築するのに役立つオープンソースフレームワークです。
コード
このパターンのソースコードとテンプレートは、 GitHub IAMロールパイプライン
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
サンプルリポジトリのクローンを作成します。 | GitHub IAM ロールパイプライン | アプリ開発者、一般 AWS |
タスク | 説明 | 必要なスキル |
---|---|---|
パイプラインをデプロイします。 |
| アプリ開発者、一般 AWS |
パイプラインのリポジトリをクローンします。 |
| アプリ開発者、一般 AWS |
タスク | 説明 | 必要なスキル |
---|---|---|
有効なIAMポリシーとロールを使用して RolesPipeline パイプラインをテストします。 |
| アプリ開発者、一般 AWS |
無効なIAMポリシーとロールを使用して RolesPipeline パイプラインをテストします。 |
| アプリ開発者、一般 AWS |
タスク | 説明 | 必要なスキル |
---|---|---|
クリーンアップの準備をします。 | S3 バケットを空にしてから、 | アプリ開発者、一般 AWS |
RolesStack スタックを削除します。 |
| アプリ開発者、一般 AWS |
RolesPipeline スタックを削除します。 |
| アプリ開発者、一般 AWS |
関連リソース
IAM Access Analyzer - ポリシー検証
(AWS ニュースブログ) AWS CloudFormation マクロを使用してテンプレートでカスタム処理を実行する (AWS CloudFormation ドキュメント)
Python を使用した Lambda 関数の構築 (AWS Lambda ドキュメント)