IT/Infra&Cloud

[aws] Service Catalog - cloudformation

Hayley Shim 2023. 11. 3. 17:10

안녕하세요. Control Tower 내 Account Factory 기능을 활용하여 Service Catalog 제품을 프로비저닝하며 제품 유형인 Cloudformation에 대해 좀 더 깊게(Deep Dive) 알아보고자 작성한 글입니다.

 

 

Cloudformation[참고]

  • CloudFormation 템플릿은 JSON 또는 YAML 형식의 텍스트 파일입니다. .json, .yaml, .template와 같은 확장자로 이러한 파일을 저장할 수 있습니다 
  • 스택을 생성할 때 AWS CloudFormation은 AWS에 대한 기본 서비스 호출을 수행하여 리소스를 프로비저닝하고 구성합니다. CloudFormation은 수행 권한이 있는 작업만 수행할 수 있습니다. 
  • 예를 들어 CloudFormation을 사용하여 EC2 인스턴스를 생성하려면 인스턴스 생성 권한이 필요합니다. 인스턴스가 포함된 스택을 삭제할 때 인스턴스를 종료하려면 유사한 권한이 필요합니다. AWS Identity and Access Management (IAM)를 사용하여 권한을 관리합니다.

 

서비스 카탈로그는 다음 유형의 사용자를 지원합니다.

  • 카탈로그 관리자(관리자) – 제품(애플리케이션 및 서비스) 카탈로그를 관리하고 이를 포트폴리오로 구성하고 최종 사용자에게 액세스 권한을 부여합니다. 카탈로그 관리자는 AWS CloudFormation 템플릿을 준비하고, 제약 조건을 구성하고, 고급 리소스 관리를 제공할 제품의 IAM 역할을 관리합니다.
  • 최종 사용자 – IT 부서 또는 관리자로부터 AWS 자격 증명을 받고 AWS Management Console을 사용하여 액세스 권한이 부여된 제품을 시작합니다. 

 

서비스 카탈로그의 제품 유형 중 CloudFormation 제품 유형의 경우 AWS CloudFormation 템플릿을 가져와 제품을 생성합니다. 

  • AWS CloudFormation 템플릿은 제품에 필요한 AWS 리소스, 리소스 간의 관계, 그리고 최종 사용자가 보안 그룹을 구성하고, 키 페어를 생성하고, 기타 사용자 지정을 수행하기 위해 제품을 시작할 때 연결할 수 있는 매개 변수를 정의합니다.

 

프로비저닝된 제품

  • AWS CloudFormation 스택에는 JSON 또는 YAML 형식으로 작성된 AWS CloudFormation 템플릿과 관련 리소스 모음이 포함되어 있습니다. 프로비저닝 된 제품은 스택입니다. 최종 사용자가 제품을 시작할 때 서비스 카탈로그에 의해 프로비저닝되는 제품 인스턴스는 제품을 실행하는 데 필요한 리소스가 포함된 스택입니다. 

 

포트폴리오

  • 포트폴리오는 구성 정보가 포함된 제품 모음입니다 . 포트폴리오는 특정 제품을 사용할 수 있는 사람과 사용 방법을 관리하는 데 도움이 됩니다. 서비스 카탈로그를 사용하면 조직의 각 사용자 유형에 맞는 맞춤형 포트폴리오를 생성하고 적절한 포트폴리오에 대한 액세스 권한을 선택적으로 부여할 수 있습니다. 포트폴리오에 제품의 새 버전을 추가하면 해당 버전이 자동으로 모든 현재 사용자에게 제공됩니다.
  • 또한 포트폴리오를 다른 AWS 계정과 공유하고 해당 계정의 관리자가 사용자가 생성할 수 있는 EC2 인스턴스를 제한하는 등 추가 제약 조건을 적용하여 포트폴리오를 배포하도록 허용할 수 있습니다 . 포트폴리오, 권한, 공유 및 제약 조건을 사용하면 사용자가 조직의 요구 사항과 표준에 맞게 올바르게 구성된 제품을 출시하는지 확인할 수 있습니다.

 

권한

  • 사용자에게 포트폴리오에 대한 액세스 권한을 부여하면 해당 사용자는 포트폴리오를 찾아보고 그 안에 있는 제품을 시작할 수 있습니다. AWS Identity and Access Management(IAM) 권한을 적용하여 카탈로그를 보고 수정할 수 있는 사람을 제어합니다. IAM 권한은 IAM 사용자, 그룹 및 역할에 할당될 수 있습니다.
  • 사용자가 IAM 역할이 할당된 제품을 시작하면 Service Catalog는 해당 역할을 사용하여 AWS CloudFormation을 통해 제품의 클라우드 리소스를 시작합니다. 각 제품에 IAM 역할을 할당하면 사용자에게 승인되지 않은 작업을 수행할 수 있는 권한을 부여하지 않고 카탈로그를 사용하여 리소스를 프로비저닝할 수 있습니다.

 

