View a markdown version of this page

Enterprise Blueprint Factory 설정 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Enterprise Blueprint Factory 설정

이 섹션에서는 AWS 환경에 Enterprise Blueprint Factory를 설정하는 데 도움이 됩니다. 여기에는 Enterprise Blueprint Factory에 필요한 리포지토리 및 AWS 리소스를 설정하는 방법에 대한 자세한 지침이 포함되어 있습니다.

사전 조건

다음은 AWS 환경에서 Enterprise Blueprint Factory를 설정하기 위한 사전 조건입니다.

  • AWS 계정다음은 다음과 같습니다.

    • Enterprise Blueprint Factory를 관리하고 제품을 출시하는 데 사용되는 계정

    • 릴리스된 제품을 사용하는 하나 이상의 계정

  • 모든 계정은 다음과 같습니다.

  • AWS Command Line Interface (AWS CLI), 설치구성

  • 다음 리소스를 생성하는 AWS CloudFormation 스택을 배포할 수 AWS 있는 권한:

    • Amazon CloudWatch Logs 로그 그룹

    • AWS CodePipeline 파이프라인

    • AWS CodeBuild 프로젝트

    • Amazon EventBridge 이벤트 버스 정책 및 규칙

    • AWS Identity and Access Management (IAM) 역할 및 정책

    • AWS Key Management Service (AWS KMS) 키 및 키 정책

    • AWS Service Catalog 포트폴리오, 제품 및 프로비저닝된 제품

    • Amazon Simple Notification Service(Amazon SNS) 주제, 주제 정책 및 구독

    • Amazon Simple Storage Service(Amazon S3) 버킷

    • AWS Systems Manager 파라미터 스토어 파라미터

    이러한 권한 설정에 대한 자세한 내용은 CloudFormation 설명서 및 최소 권한에 대한 정책 구현을 참조하세요 AWS CloudFormation.

  • GitHub 계정

모범 사례

AWS 환경에 Enterprise Blueprint Factory를 설정할 때 다음 모범 사례를 따르는 것이 좋습니다.

  • Enterprise Blueprint Factory를 배포하는 데 필요한 권한을 구성할 때 최소 권한 원칙을 따르고 필요한 최소 권한을 부여합니다. 자세한 내용은 IAM 설명서의 최소 권한 부여보안 모범 사례를 참조하세요.

  • Service Catalog 포트폴리오에 대한 액세스를 구성할 때 최소 권한 원칙을 따르고 특정 역할, 사용자 또는 관리자에게만 액세스 권한을 부여합니다. Service Catalog의 보안 모범 사례를 따릅니다.

리포지토리 생성

이 섹션에서는 Enterprise Blueprint Factory의 구성 리포지토리와 제품 리포지토리를 설정하는 데 도움이 됩니다. 리포지토리를 설정하려면 GitHub에서 제공된 리포지토리를 포크합니다. 그런 다음 AWS CodeConnections 를 사용하여 GitHub 리포지토리에 대한 연결을 생성합니다. 그런 다음 GitHub 리포지토리를 로컬 시스템에 복제합니다.

GitHub 리포지토리를 포크하려면
  1. GitHub에 로그인합니다.

  2. 구성 리포지토리 GitHub 리포지토리로 이동합니다.

  3. 포크를 선택합니다.

  4. 새 포크 생성 페이지의 리포지토리 이름 상자에를 입력합니다ServiceCatalog-ConfigRepo.

  5. (선택 사항) 설명을 입력합니다.

  6. 기본 브랜치만 복사를 선택합니다.

  7. 포크 생성을 선택합니다.

  8. 이 단계를 반복하여 코드 리포지토리 GitHub 리포지토리를 포크합니다. 이 ServiceCatalog-CodeRepo 리포지토리의 이름을 입력합니다.

  9. 이 단계를 반복하여 제품 리포지토리 GitHub 리포지토리를 포크합니다. 이 ServiceCatalog-BlueprintProductRepo 리포지토리의 이름을 입력합니다.

CodeConnections 연결을 생성하려면
  1. AWS CLI에서 다음 명령을 입력하여 GitHub에 대한 CodeConnections 연결을 생성합니다.

    aws codeconnections create-connection --provider-type GitHub --connection-name <MyConnection>
  2. AWS 개발자 도구 콘솔을 사용하여 연결을 완료합니다. 자세한 내용은 보류 중인 연결 업데이트를 참조하세요.

