Enterprise Blueprint Factory コンポーネント - AWS 規範ガイダンス

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

Enterprise Blueprint Factory コンポーネント

Enterprise Blueprint Factory は、次のコンポーネントで構成されています。

  • 製品リポジトリ – ブループリントを保存するリポジトリ。

  • 設定リポジトリ – AWS Service Catalog ポートフォリオと製品を定義する設定ファイルを保存するリポジトリ。

  • 設定ファイル ­ – 使用可能なブループリント、使用できるユーザー、使用方法を定義する設定ファイル。

  • 設定パイプライン – Service Catalog ポートフォリオとポートフォリオ共有をセットアップし、各製品のリリースパイプラインを作成する DevOps CI/CD パイプライン。

  • リリースパイプライン – ブループリントを Service Catalog 製品としてリリースする DevOps CI/CD パイプライン。 

クラウドインフラストラクチャチームは、通常、エンタープライズブループリントファクトリー全体を管理します。これは、各ブループリントを承認する必要があるためです。ただし、DevOps コードチームは通常、設定パイプラインとリリースパイプラインを担当します。新しいブループリントをリリースするために、デベロッパーは製品リポジトリ、設定リポジトリ、および設定ファイルとのみやり取りします。

製品リポジトリ

製品リポジトリは、組織が承認する設計図を保存する一元的な場所です。 設計図管理チームとセキュリティチームは、このリポジトリへのプルリクエストを確認して、各設計図が組織およびセキュリティ要件を満たしていることを確認します。このガイドでは、リポジトリに GitHub を使用しますが、別の方法を使用することもできます。

設定リポジトリ

設定リポジトリ (設定リポジトリ) は、組織が Enterprise Blueprint Factory を通じてリリースされた Service Catalog ポートフォリオと製品の設定ファイルを保存する場所です。このガイドでは、リポジトリに GitHub を使用しますが、別の方法を使用することもできます。

設定ファイル

Enterprise Blueprint Factory 設定ファイル (設定ファイル) は、設計図管理チームが所有する設定リポジトリに保存されます。このファイルの名前は bp_config.yml です。開発者がこのファイルを更新すると、ブループリント管理チームが変更を確認します。変更をメインブランチにマージすると、設定パイプラインが開始されます。設定ファイルは、Enterprise Blueprint Factory を通じて管理されるすべてのブループリントの公開、共有、配布を調整します。

設定ファイルは、 portfoliosと の 2 つのメインオブジェクトで構成される YAML ファイルですproducts。以下は、サンプル設定ファイルの例です。

portfolios: - portfolio_name: blueprint-portfolio owner: Blueprint-team provider_name: AWS description: "Blueprint portfolio" portfolio_access_role: - arn:aws:iam::123456789012:role/examplerole - arn:aws:iam::123456789012:user/exampleuser share_to_ou: - org_id: "o-exampleOrgID" stack_tags: DataClassification: Confidential Organization: AWS products: - name: BP-S3-Product description: "Blueprint for BP-S3 product" product_config_file: 'BP-S3/product_config.json' owner: Blueprint-team stack_tags: DataClassification: Confidential Organization: AWS portfolio_associations: - blueprint-portfolio launch_constraint_role: arn:aws:iam::123456789012:role/examplelaunchrole

portfolios オブジェクトで、ターゲット Service Catalog ポートフォリオを定義します。ポートフォリオごとに、次の属性を指定します。

  • portfolio_name はポートフォリオの名前です。この属性は必須です。

  • owner は、ポートフォリオを所有するチームの名前です。この属性はオプションです。

  • provider_name は、ポートフォリオを管理するチームまたは組織の名前です。デフォルト値は AWS です。この属性は必須です。

  • description はポートフォリオの簡単な説明です。この属性はオプションです。

  • portfolio_access_roles は、ポートフォリオとその関連製品へのアクセスが許可されている AWS Identity and Access Management (IAM) ID (ユーザー、ロール、またはグループ) です。この属性はオプションです。

  • share_to_ou は、ポートフォリオが共有 AWS Organizations されている の組織単位 (OU) です。エンドユーザーは、ターゲット OU のメンバー AWS アカウント である にこのポートフォリオの製品をデプロイできます。この属性はオプションです。

  • stack_tags は、ポートフォリオに適用されるタグです。この属性はオプションです。