제약

  • 제약 조건은 제품에 대한 특정 AWS 리소스를 배포할 수 있는 방법을 제어합니다. AWS Service Catalog 제약 조건에는 시작 제약 조건 , 알림 제약 조건 , 템플릿 제약 조건 등 다양한 유형이 있습니다 .
  • 시작 제약 조건 : 포트폴리오의 제품에 대한 역할을 지정합니다. 이 역할을 사용하여 시작 시 리소스를 프로비저닝하면 카탈로그에서 제품을 프로비저닝하는 사용자의 능력에 영향을 주지 않고 사용자 권한을 제한할 수 있습니다.
  • 알림 제약 조건 : Amazon SNS 주제를 사용하여 스택 이벤트에 대한 알림을 받을 수 있습니다.
  • 템플릿 제약 조건 : 제품을 시작할 때 사용자가 사용할 수 있는 구성 매개변수(예: EC2 인스턴스 유형 또는 IP 주소 범위)를 제한합니다. 템플릿 제약 조건을 사용하면 제품에 대한 일반 AWS CloudFormation 템플릿을 재사용하고 제품별 또는 포트폴리오별로 템플릿에 제한을 적용할 수 있습니다.

 

초기 관리자 워크플로

 

 

초기 최종 사용자 워크플로

 

 

 

AWS Service Catalog 관리자에게 권한 부여

카탈로그 관리자로서 AWS Service Catalog 관리자 콘솔 보기에 대한 액세스 권한과 다음과 같은 작업을 수행할 수 있는 IAM 권한이 필요합니다.

  • 포트폴리오 생성 및 관리
  • 제품 생성 및 관리
  • 제품 출시 시 최종 사용자가 사용할 수 있는 옵션을 제어하기 위해 템플릿 제약 조건 추가
  • 최종 사용자가 제품을 시작할 때 AWS Service Catalog가 맡는 IAM 역할을 정의하기 위해 시작 제약 조건 추가
  • 최종 사용자에게 제품에 대한 액세스 권한 부여

 자세한 방법은 참고-AWS Service Catalog 관리자에게 권한 부여하세요

 

 

AWS Service Catalog 최종 사용자에게 권한 부여

최종 사용자가 AWS Service Catalog를 사용하려면 먼저 AWS Service Catalog 최종 사용자 콘솔 보기에 대한 액세스 권한을 부여해야 합니다. 액세스 권한을 부여하려면 최종 사용자가 사용하는 IAM 사용자, 그룹 또는 역할에 정책을 연결합니다.

 

 자세한 방법은 참고-AWS Service Catalog 최종 사용자에게 권한 부여하세요  

 

 

사전작업)

사전에 Control Tower 와 관련된 역할(Role)을 생성해줍니다.[참고-필요한 역할]

- AWS Control Tower는 AWS Organizations의 CreateAccount API를 호출하여 고객 계정을 생성합니다.

- AWS Organizations는 이 계정을 생성할 때 해당 계정 내에 역할을 생성합니다.

- 이 역할은 AWS Control Tower가 API에 매개변수를 전달하여 이름을 지정합니다.

- 역할의 이름은 AWSControlTowerExecution입니다.

 

 

Cloudformation 제품 유형을 생성하기 위해 [참고-AWS Cloudformation 제품 시작하기]를 참고하여 아래와 같은 과정으로 진행해줍니다.

 

1. cloudformation 템플릿 작성

2. 포트폴리오 생성

3. 포트폴리오에서 새 제품 생성

4. 템플릿 제약조건 추가

5. 시작 제약 추가

6. 최종 사용자에게 포트폴리오 액세스 권한 부여

 

위 과정대로 진행해줍니다.

 

1. 우선 cloudformation 템플릿 작성을 위해 아래와 같은 자료들을 참고해서 작성해줍니다.

- 깃헙 : https://github.com/aws-samples/aws-service-catalog-reference-architectures

- Docs : https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html

 

2. 포트폴리오 생성 을 참고하여 포트폴리오를 생성해줍니다.

 

 

3.포트폴리오에서 새 제품 생성을 참고하여 포트폴리오에서 cloudformation 제품 유형으로 새 제품을 생성해줍니다.

 

 

 

미리 생성한 포트폴리오에 해당 제품을 등록해줍니다.

 

 

4. 템플릿 제약조건 추가 을 참고하여 템플릿의 제약 조건을 추가해줍니다. 

 

 

 

 

5.시작 제약 추가 을 참고하여 IAM 역할을 할당해줍니다.

- 1)시작 제약 조건은 최종 AWS Service Catalog 사용자가 제품을 출시할 때 위임되는 IAM 역할을 지정합니다.

- 2) IAM 사용 설명서의 JSON 탭에 있는 새 정책 생성 지침을 따라 배포하려는 기본 리소스에 따라 JSON 정책 문서를 만듭니다. 

- 3) 해당 정책을 매핑할 역할(Role)을 만들고 앞서 생성한 포르폴리오의 제약조건 탭에서 제품은 앞서 생성한 제품을 선택하고 제약조건 유형으로 시작을 선택하고 생성한 IAM 역할(Role)을 선택합니다. 

 

 

 

6. 최종 사용자에게 포트폴리오 액세스 권한 부여 를 참고하여 엑세스 권한을 줍니다.

 

 

 

 

 

 

참고 자료

1. Control Tower
https://catalog.workshops.aws/control-tower/en-US

2.AFC
https://docs.aws.amazon.com/ko_kr/controltower/latest/userguide/af-customization-page.html

3.Service catalog
https://docs.aws.amazon.com/ko_kr/servicecatalog/latest/adminguide/productmgmt-cloudresource.html

4. Cloudformation

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html