포크된 리포지토리를 복제하려면
  • 다음 명령을 입력하여 GitHub 리포지토리를 로컬 워크스테이션에 복제합니다.

    git clone git@github.com:<user>/aws-enterprise-blueprint-factory-config-repo ServiceCatalog-ConfigRepo git clone git@github.com:<user>/aws-enterprise-blueprint-factory-blueprint-repo ServiceCatalog-BlueprintProductRepo git clone git@github.com:<user>/aws-enterprise-blueprint-factory-code-repo ServiceCatalog-CodeRepo

Enterprise Blueprint Factory 설정

이 섹션의 지침에서는 대상 계정에서 Enterprise Blueprint Factory를 설정하는 방법을 설명합니다. GitHub에서 복제한 제품 리포지토리에는 두 개의 샘플 CloudFormation 템플릿인 BP-S3 및가 포함되어 있습니다BP-SNS. 이 지침에 따라이 두 샘플 블루프린트를 Service Catalog에 제품으로 배포합니다.

역할을 설정하려면
  1. 블루프린트 개발자의 계정에서 다음 신뢰 정책을 생성한 sc-enduserrole-trust-policy.json다음 다른 이름으로 저장합니다.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceCatalogEndUserRole" }, "Action": "sts:AssumeRole" } }
  2. 다음 명령을 입력하여 ServiceCatalogEndUserRole IAM 역할을 생성합니다.

    aws iam create-role \ --role-name ServiceCatalogEndUserRole \ --assume-role-policy-document file://sc-enduserrole-trust-policy.json aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess \ -- role-name ServiceCatalogEndUserRole
    참고

    개발자는 ServiceCatalogEndUserRole 역할을 사용하여 Service Catalog 제품을 프로비저닝합니다. 이 역할은 블루프린트에 정의된 리소스를 생성하는 데 권한이 필요하지 않습니다. 이는 최소 권한 및 업무 분리의 모범 사례를 따릅니다.

  3. 다음 신뢰 정책을 생성한 다음 로 저장합니다sc-launchconstraintrole-trust-policy.json.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  4. 다음 명령을 입력하여 ServiceCataloglogLaunchConstraintRole IAM 역할을 생성합니다.

    aws iam create-role \ --role-name ServiceCataloglogLaunchConstraintRole \ --assume-role-policy-document file://sc-launchconstraintrole-trust-policy.json aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonSNSFullAccess \ --role-name ServiceCataloglogLaunchConstraintRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AWSCloudFormationFullAccess \ --role-name ServiceCataloglogLaunchConstraintRole
  5. ServiceCataloglogLaunchConstraintRole IAM 역할에 다음 정책을 추가합니다. Service Catalog 설명서의 시작 역할 구성에 설명된 대로 제품 리소스에 필요한 다른 권한을 포함합니다.

    { "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":"*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/servicecatalog:provisioning":"true" } } ] }
    참고

    Service Catalog는이 역할을 사용하여 CloudFormation 스택을 Service Catalog의 제품으로 배포합니다. 이 역할에 대한 신뢰 정책은 Service Catalog만 이를 수임할 수 있도록 합니다. 다른 사용자 또는 서비스는이 역할을 수임할 수 없습니다. 이는 업무 분리 모범 사례를 따릅니다.

  6. 다음 신뢰 정책을 생성한 다음 sc-codebuild-trust-policy.json다른 이름으로 저장합니다.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  7. 다음 명령을 입력하여 codebuild-servicecatalog-admin-role IAM 역할을 생성합니다.

    aws iam create-role \ --role-name codebuild-servicecatalog-admin-role \ --assume-role-policy-document file://sc-codebuild-trust-policy.json aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess \ --role-name codebuild-servicecatalog-admin-role
    참고

    구성 파이프라인의 CodeBuild 작업은이 역할을 사용합니다.

