BLOG

[Techblog] AWS RAM을 사용해 ACM 사설 CA 교차계정 공유하기
작성일: 2020-11-06

오늘 블로그 포스팅으로는 AWS Certificate Manager(ACM) 사설 인증 기관(CA)의 새로운 교차 계정 기능에 대해 다루어 보겠습니다. 먼저 한 계정에서 CA를 생성한 다음 두 번째 계정에서 ACM을 사용하여 다음 해를 자동으로 갱신하는 사설 인증서를 발급합니다. 새롭게 사용 가능한 이 워크 플로는 ACM 사설 CA의 유용성을 확장하여 조직이 중앙 집중식 CA 계층 구조를 구축하고 여러 계정에 걸쳐 발급을 허용할 수 있도록 합니다.

 

이는 고객분들이 최근 AWS에서 구축하는 방식의 요구 사항에도 잘 부합하는 기능입니다. 중앙 CA계층은 더 이상 계정당 하나의 CA가 필요하지 않기 때문에 CA의 중앙 집중식 관리를 가능하게 하고 비용을 절감할 수 있습니다. 또한 조직은 PKI 팀이 CA를 관리하는 데 필요한 액세스를 단순화할 수 있지만 CA는 하나의 계정에 있고 여러 계정에서 발급을 공유할 수 있습니다. 여기에는 SSL / TLS 모든 곳과 많은 생산 라인 시스템에서 인증서를 생성해야 하는 사물 인터넷(IoT) 생산과 같은 경우가 포함됩니다.

 

새로 출시된 Private CA Cross-Account Sharing기능은 AWS Resource Access Manager(RAM)를 사용하여 권한을 관리함으로써 중앙집중식 CA를 통해 인증서를 생성하고 발급할 수 있는 권한을 다른 계정에 부여할 수 있습니다. 이렇게 하면 모든 계정에 사설 CA가 필요하지 않기 때문에 생성된 각 CA에 대해 약 400달러를 절약할 수 있는 보다 비용 효율적인 배포 방법입니다. 또한 개인 CA가 공유되는 각 계정은 자체 계정에 개인 인증서를 생성하고 키가 인증서 생성 계정에 있으며 그곳에서 완전히 보호되기 때문에 인증서에 대한 모든 권한을 유지합니다. 인증서 생성 계정은 인증서를 계정의 모든 리소스에 연결하거나 나중에 사용하기 위해 내보낼 수 있습니다. 생성된 각 인증서에는 ACM의 완전한 관리형 갱신 기능도 있습니다.

 

그럼 우선 제 단일 계정과 ACM 사설 CA를 보여드리겠습니다. 이 기능은 AWS Organizations에서도 작동합니다. 공유 사설 CA의 보조 계정에서 인증서를 생성하는 몇 가지 예를 제공하기 위해 AWS 명령줄 인터페이스 (CLI) 및 ACM 콘솔을 통해 이를 수행하는 방법을 알아보겠습니다.

 

 

솔루션 개요

이 솔루션은 사용 및 구성이 간단합니다. 먼저 단일 계정에 이미 생성된 ACM 사설 CA가 있어야 합니다. 그렇지 않은 경우 ACM 사설 CA 사용 설명서를 보고 단계를 따라하시면 생성할 수 있습니다.

공유할 CA를 선택한 후 리소스 공유를 생성하고 AWS RAM 을 사용하여 사설 CA를 포함할 수 있습니다.  이를 전체 AWS Organizations 구조, AWS 조직 단위 또는 AWS Organizations 내부 및 외부의 개별 계정과 공유할 수 있습니다. CA를 공유하고 공유 계정이 리소스 공유를 수락하면 ACM 콘솔이나 CLI, API 또는 AWS CloudFormation을 통해 인증서를 생성할 수 있습니다. CA에서 인증서를 생성, 관리, 바인딩 및 내보내는 기능만 공유하며 관리 기능을 공유하고 있지 않습니다. 이를 통해 사설 CA의 관리자와 사용자를 분리할 수 있습니다. ACM 사설 CA 공유를 위한 워크 플로우는 다음과 같습니다. (그림 1 참조)

 

  1. 공유할 사설 CA와 공유할 계정을 확인하세요.
  2. 리소스 공유를 생성한 다음 ACM 사설 CA를 공유에 추가합니다.
  3. 단일 계정 또는 AWS Organizations 구조와 리소스를 공유합니다.
  4. 공유 계정에서 ACM 콘솔을 통해 인증서를 생성합니다 (단일 계정 또는 전체 AWS Organizations 구조와 공유하도록 선택할 수 있습니다. 둘 다 수행 할 필요는 없음).
    • 사설 CA를 AWS Organizations 계정과 공유합니다.
    • 개인 계정과 사설 CA를 공유하세요.

 

