기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Enterprise Blueprint Factory 구성 요소
Enterprise Blueprint Factory는 다음 구성 요소로 구성됩니다.
-
제품 리포지토리 - 블루프린트를 저장하는 리포지토리입니다.
-
구성 리포지토리 - AWS Service Catalog 포트폴리오와 제품을 정의하는 구성 파일을 저장하는 리포지토리입니다.
-
구성 파일 "" - 사용 가능한 블루프린트, 사용할 수 있는 사용자 및 사용 방법을 정의하는 구성 파일입니다.
-
구성 파이프라인 - 서비스 카탈로그 포트폴리오 및 포트폴리오 공유를 설정하고 각 제품에 대한 릴리스 파이프라인을 생성하는 DevOps CI/CD 파이프라인입니다.
-
릴리스 파이프라인 - 블루프린트를 Service Catalog 제품으로 릴리스하는 DevOps CI/CD 파이프라인입니다.
클라우드 인프라 팀은 일반적으로 전체 Enterprise Blueprint Factory를 관리합니다. 각 블루프린트를 승인해야 하기 때문입니다. 그러나 DevOps 코드 팀은 일반적으로 구성 파이프라인 및 릴리스 파이프라인을 담당합니다. 새 블루프린트를 릴리스하기 위해 개발자는 제품 리포지토리, 구성 리포지토리 및 구성 파일과만 상호 작용합니다.
제품 리포지토리
제품 리포지토리는 조직에서 승인하는 블루프린트를 저장하는 중앙 위치입니다. 블루프린트 관리 팀과 보안 팀은이 리포지토리에 대한 풀 요청을 검토하여 각 블루프린트가 조직 및 보안 요구 사항을 충족하는지 확인합니다. 이 가이드에서는 리포지토리에 GitHub를 사용하지만 대체 리포지토리를 사용할 수 있습니다.
구성 리포지토리
구성 리포지토리(config repo)는 조직이 Enterprise Blueprint Factory를 통해 릴리스된 Service Catalog 포트폴리오 및 제품의 구성 파일을 저장하는 위치입니다. 이 가이드에서는 리포지토리에 GitHub를 사용하지만 대체 리포지토리를 사용할 수 있습니다.
구성 파일
Enterprise Blueprint Factory 구성 파일(구성 파일)은 블루프린트 관리 팀이 소유한 구성 리포지토리에 저장됩니다. 이 파일의 이름은 bp_config.yml입니다. 개발자가이 파일을 업데이트하면 블루프린트 관리 팀이 변경 사항을 검토합니다. 변경 사항을 기본 브랜치에 병합하면 구성 파이프라인이 시작됩니다. 구성 파일은 Enterprise Blueprint Factory를 통해 관리되는 모든 블루프린트의 게시, 공유 및 배포를 오케스트레이션합니다.
구성 파일은 portfolios
및의 두 가지 기본 객체로 구성된 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) 자격 증명(사용자, 역할 또는 그룹)입니다. 이 속성은 선택 사항입니다. -
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 리소스입니다. 구성 파일을 업데이트하면 구성 파이프라인이 호출됩니다.
구성 파이프라인을 처음 호출하면 구성 파일에 정의되지 않은 두 개의 추가 포트폴리오가 생성됩니다.
-
Blueprint-portfolio
- Enterprise Blueprint Factory를 통해 배포하는 모든 제품이이 포트폴리오에 추가됩니다. 이 포트폴리오는 구성 파일에 지정한 IAM 보안 주체 및 조직 단위에서 사용할 수 있습니다. -
Bootstrapping-Admin-Portfolio
-Bootstrapping-Admin-Product
제품이이 포트폴리오와 연결되어 있습니다. 이 제품은 릴리스 파이프라인을 위한 CloudFormation 템플릿입니다. 블루프린트 관리 팀만이 포트폴리오에 액세스하여 관리 제품을 관리할 수 있도록 합니다.
구성 파이프라인 단계
다음 이미지는 구성 파이프라인의 단계와 파이프라인이 상호 작용하는 리소스를 보여줍니다. 파이프라인의 각 단계는 AWS CodeBuild 프로젝트입니다.

