BLOG

AWS 서비스 카탈로그 허브 및 스포크 모델: 다양한 계정에 서비스 카탈로그 배포 및 관리를 자동화하는 방법
작성일: 2018년 4월 20일

많은 조직이 수십에서 수백개의 계정을 보유하고 있고 AWS에 서비스가 필요한 수천명의 사용자를 보유하고 있을 수도 있습니다. 서비스를 구축하기 위해 조직의 거버넌스 제어를 적용하는 데 필요한 가드레일, 보안 통제 및 감사 기능을 구축하기 위해서는 시간과 리소스가 필요합니다. AWS 서비스 카탈로그 허브와 스포크 모델 및 제한 사항을 사용하여, 마스터/하위 계정 관계에서 서비스 카탈로그 배포를 중앙 집중식으로 관리하는 방법을 보여 드리겠습니다. 또한 사용자가 AWS 제품을 자체 프로비저닝 하여 구축 비용, 시간 및 관리를 줄일 수 있도록 서비스 제한을 적용하는 방법도 보여 드리겠습니다.

 

자세히 살펴보기 전에 서비스 카탈로그 구성 요소에 대해 먼저 설명하겠습니다.

 

 

서비스 카탈로그 구성 요소

제품

AWS 서비스 카탈로그 제품은 AWS에 배포하기 위해 사용할 수 있도록 설정할  IT서비스(VPC, 웹 서버, n-계층 환경, 데이터베이스 등)입니다.

 

포트폴리오

AWS 서비스 카탈로그 포트폴리오는 제품 및 해당 구성 정보뿐만 아니라 구축 및 액세스 제어도 포함합니다.

 

제약

AWS 서비스 카탈로그 제약 조건은 특정 AWS 리소스를 제품에 대해 배포할 수 있는 방법에 대한 제한입니다(예: 특정 EC2 인스턴스 크기만 허용하도록 템플릿을 제약함).

 

프로비저닝 된 제품

AWS CloudFormation 프로세스를 사용하여 AWS 서비스 카탈로그 제품이 시작됩니다. 시작된 서비스의 모음을 프로비저닝된 제품이라고 합니다. 시작된 서비스의 이러한 모음을 표시하는 화면이 나타날 수도 있습니다.

 

구현 개요

 

AWS 서비스 카탈로그 포트폴리오 및 제품을 중앙 집중식으로 관리하고 여러 계정에 배포해야 하는 경우 마스터 서비스 카탈로그 계정을 사용할 수 있습니다. 이 계정을 사용하여 최소 포트폴리오, 제품 및 제약 조건을 구현하십시오. 그런 다음 가져온 하위 계정에 마스터 포트폴리오를 공유할 수 있습니다. 가져온 마스터 포트폴리오를 형성하는 제품은 하위 계정의 로컬 포트폴리오에 추가됩니다. 이러한 제품에 대한 제약 조건, 태그 및 사용자를 추가하여 하위 계정의 사용자가 제품으로 구현된 AWS CloudFormation 스택을 배포할 수 있습니다.

 

이것을 AWS 서비스 카탈로그 허브와 스포크 모델이라고 합니다.

 

허브 및 스포크 모델

 

  • 하나의 마스터 계정–기준 제품 생성 및 포트폴리오 공유
  • 다중 하위 계정–포트폴리오 가져오기 및 제품 활용

    AWS 서비스 카탈로그 관리

허브-스포크 모델을 사용하면 계정에서 중앙 및 로컬로 서비스 카탈로그 포트폴리오 및 제품을 배포할 수 있습니다.

 

공유 포트폴리오를 활용하는 두 가지 방법

 

가져온 포트폴리오- 가져온 포트폴리오 활용

 

  •  시작 및 템플릿 제약 조건이 상속됨(하위 계정의 시작 제약 조건만 설정)
  •  제약 조건을 수정할 수 없습니다.

 

로컬 포트폴리오–로컬 포트폴리오를 생성하고 공유 포트폴리오에서 제품을 가져옵니다.

 

  • 템플릿 제약 조건만 상속됨
  •  추가 템플릿 제약 조건을 생성하고 할당할 수 있습니다.
  • 시작 제한을 할당해야 합니다.

    리허설
    사전 요구 사항:
  • 두개의 AWS계정
  • 각 계정에 대한 IAM 관리 권한
  • 각 계정에 대한 CLI 액세스를 위한 액세스 키 또는 AWS STS 자격 증명
  • 여기에서 파이썬 스크립트를 다운로드.

 