그림 1: ACM 사설 CA 공유를 위한 워크 플로우 다이어그램

전제 조건

이 실습에서는 다음과 같은 필수 구성 요소가 있어야 합니다.

 

 

AWS Management Console 통해 솔루션 배포

준비가 다 끝났다면 이제 실습을 시작하겠습니다. AWS Management Console을 통해 사설 인증서를 생성하여 이 사설 CA를 공유하고 성공 여부를 확인하는 과정까지 각 단계별로 안내해 드리겠습니다.

 

AWS Management Console을 통한 솔루션 배포

  1. 먼저 AWS RAM 콘솔에서 공유 리소스를 생성합니다. 이는 사설 CA OWNING 계정에서 완료됩니다.
    1. AWS Management Console에 로그인합니다. 서비스는 리소스 액세스 관리자 콘솔을 선택하세요.
    2. 왼쪽 창에서 리소스 공유를 선택한 다음 리소스 공유 생성을 선택합니다.
    3. 이름은 Shared_Private_CA을 인력하세요.
    4. 리소스는 ACM 개인 CA를 선택하세요.

 

그림 2: 리소스 공유 만들기

 

e. 원칙은 AWS 조직 또는 개인 계정을 선택합니다.

f. 리소스 공유 생성을 선택합니다.

 

2. 다음으로, 공유 계정에서 공유 리소스를 수락합니다. 주의: AWS Organizations와 공유하기로 선택한 경우 수락 단계가 필요하지 않습니다. 조직 또는 조직 단위와 공유하면 해당 컨테이너의 모든 계정이 수락 단계를 거치지 않고 액세스할 수 있습니다. 계정에 대한 리소스 공유를 수락하면 리소스를 나열할 때 계정에 표시되는 공유 리소스를 제어할 수 있습니다. 사용자가 알지 못하거나 신뢰할 수 없는 계정에서 공유된 원하지 않는 리소스가 시스템에 표시되지 않도록 원치 않는 공유를 거부할 수 있습니다.

a. 공유 계정에서 AWS Management Console에 로그인합니다. 서비스는 리소스 액세스 관리자 콘솔을 선택하세요.

b. 왼쪽 창의 공유 항목 아래에서 리소스 공유를 선택합니다. (이미지에 공유 초대가 보류 중임이 보입니다.)

그림 3: 보류 중인 리소스 공유

 

c. 공유 리소스의 이름을 선택한 다음 Accept resource share를 선택합니다.

d. 공유가 수락된 후 리소스 공유 아래에 Shared_Private_CA가 이제 활성으로 나열됩니다.

 

그림 4: 활성 공유

 

3. 다음으로 공유 계정의 Shared_Private_CA에서 인증서를 만듭니다.

a. 동일한 계정에서 인증서 관리자 콘솔로 이동합니다.

b. 인증서 요청을 선택합니다.

c. 개인 인증서 요청 옵션을 선택한 다음 인증서 요청을 선택합니다.

d. CAShared_Private_CA 선택하고 다음을 선택하세요.

e. 도메인 이름 추가에는, www.example2.com을 입력하고 다음을 선택하세요.

f. 검토 요청을 선택한 다음, 확인 요청을 선택하세요.

g. 이제 계정의 Shared_Private_CA에서 발급한 새 ACM 인증서를 볼 수 있습니다.

 

그림 5: 공유 ACM 사설 CA에서 발급한 인증서

 

 

AWS CLI 통해 솔루션 배포

이렇게 AWS Management Console을 사용하여 실습을 완료했습니다. 그렇다면 이번엔 AWS CLI를 사용하여 사설 CA를 공유하고 사설 인증서를 생성하는 과정을 보여드리겠습니다.

 

AWS CLI를 사용한 솔루션 배포

  1. 먼저 AWS RAM 콘솔에서 공유 리소스를 생성합니다. ACM 사설 CA OWNING 계정의 자격 증명을 사용하여 다음 명령을 실행합니다. (기울임 꼴로 표시된 값 수정 필요)

aws ram create-resource-share –-name Shared_Private_CA –resource-arn arn:aws:acm-pca:region:111122223333:certificate-authority/fb149362-7de8-47be-8149-example –principals 444455556666 

2. 다음으로, 공유 계정에서 공유 리소스를 수락합니다. 공유 계정의 자격 증명을 사용하여 다음 명령을 실행합니다. (italics 체로 표시된 값 수정 필요)

aws ram accept-resource-share-invitation –resource-share-invitation-arn arn:aws:ram:region:111122223333:resource-share-invitation/ce4b7501-c93d-4477-a19b-example 

3. 다음으로 Shared_Private_CA에서 인증서를 만듭니다. (italics 체로 표시된 값 수정 필요)

