

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

# 모범 사례
<a name="acm-bestpractices"></a>

 모범 사례는 AWS Certificate Manager(AWS Certificate Manager)를 보다 효과적으로 사용하는 데 도움이 되는 권장 사항입니다. 다음 모범 사례는 현재 ACM 고객의 실제 경험을 기반으로 합니다.

**Topics**
+ [계정 수준 분리](#best-practices-account-separation)
+ [AWS CloudFormation](#best-practices-cloudformation)
+ [사용자 지정 트러스트 스토어](#best-practices-custom-trust-stores)
+ [인증서 고정](#best-practices-pinning)
+ [도메인 검증](#best-practices-validating)
+ [도메인 이름 추가 또는 삭제](#best-practices-add-delete)
+ [켜기AWS CloudTrail](#best-practices-ct)

## 계정 수준 분리
<a name="best-practices-account-separation"></a>

정책에서 계정 수준 분리를 사용하여 계정 수준에서 인증서에 액세스할 수 있는 사용자를 제어합니다. 프로덕션 인증서를 테스트 및 개발 인증서와 별도의 계정에 보관합니다. 계정 수준 분리를 사용할 수 없는 경우 정책의 `kms:CreateGrant` 작업을 거부하여 특정 역할에 대한 액세스를 제한할 수 있습니다. 이렇게 하면 상위 수준에서 인증서에 서명할 수 있는 계정의 역할을 제한합니다. 권한 부여 용어를 비롯한 권한 부여에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [Grants in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 참조하세요.

계정별 `kms:CreateGrant` 사용을 제한하는 것보다 세분화된 제어를 원하는 경우 [kms:EncryptionContext](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-encryption-context) 조건 키를 사용하여 특정 인증서로 `kms:CreateGrant`를 제한할 수 있습니다. `arn:aws:acm`을 키로 지정하고 제한할 ARN의 값을 지정합니다. 다음 예제 정책에서는 특정 인증서의 사용을 금지하지만 다른 인증서는 허용합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Sid": "VisualEditor0",
           "Effect": "Deny",
           "Action": "kms:CreateGrant",
           "Resource": "*",
           "Condition": {
               "StringEquals": {
                   "kms:EncryptionContext:aws:acm:arn": "arn:aws:acm:us-east-1:{{111122223333}}:certificate/b26def74-1234-4321-9876-951d4c07b197"
               }
           }
       }
   ]
}
```

------

## AWS CloudFormation
<a name="best-practices-cloudformation"></a>

를 AWS CloudFormation사용하여 사용하려는 AWS리소스를 설명하는 템플릿을 생성할 수 있습니다. CloudFormation그런 다음는 이러한 리소스를 프로비저닝하고 구성합니다.CloudFormation는 Elastic Load Balancing, Amazon CloudFront, Amazon API Gateway와 같이 ACM에서 지원하는 리소스를 프로비저닝할 수 있습니다. 자세한 내용은 [통합 서비스를 사용한 관리형 자동화](acm-services.md) 단원을 참조하십시오.

CloudFormation를 사용하여 여러 테스트 환경을 빠르게 생성하고 삭제하는 경우 각 환경에 대해 별도의 ACM 인증서를 생성하지 않는 것이 좋습니다. 그렇게 하면 인증서 할당량에 빠르게 도달하게 됩니다. 자세한 내용은 [할당량](acm-limits.md) 단원을 참조하십시오. 대신 테스트를 위해 사용중인 모든 도메인 이름을 포함하는 와일드카드 인증서를 생성합니다. 예를 들어 {{<version>}}`.service.example.com`과 같은 버전 번호에 따라서만 달라지는 도메인 이름에 대해 ACM 인증서를 반복적으로 생성할 경우 {{<\*>}}`.service.example.com`에 대한 단일 와일드카드 인증서를 대신 생성하세요.

**중요**  
Amazon CloudFront 배포를 사용하는 경우 HTTP 검증은 와일드카드 인증서를 지원하지 않습니다. Amazon CloudFront에서 사용할 CloudFormation 템플릿에 와일드카드 인증서를 포함할 때는 DNS 검증 또는 이메일 검증을 사용해야 합니다. 자동 갱신 기능을 사용하려면 DNS 검증을 사용하는 것이 좋습니다.

가 테스트 환경을 생성하는 데 CloudFormation사용하는 템플릿에 와일드카드 인증서를 포함합니다.

## 사용자 지정 트러스트 스토어
<a name="best-practices-custom-trust-stores"></a>

 ACM 인증서로 보호되는 엔드포인트에 대한 연결을 보장하려면 [Amazon 루트](https://www.amazontrust.com/repository/)를 사용자 지정 트러스트 스토어에 포함하는 것이 좋습니다. Amazon Root 인증 기관은 다양한 키 유형과 알고리즘을 나타낼 수 있습니다. Starfield Services Root Certificate Authority - G2는 업데이트할 수 없는 다른 이전 트러스트 스토어 및 클라이언트와 호환되는 이전 루트입니다. 모든 루트 CA를 포함하면 애플리케이션의 호환성을 극대화할 수 있습니다.

## 인증서 고정
<a name="best-practices-pinning"></a>

인증서 고정(SSL 고정이라고도 함)은 애플리케이션에서 해당 호스트를 인증서 계층 대신 X.509 인증서 또는 퍼블릭 키와 직접 연결하여 원격 호스트의 유효성을 검증하는 데 사용할 수 있는 프로세스입니다. 따라서 애플리케이션은 SSL/TLS 인증서 체인 유효성 검증을 피하기 위해 고정을 사용합니다. 일반적인 SSL 유효성 검증 프로세스는 루트 인증 기관(CA) 인증서에서 하위 CA 인증서(있는 경우)를 통해 인증서 체인 전체의 서명을 확인합니다. 또한 저계층부터 원격 호스트를 위해 인증서를 확인합니다. 대신 애플리케이션은 루트 인증서 또는 체인의 다른 인증서가 아닌 해당 인증서만 *유일하게* 신뢰할 수 있다는 원격 호스트에 대한 인증서를 고정할 수 있습니다. 과정 중에도 원격 호스트의 인증서 혹은 퍼블릭 키를 사용자 애플리케이션에 추가할 수 있습니다. 그렇지 않으면 호스트에 처음 연결할 때 원격 호스트의 인증서 혹은 퍼블릭 키를 사용자 애플리케이션에 추가할 수 있습니다.

**주의**  
애플리케이션에서 ACM 인증서를 고정하지 **않는** 것이 좋습니다. ACM은 [에서 관리형 인증서 갱신 AWS Certificate Manager](managed-renewal.md)을 수행하여 Amazon이 발급한 SSL/TLS 인증서를 만료되기 전에 자동으로 갱신합니다. 인증서를 갱신하기 위해 ACM은 새로운 퍼블릭-프라이빗 키 페어를 생성합니다. 애플리케이션에서 ACM 인증서를 고정했는데 그 인증서가 새 퍼블릭 키로 갱신되면 애플리케이션이 도메인에 연결하지 못하게 될 수 있습니다.

인증서를 고정하기로 결정한 경우 다음 옵션을 사용하면 애플리케이션이 도메인에 연결하는 데 지장을 주지 않습니다.
+ [자체 인증서를 ACM으로 가져온](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) 다음 애플리케이션을 가져온 인증서에 고정합니다. ACM은 가져온 인증서를 자동으로 갱신하지 않습니다.
+ 퍼블릭 인증서를 사용하는 경우 애플리케이션을 [Amazon 루트 인증서](https://www.amazontrust.com/repository/)에 고정합니다. 프라이빗 인증서를 사용하는 경우 애플리케이션을 CA의 루트 인증서에 고정합니다.

## 도메인 검증
<a name="best-practices-validating"></a>

Amazon 인증 기관(CA)이 사이트에 대한 인증서를 발급하려면 먼저 AWS Certificate Manager(ACM)에서 요청에 지정한 모든 도메인을 소유 또는 제어하고 있는지 확인해야 합니다. 이메일 혹은 DNS를 사용하여 확인할 수 있습니다. 자세한 내용은 [AWS Certificate Manager DNS 검증DNS 검증](dns-validation.md) 및 [AWS Certificate Manager 이메일 검증](email-validation.md) 섹션을 참조하세요.

## 도메인 이름 추가 또는 삭제
<a name="best-practices-add-delete"></a>

기존 ACM 인증서에서 도메인 이름을 추가하거나 제거할 수 없습니다. 대신 수정된 도메인 이름 목록을 사용하여 새 인증서를 요청해야 합니다. 예를 들어 인증서에 5개의 도메인 이름이 있고 4개를 더 추가하려면 9개의 도메인 이름을 모두 포함한 새 인증서를 요청해야 합니다. 새로운 인증서에 대해 이전에 검증한 도메인 이름을 비롯하여 요청 중인 모든 도메인 이름의 소유권을 확인해야 합니다.

이메일 검증을 사용하면 각 도메인 이름에 대해 최대 8개의 검증 이메일을 받습니다. 그 중 하나 이상의 이메일에 대해 72시간 이내에 조치해야 합니다. 예를 들어, 5개의 도메인 이름을 포함하는 인증서를 요청할 경우 최대 40개의 검증 메시지을 수신하고 그 중 5개 이상의 이메일에 대해 72시간 이내에 조치해야 합니다. 인증서 요청의 도메인 이름 수가 증가하면 이메일을 사용하여 도메인 이름에 대한 소유권을 확인하는 데 필요한 작업도 증가합니다.

대신 DNS 검증을 사용할 경우, 인증할 FQDN에 대해 1개의 새 DNS 레코드를 데이터베이스에 작성해야 합니다. ACM은 생성할 레코드를 사용자에게 전송하고, 나중에 데이터베이스에 쿼리하여 레코드가 추가되었는지 확인합니다. 기록 추가를 통해 사용자가 도메인을 소유하고 제어함을 증명합니다. 앞선 예를 보면 도메인 이름을 5개 지정하면 반드시 5개의 DNS 기록을 생성해야 합니다. 따라서 가능하다면 DNS 검증을 사용하는 것을 권장합니다.

## 켜기AWS CloudTrail
<a name="best-practices-ct"></a>

ACM 사용을 시작하기 전에 CloudTrail 로깅을 활성화합니다. CloudTrail을 사용하면 AWS관리 콘솔, AWSSDKs, AWS Command Line Interface및 상위 수준 Amazon Web Services를 통해 수행된 AWSAPI 호출을 포함하여 계정에 대한 API 호출 기록을 검색하여 AWS배포를 모니터링할 수 있습니다. 또한 어떤 사용자 및 계정이 ACM API를 호출했는지, 어떤 소스 IP 주소에 호출이 수행되었는지, 언제 호출이 발생했는지도 확인할 수 있습니다. API를 사용해 CloudTrail을 애플리케이션에 통합시킴으로써 조직에 대한 추적 생성을 자동화하고 추적 상태를 확인하며 관리자가 CloudTrail 로깅을 활성화하고 비활성화하는 방식을 제어할 수 있습니다. 자세한 내용은 [추적 생성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)을 참조하세요. ACM 작업에 대한 예제 추적을 보려면 [에서 CloudTrail 사용 AWS Certificate Manager](cloudtrail.md) 섹션으로 이동하세요.