Amazon S3 버킷을 설정하려면
AWS Systems Manager 파라미터를 설정하려면
  • 다음 표에서 Systems Manager 파라미터를 생성하려면 Systems Manager에서 파라미터 스토어 파라미터 생성의 지침을 따릅니다. 이러한 파라미터는 구성 파이프라인을 배포하는 CloudFormation 템플릿에 사용됩니다.

    파라미터 이름 Type 설명
    /blueprints/resources/vpc_id String 대상 Virtual Private Cloud(VPC)의 ID를 저장하는 파라미터입니다.
    /blueprints/resources/subnets StringList 대상 서브넷의 IDs를 저장하는 파라미터입니다.
    /blueprints/resources/securitygroups StringList 대상 보안 그룹의 IDs를 저장하는 파라미터입니다.
    /blueprints/resources/artifacts-bucket-name String CodePipeline 아티팩트에 사용되는 Amazon S3 버킷 이름을 저장하는 파라미터입니다.
    /blueprints/resources/BlueprintRepo String Enterprise Blueprint Factory 블루프린트가 저장되는 GitHub 리포지토리를 저장하는 파라미터입니다. 기본값은 <user>/aws-enterprise-blueprint-factory-blueprint-repo입니다.
    /blueprints/resources/CodeRepo String Enterprise Blueprint Factory 구성 파이프라인 코드와 Bootstrapping-Admin-Product 코드가 저장되는 GitHub 리포지토리를 저장하는 파라미터입니다. 기본값은 <user>/aws-enterprise-blueprint-factory-code-repo입니다.
    /blueprints/resources/ConfigRepo String Enterprise Blueprint Factory 구성 파일이 저장되는 GitHub 리포지토리를 저장하는 파라미터입니다. 기본값은 <user>/aws-enterprise-blueprint-factory-config-repo입니다.
CloudFormation 템플릿을 업데이트하려면
  1. 코드 리포지토리(ServiceCatalog-CodeRepo)에서 ServiceCatalog-Pipeline.yml 파일을 엽니다.

  2. 이 파일에서 다음 파라미터의 기본값을 편집합니다.

    • ConfigRepositoryName는 Enterprise Blueprint Factory 구성 파일이 저장되는 GitHub 리포지토리를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/ConfigRepo입니다.

    • CodeRepositoryName는 Enterprise Blueprint Factory 구성 파이프라인 코드와 Bootstrapping-Admin-Product 코드가 저장되는 GitHub 리포지토리를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/CodeRepo입니다.

    • BlueprintRepositoryName는 Enterprise Blueprint Factory 블루프린트가 저장되는 GitHub 리포지토리를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/BlueprintRepo입니다.

    • BranchName는 구성 파일이 저장되는 구성 리포지토리의 브랜치입니다. 기본값은 main입니다.

    • VPCID는 대상 VPC의 ID를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/vpc_id입니다.

    • Subnets는 대상 서브넷의 IDs를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/subnets입니다.

    • SecurityGroupIds는 대상 보안 그룹의 IDs를 저장하는 Systems Manager 파라미터입니다. 기본값은 /blueprints/resources/securitygroups입니다.

    • IamRoleName는 CodeBuild 작업이 사용하는 IAM 역할의 이름입니다. 기본값은 입니다codebuild-servicecatalog-admin-role.

    • EnvironmentType는 Enterprise Blueprint Factory를 배포하는 환경입니다. 기본값은 DEV입니다.

    • ArtifactBucket는 CodePipeline이 아티팩트를 저장하는 Amazon S3 버킷을 저장하는 Systems Manager 파라미터입니다. 기본값은 입니다/blueprints/resources/artifacts-bucket-name.

    • CodeConnectionArn는 GitHub에 대한 CodeConnections 연결의 Amazon 리소스 이름(ARN)입니다.

  3. ServiceCatalog-Pipeline.yml 파일을 저장하고 닫습니다.

  4. 다음 명령을 입력하여 변경 사항을 코드 리포지토리에 병합합니다.

    cd ServiceCatalog-CodeRepo git add ServiceCatalog-Pipeline.yml git commit -m "<description of change>" git push origin main
  5. 구성 리포지토리(ServiceCatalog-ConfigRepo)에서 bp_config.yml 파일을 엽니다.

  6. 조직에 필요한 대로 포트폴리오 섹션의 값을 업데이트합니다. 예를 들어 portfolio_access_rolesshare_to_ou 속성을 업데이트합니다. 자세한 내용은이 가이드의 구성 파일을 참조하세요.

  7. bp_config.yml 파일을 저장하고 닫습니다.

  8. 다음 명령을 입력하여 변경 사항을 코드 리포지토리에 병합합니다.

    cd ServiceCatalog-ConfigRepo git add bp_config.yml git commit -m "<description of change>" git push origin main