aws acm request-certificate –-domain-name www.example2.com –certificate-authority-arn arn:aws:acm-pca:region:111122223333:certificate-authority/12345678-1234-1234-1234-example –validation-method DNS 

4. 마지막으로 describe- certificate를 실행하여 인증서를 확인합니다. (이탤릭체로 표시된 값을 자신의 값으로 바꾸어야 함)

$ aws acm describe-certificate –certificate-arn arn:aws:acm:region:444455556666:certificate/523ffc50-824a-492e-ac11-example

 

예제 출력은 다음과 같습니다.

{

    “Certificate”: {

        “CertificateArn”: “arn:aws:acm:region:444455556666:certificate/523ffc50-824a-492e-ac11-example”,

        “DomainName”: “www.example2.com”,

        “SubjectAlternativeNames”: [

            “www.example2.com”

        ],

        “DomainValidationOptions”: [

            {

                “DomainName”: “www.example2.com”,

                “ValidationEmails”: [],

                “ValidationDomain”: “www.example2.com”,

                “ValidationStatus”: “SUCCESS”,

                “ValidationMethod”: “DNS”

            }

        ],

        “Serial”: “54:e6:ee:06:2b:35:d4:c6:53:88:1d:c8:47:f0:5a:1e”,

        “Subject”: “CN=www.example2.com”,

        “Issuer”: “Example.com”,

        “CreatedAt”: “2020-07-20T09:37:51-05:00”,

        “IssuedAt”: “2020-07-20T09:37:56-05:00”,

        “Status”: “ISSUED”,

        “NotBefore”: “2020-07-20T08:37:54-05:00”,

        “NotAfter”: “2021-08-20T09:37:54-05:00”,

        “KeyAlgorithm”: “RSA-2048”,

        “SignatureAlgorithm”: “SHA256WITHRSA”,

        “InUseBy”: [],

        “Type”: “PRIVATE”,

        “KeyUsages”: [

            {

                “Name”: “DIGITAL_SIGNATURE”

            },

            {

                “Name”: “KEY_ENCIPHERMENT”

            }

        ],

        “ExtendedKeyUsages”: [

            {

                “Name”: “TLS_WEB_SERVER_AUTHENTICATION”,

                “OID”: “1.3.6.1.5.5.7.3.1”

            },

            {

                “Name”: “TLS_WEB_CLIENT_AUTHENTICATION”,

                “OID”: “1.3.6.1.5.5.7.3.2”

            }

        ],

        “CertificateAuthorityArn”: “arn:aws:acm-pca:region:111122223333:certificate-authority/f1d590ea-e14a-4c92-8de9-example”,

        “RenewalEligibility”: “INELIGIBLE”,

        “Options”: {

            “CertificateTransparencyLoggingPreference”: “ENABLED”

        }

    }

}

 

 

결론

오늘은 ACM 사설 CA를 단일 계정 또는 AWS Organization과 공유한 다음 해당 공유 사설 CA에서 인증서를 생성하는 방법을 보여주었습니다. AWS Management Console과 AWS CLI를 통해 이 두 작업을 모두 수행하는 단계를 거쳤으며, 이제 ACM 사설 CA를 중앙 집중화하고 이를 다른 AWS 계정과 공유하여 사설 인증서를 발급할 수 있습니다. 이를 통해 비용, 관리 오버 헤드를 줄이고 CA 사용자로부터 PKI 관리자를 분리하는 것이 더 쉬워져 AWS 인프라 및 보안에 집중할 수 있는 시간을 확보할 수 있습니다.

해당 솔루션에 대한 사용 사례가 궁금하시다면 ACM 사용 설명서의 ACM 사설 CA 모범 사례 항목을 살펴봐 주시기 바랍니다.

 

원문URL:https://aws.amazon.com/ko/blogs/security/how-to-use-aws-ram-to-share-your-acm-private-ca-cross-account/

원문 저자: Tracy Pierce

Tracy는 aws의 원격 컨설팅 서비스의 보안 전문 수석 컨설턴트 입니다. 그녀는 아마존의 독특한 문화를 즐기고, 이를 동료 엔지니어들과 고객들에게도 전달하여 그들의 매일매일이 흥미진진할 수 있게 노력합니다. 고객 강박증(Customer Obsession)은 그녀의 최우선 과제로서  프로세스, 문서화, 그리고 구축 지침서 들을 개선함으로써 이를 실현하고 있습니다. 그녀는 SCTD, SSCP 인증, AWS Developer Associate 인증, AWS Security Specialist 인증에서 AS를 받았습니다. 직장 밖에서는 그녀의 친구들과 고양이 세 마리와 함께 시간을 즐깁니다. 때때로 누군가의 요청으로 벽에 만화 캐릭터를 그려 재미있는 업무 환경을 조성하기도 합니다.

 

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