참고: 다음 파이썬 스크립트를 실행하기 전에 AWS_DEFAULT_PROFILE이 배포할 수 있는 올바른 계정과 적절한 관리 권한으로 설정되었는지 확인하십시오.

 

보고서에 포함된 파일:

Master_SC_Single_Portfolio_Deploy_v1.py

 

  • 서비스 카탈로그 포트폴리오를 생성하는 파이썬 스크립트로, 조직의 거버넌스 제어를 적용하기 위해 템플릿으로 제한하고 태그를 지정하여 CloudFormation 스크립트의 포트폴리오에 사용할 두 가지 제품을 생성합니다. 이 스크립트는 선택한 하위 계정과 포트폴리오를 공유합니다.

 

Child_SC_Single_Portfolio_Deploy_v1.py

 

  • 하위 계정에 로컬 서비스 카탈로그 포트폴리오를 생성하고 이전에 설명한 마스터 계정에 생성된 두 제품을 가져오는 파이썬 스크립트입니다. 각 제품에 대해 시작 제약 조건을 만들어 단일 IAM 역할 및 적절한 태깅에 대한 시작 리소스를 제한합니다.
  •  LAMP_Single_Instance_v1.template
  •  LAMP_Launch_Constraint.json
  •  Linux_Single_Instance_v1.template
  •  Linux_Instance_Launch_Constraint.json

    파이썬 코드에 대한 링크는 여기에서 찾을 수 있습니다.

 

마스터 서비스 카탈로그 배포

 

$AWS_DEFAULT_PROFILE=Master_Service_Catalog_프로필 내보내기

1. 서비스 카탈로그 마스터 계정이 액세스 할 수 있는 Amazon S3 버켓에 CFT 및 제약 조건 파일을 업로드합니다.

 

  •  LAMP_Single_Instance_v1.template
  •  Linux_Single_Instance_v1.template
  • LAMP_Launch_Constraint.json
  • Linux_Instance_Launch_Constraint.json

 

2. 1단계에서 이름이 버켓인 마스터 배포 스크립트를 명령줄 인수로 실행합니다. 추가 명령줄 인수에는 마스터 포트폴리오 및 제품을 공유하려는 모든 AWS 계정이 포함될 수 있습니다.

$ python Master_SC_Single_Portfolio_Deploy_v1.py bucketname share_account_1 share_account_2

 

3. 하위 계정에 서비스 카탈로그를 배포하기 위해 이 스크립트에서 제공하는 포트폴리오 ID를 복사하십시오.
Your Linux Portfolio ID is: port-xxxxxxxxxxxxx
하위 서비스 카탈로그 배포

 

4. 이전 마스터 서비스 카탈로그 섹션에서 공유한 각 하위 계정에 대해 다음 단계를 수행하십시오.
$ export AWS_DEFAULT_PROFILE=Child_Service_Catalog_Profile

 

5. 1단계에서 생성한 마스터 서비스 카탈로그 포트폴리오의 포트폴리오 ID를 사용하여 하위 배포 스크립트를 실행하십시오.
$ python Child_SC_Single_Portfolio_Deploy_v1.py port-xxxxxxxxxxxxx
배포 후

 

6. 모든 것이 적절히 배포되었는지 확인하기 위해, 마스터 계정과 하위 계정이 포트폴리오, 제품, 그리고 제약 조건에 대해 확인하시오.

 

7. 하위 계정에 사용자를 추가하여 생성한 포트폴리오를 사용할 수 있습니다.

 

8. 하위 계정의 테스트 시작 제품입니다. 제품을 배포하려면 Amazon EC2 키 페어가 있어야 합니다.

a. 사용자가 특정 매개변수 값에 제한을 받는 LAMP 인스턴스를 배포할 경우 주의하십시오. Linux 단일 인스턴스를 배포하는 경우 사용자는 LAMP 인스턴스 제품에서 생성한 특정 Security Group (“WebServerSecurityGroup”)으로 제한됩니다.

 

 

요약

이 블로그 포스트에서는 허브와 스포크 모델에 AWS 서비스 카탈로그를 구축하는 것에 대한 가치를 보여 줍니다. 또한 프로세스에 대해 설명하고 코드 샘플을 제공했습니다. 이러한 샘플은 여러 AWS 계정에 걸쳐 구축을 자동화하고 사용자가 조직의 거버넌스 제어를 충족하도록 특정 AWS 리소스 값에 제한하는 방법을 보여 줍니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/mt/aws-service-catalog-hub-and-spoke-model-how-to-automate-the-deployment-and-management-of-service-catalog-to-many-accounts/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.