products オブジェクトでは、Service Catalog で製品としてリリースする各ブループリントを定義します。製品ごとに、次の属性を指定します。

  • name は、Service Catalog の製品の名前です。この属性は必須です。

  • description は、製品の簡単な説明です。この属性は必須です。

  • product_config_file は、製品リポジトリに保存されているブループリント製品設定ファイルの名前です。この属性は必須です。

  • owner は、製品を所有するチームの名前です。この属性は必須です。

  • stack_tags は、製品に適用されるタグです。この属性はオプションです。

  • portfolio_associations は、製品を含むターゲットポートフォリオです。この属性はオプションです。

    注記

    Enterprise Blueprint Factory で管理されているポートフォリオにのみ製品を追加することをお勧めします。Enterprise Blueprint Factory で管理されていないポートフォリオに製品を追加する場合は、ユーザーの IAM ポリシーで AssociateProductWithPortfolio アクションを許可する必要があります。ただし、セキュリティのベストプラクティスとして、このアクションは Enterprise Blueprint Factory 設定パイプラインにのみ許可することをお勧めします。

  • launch_constraint_role は、エンドユーザーが製品を起動するときに Service Catalog が引き受ける起動ロールです。この属性は必須です。

設定パイプライン

設定パイプライン (設定パイプライン) は、Service Catalog ポートフォリオとポートフォリオ共有の設定を自動化します。また、各製品のリリースパイプラインも作成されます。このパイプラインは AWS CodePipelineリソースです。設定ファイルを更新すると、設定パイプラインが呼び出されます。

設定パイプラインを初めて呼び出すと、設定ファイルで定義されていない 2 つの追加のポートフォリオが作成されます。

  • Blueprint-portfolio – Enterprise Blueprint Factory を通じてデプロイするすべての製品が、このポートフォリオに追加されます。このポートフォリオは、設定ファイルで指定した IAM プリンシパルと組織単位で使用できます。

  • Bootstrapping-Admin-PortfolioBootstrapping-Admin-Product製品はこのポートフォリオに関連付けられています。この製品は、リリースパイプライン用の CloudFormation テンプレートです。ブループリント管理チームのみがこのポートフォリオにアクセスして、管理製品を管理できるようにします。

設定パイプラインステージ

次の図は、設定パイプラインのステージと、パイプラインがやり取りするリソースを示しています。パイプラインの各ステージは AWS CodeBuildプロジェクトです。

Enterprise Blueprint Factory 設定パイプラインのステージ。