CloudFormation 스택을 배포하려면
  1. Enterprise Blueprint Factory 관리 계정에 로그인합니다.

  2. 관리 권한이 있는 IAM 역할로 전환합니다.

  3. CloudFormation 콘솔을 엽니다.

  4. 화면 상단의 탐색 모음에서 대상을 선택합니다 AWS 리전.

  5. 스택 페이지에서 오른쪽 상단의 스택 생성을 선택하고 새 리소스 사용(표준)을 선택합니다.

  6. Prepare template(템플릿 준비)에서 Template is ready(템플릿 준비가 완료되었습니다)를 선택합니다.

  7. 템플릿 지정에서 템플릿 파일 업로드를 선택합니다.

  8. 파일 선택을 선택하고 ServiceCatalog-CodeRepo 폴더로 이동한 다음 ServiceCatalog-Pipeline.yml을 선택합니다.

  9. 계속하여 템플릿을 검증하려면 다음을 선택합니다.

  10. 스택 이름에 스택의 이름을 입력합니다.

  11. 파라미터 섹션에서 기본값을 변경하지 마십시오.

  12. 다음을 선택합니다.

  13. 스택 옵션 구성 페이지에서 기본값을 변경하지 말고 다음을 선택합니다.

  14. 검토 및 생성 페이지에서 템플릿 및 스택 세부 정보를 확인한 다음 제출을 선택합니다.

  15. 스택 배포 진행 상황을 모니터링합니다. 자세한 내용은 CloudFormation 설명서를 참조하세요.

  16. 상태가 로 변경될 때까지 기다립니다CREATE_COMPLETE.

배포를 검증하려면
  1. AWS Service Catalog 콘솔을 엽니다.

  2. 탐색 창에서 제품을 선택합니다.

  3. 제품 목록에서 ServiceCatalog-Pipeline을 사용할 수 있는지 확인합니다.

  4. AWS CodePipeline 콘솔을 엽니다.

  5. 이름에서 구성 파이프라인을 선택합니다. 기본적으로 파이프라인 이름은 입니다ServiceCatalog-Pipeline.

  6. 내역 보기를 선택합니다.

  7. 파이프라인 및 단계 실행의 상태를 봅니다. 상태에 대한 자세한 내용은 CodePipeline 설명서의 실행 상태 보기를 참조하세요.

  8. 구성 파이프라인 상태가가 될 때까지 기다립니다Succeeded.

  9. Service Catalog 콘솔을 엽니다.

  10. 탐색 창에서 제품을 선택합니다.

  11. BP-S3-ProductBP-SNS-Product 제품을 사용할 수 있는지 확인합니다. 이는 샘플 블루프린트에 대한 제품 릴리스 파이프라인이 성공적으로 완료되었음을 나타냅니다.

  12. Enterprise Blueprint Factory를 설정할 때 배포한 샘플 블루프린트를 삭제하려면 블루프린트 삭제의 지침을 따르세요.

Enterprise Blueprint Factory 삭제

Enterprise Blueprint Factory를 사용하지 않는 경우 이를 삭제하여 AWS 리소스와 관련된 비용 발생을 중지할 수 있습니다.

리소스를 삭제하려면
  1. 다음 명령을 입력하여 Enterprise Blueprint Factory 관리 계정에 배포된 IAM 역할을 삭제합니다.

    aws iam detach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess \ --role-name ServiceCatalogEndUserRole aws iam delete-role --role-name ServiceCatalogEndUserRole aws iam detach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonSNSFullAccess \ --role-name ServiceCataloglogLaunchConstraintRole aws iam delete-role --role-name ServiceCataloglogLaunchConstraintRole
  2. Enterprise Blueprint Factory의 CloudFormation 스택을 삭제합니다. 지침은 CloudFormation 콘솔에서 스택 삭제 또는 에서 스택 삭제를 참조하세요 AWS CLI.

  3. CodePipeline 아티팩트를 저장하는 데 사용되는 Amazon S3 버킷을 삭제합니다. 지침은 Amazon S3 설명서의 버킷 삭제를 참조하세요.

  4. 파라미터 스토어에서 다음 Systems Manager 파라미터를 삭제합니다.

    • /blueprints/resources/vpc_id

    • /blueprints/resources/subnets

    • /blueprints/resources/securitygroups

    • /blueprints/resources/artifacts-bucket-name

    • /blueprints/resources/BlueprintRepo

    • /blueprints/resources/CodeRepo

    • /blueprints/resources/ConfigRepo

    지침은 Systems Manager 설명서의 Parameter Store에서 파라미터 삭제를 참조하세요.