다음은 구성 파이프라인의 단계입니다.
-
포트폴리오 배포 - 구성 파이프라인은 구성 파일에 추가된 모든 포트폴리오를 배포하거나 구성 파일에서 제거된 모든 포트폴리오를 삭제합니다. 포트폴리오에 변경 사항이 없는 경우 파이프라인은이 단계를 건너뜁니다.
-
포트폴리오 공유 - 구성 파이프라인은 포트폴리오를 대상 조직 단위(OUs)와 공유합니다. 포트폴리오 공유에 변경 사항이 없는 경우 파이프라인은이 단계를 건너뜁니다.
-
Blueprint-Admin-Bootstrapping-Product 배포 - 구성 파이프라인은
ServiceCatalog-CodeRepo
리포지토리에서bp-pipeline
블루프린트를 가져와 Service Catalog에 로 배포합니다Bootstrapping-Admin-Product
. 이 제품은 릴리스 파이프라인을 생성하는 데 사용되는 CloudFormation 템플릿입니다. 이 템플릿을 Service Catalog 제품으로 배포하면 버전 관리를 유지하는 데 도움이 됩니다.bp-pipeline
블루프린트에 변경 사항이 없는 경우 파이프라인은이 단계를 건너뜁니다. -
릴리스 파이프라인 생성 - 구성 파일의 제품 속성을 기반으로 구성 파이프라인은 스택 파라미터를 준비하고 제품에 대한 릴리스 파이프라인을 생성하는 CloudFormation 스택을 시작합니다. 자세한 내용은이 가이드의 릴리스 파이프라인을 참조하세요.
-
제품 배포 - 릴리스 파이프라인은 블루프린트를 Service Catalog 제품으로 배포하고 대상 포트폴리오와 연결합니다. 이제 최종 사용자는 대상 OU의 멤버 AWS 계정 인에 제품을 배포할 수 있습니다.
릴리스 파이프라인
릴리스 파이프라인은 블루프린트를 Service Catalog 제품으로 자동 릴리스합니다. 이 파이프라인은 AWS CodePipeline 리소스입니다. 조직에서 새 블루프린트를 릴리스하려는 경우 개발자는 IaC 템플릿과 해당 제품 구성 파일을 제품 리포지토리에 업로드합니다. 구성 파일에 제품 세부 정보를 추가하면 구성 파이프라인이 트리거됩니다. 구성 파이프라인은이 블루프린트에 대한 릴리스 파이프라인을 생성합니다. 블루프린트에 대한 모든 후속 업데이트는이 릴리스 파이프라인을 트리거하여 Service Catalog의 제품을 새 버전으로 업데이트합니다.
릴리스 파이프라인에는 블루프린트에 대한 보안 및 규정 준수 검사를 자동화하는 사전 예방적 제어가 포함되어 있습니다. 사전 예방적 제어는 규정 미준수 리소스의 생성을 방지하도록 설계되었습니다. 이러한 제어는 대응 및 탐지 제어와 같은 다른 유형의 보안 제어에서 처리하는 보안 이벤트 수를 줄일 수 있습니다. 사전 예방적 제어는 배포된 리소스가 배포되기 전에 규정을 준수하는지 확인하기 때문에 응답 또는 수정이 필요한 감지 이벤트가 없습니다.
구성 파이프라인을 처음 호출하면 이름이 인 Service Catalog 제품이 생성됩니다Bootstrapping-Admin-Product
. 이 제품은 릴리스 파이프라인을 위한 CloudFormation 템플릿입니다. 다음 그림과 같이 구성 파이프라인은 Bootstrapping-Admin-Product
제품을 사용하여 각 새 블루프린트에 대한 전용 릴리스 파이프라인을 생성합니다. 블루프린트와 릴리스 파이프라인 간에는 one-to-one 관계가 있습니다.

릴리스 파이프라인 단계
다음 이미지는 릴리스 파이프라인의 기본 단계와 파이프라인이 상호 작용하는 리소스를 보여줍니다. 파이프라인의 각 단계는 CodeBuild 프로젝트입니다.

릴리스 파이프라인의 단계는 다음과 같습니다.
-
파일 정렬 -이 단계에서는 블루프린트가 CloudFormation 템플릿 또는 AWS 클라우드 개발 키트 (AWS CDK) 구성 요소인지 확인합니다. 블루프린트가 구문인 AWS CDK 경우이 단계에서는 AWS CDK 구문을 CloudFormation 템플릿으로 합성합니다. 이 프로세스는 CloudFormation을 통해 배포를 자동화하고 표준화합니다. 오류가 발견되면 파이프라인이 실패합니다.
-
구문 검사 - 구문 오류는 CloudFormation 배포 오류의 일반적인 원인입니다. 이 단계에서 AWS CloudFormation Linter(cfn-lint)
는 템플릿을 AWS CloudFormation 리소스 사양과 비교하여 구문 오류를 확인합니다. 또한 리소스 속성의 유효한 값 확인 및 모범 사례 준수와 같은 다른 검사를 수행합니다. 오류가 발견되면 파이프라인이 실패하고 cfn-lint가 제안을 반환합니다. -
제어 검사 -이 단계에서 cfn_nag
는 패턴을 검색하여 잠재적 보안 문제를 확인합니다. 예를 들어 지나치게 허용적인 보안 그룹 및 AWS Identity and Access Management (IAM) 정책, 누락된 암호화 및 암호 리터럴이 있는지 확인합니다. 오류가 발견되면 파이프라인이 실패하고 cfn_nag가 제안을 반환합니다. -
버전 확인 - 릴리스 파이프라인은 제품 구성 파일에 정의된 버전 전략을 기반으로 버전 관리를 수행합니다. 제품 버전이 변경 불가능한 것으로 정의된 경우 Service Catalog는 이전 제품 버전을 비활성화합니다.
-
제품 게시 - 릴리스 파이프라인은 Service Catalog에서 제품을 릴리스합니다.
참고
릴리스 파이프라인은 사용자 지정할 수 있습니다. 예를 들어 사용 사례에 적용되지 않는 모든 단계를 제거할 수 있습니다. 다른 제어 검사, 추가 검증 또는 수동 승인 단계를 추가하려는 경우 단계를 더 추가할 수도 있습니다. 이 가이드에는 릴리스 파이프라인 수정 지침이 포함되어 있지 않습니다. 자세한 내용은 CodePipeline 및 CodeBuild 설명서를 참조하세요.