設定パイプラインのステージは次のとおりです。

  1. ポートフォリオのデプロイ – 設定パイプラインは、設定ファイルに追加されたポートフォリオをデプロイするか、設定ファイルから削除されたポートフォリオを削除します。ポートフォリオに変更がない場合、パイプラインはこのステージをスキップします。

  2. ポートフォリオの共有 – 設定パイプラインは、ポートフォリオをターゲット組織単位 (OUs。ポートフォリオ共有に変更がない場合、パイプラインはこのステージをスキップします。

  3. Blueprint-Admin-Bootstrapping-Product – 設定パイプラインはServiceCatalog-CodeRepo、リポジトリからbp-pipeline ブループリントを取得し、 として Service Catalog にデプロイしますBootstrapping-Admin-Product この製品は、リリースパイプラインの作成に使用される CloudFormation テンプレートです。このテンプレートを Service Catalog 製品 としてデプロイすると、バージョン管理の維持に役立ちます。bp-pipeline ブループリントに変更がない場合、パイプラインはこのステージをスキップします。

  4. リリースパイプラインの作成 – 設定ファイルの製品属性に基づいて、設定パイプラインはスタックパラメータを準備し、製品のリリースパイプラインを作成する CloudFormation スタックを起動します。詳細については、このガイドの「リリースパイプライン」を参照してください。

  5. 製品のデプロイ – リリースパイプラインは、設計図を Service Catalog 製品としてデプロイし、ターゲットポートフォリオに関連付けます。エンドユーザーは、ターゲット OU のメンバー AWS アカウント である製品を にデプロイできるようになりました。

リリースパイプライン

リリースパイプラインは、Service Catalog 製品としてのブループリントのリリースを自動化します。このパイプラインは AWS CodePipelineリソースです。組織が新しいブループリントをリリースする場合、開発者は IaC テンプレートとその製品設定ファイルを製品リポジトリにアップロードします。製品の詳細を設定ファイルに追加すると、設定パイプラインがトリガーされます。設定パイプラインは、このブループリントのリリースパイプラインを作成します。ブループリントの後続の更新により、このリリースパイプラインがトリガーされ、Service Catalog の製品が新しいバージョンで更新されます。

リリースパイプラインには、ブループリントのセキュリティとコンプライアンスチェックを自動化するプロアクティブコントロールが含まれています。プロアクティブコントロールは、非準拠のリソースの作成を防ぐように設計されています。これらのコントロールは、応答コントロールや検出コントロールなど、他のタイプのセキュリティコントロールによって処理されるセキュリティイベントの数を減らすことができます。プロアクティブコントロールは、デプロイされたリソースがデプロイされる前に準拠していることを確実にするため、対応や修復を必要とする検出イベントはありません。

設定パイプラインを初めて呼び出すと、 という名前の Service Catalog 製品が作成されますBootstrapping-Admin-Product。この製品は、リリースパイプラインの CloudFormation テンプレートです。次の図に示すように、設定パイプラインは Bootstrapping-Admin-Product製品を使用して、新しいブループリントごとに専用のリリースパイプラインを作成します。ブループリントとリリースパイプラインの間には one-to-one の関係があります。

設定パイプラインは、製品を使用して、各ブループリントのリリースパイプラインを作成します。

リリースパイプラインステージ

次の図は、リリースパイプラインのデフォルトステージと、パイプラインがやり取りするリソースを示しています。パイプラインの各ステージは CodeBuild プロジェクトです。

Enterprise Blueprint Factory リリースパイプラインのステージ。

リリースパイプラインのステージは次のとおりです。

  1. ファイルアラインメント – このステージでは、ブループリントが CloudFormation テンプレートまたは AWS Cloud Development Kit (AWS CDK) コンストラクトであることを確認します。ブループリントが AWS CDK コンストラクトの場合、このステージは AWS CDK コンストラクトを CloudFormation テンプレートに合成します。このプロセスは、CloudFormation を通じてデプロイを自動化および標準化します。エラーが見つかった場合、パイプラインは失敗します。

  2. 構文チェック — 構文エラーは CloudFormation デプロイエラーの一般的な原因です。この段階では、AWS CloudFormation Linter (cfn-lint) はテンプレートをAWS CloudFormation リソース仕様と比較することで構文エラーをチェックします。また、リソースプロパティの有効な値の確認やベストプラクティスの遵守など、他のチェックも実行します。エラーが見つかった場合、パイプラインは失敗し、cfn-lint は提案を返します。

  3. コントロールチェック – この段階では、cfn_nag はパターンを検索して潜在的なセキュリティ問題をチェックします。たとえば、過度に寛容なセキュリティグループと AWS Identity and Access Management (IAM) ポリシー、暗号化の欠落、パスワードリテラルをチェックします。エラーが見つかった場合、パイプラインは失敗し、cfn_nag は提案を返します。

  4. バージョンチェック – リリースパイプラインは、製品設定ファイルで定義されているバージョン戦略に基づいてバージョン管理を実行します。製品バージョンがイミュータブルと定義されている場合、Service Catalog は以前の製品バージョンを非アクティブ化します。

  5. 製品の公開 – リリースパイプラインは、Service Catalog で製品をリリースします。

注記

リリースパイプラインはカスタマイズ可能です。たとえば、ユースケースに適用されないステージを削除できます。他のコントロールチェック、追加の検証、または手動承認ステップを追加する場合は、ステージをさらに追加することもできます。このガイドには、リリースパイプラインを変更する手順は含まれていません。詳細については、CodePipelineCodeBuild のドキュメントを参照してください。