

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

# AWS Config의 사용자 지정 적합성 팩용 템플릿 생성
<a name="custom-conformance-pack"></a>

사용자 지정 적합성 팩이란 단일 계정 및 단일 AWS 리전 또는 AWS Organizations의 단일 조직 전체에 함께 배포할 수 있는 AWS Config 규칙 및 문제 해결 작업의 고유한 모음입니다.

사용자 지정 적합성 팩을 생성하려면 다음 **템플릿 사용자 지정** 섹션의 단계에 따라 작업하려는 [AWS Config 관리형 규칙](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) 또는 [AWS Config사용자 지정 규칙](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html)의 목록이 포함된 YAML 파일을 작성합니다.

**Topics**
+ [용어](#custom-conformance-pack-terminology)
+ [템플릿 사용자 지정](#create-yaml-file.title)

## 용어
<a name="custom-conformance-pack-terminology"></a>

*AWS Config 관리형 규칙*은 AWS Config가 소유한 사전 정의된 규칙입니다.

*AWS Config 사용자 지정 규칙*은 처음부터 새로 생성하는 규칙입니다.

AWS Config 사용자 지정 규칙을 생성하는 두 가지 방법이 있습니다. Lambda 함수([AWS Lambda 개발자 안내서](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-function))를 사용하는 방법과 policy-as-code 언어인 Guard([Guard GitHub 리포지토리](https://github.com/aws-cloudformation/cloudformation-guard))를 사용하는 방법입니다. AWS Lambda로 생성된 AWS Config 사용자 지정 규칙을 **AWS Config 사용자 지정 Lambda 규칙이라고 하고 Guard로 생성된 AWS Config 사용자 지정 규칙을 **AWS Config 사용자 지정 정책 규칙이라고 합니다.

## 템플릿 사용자 지정
<a name="create-yaml-file.title"></a>

 **YAML 파일 작성** 

YAML 파일을 작성하려면 텍스트 편집기를 열고 파일을 *.yaml*로 저장합니다.

**참고**  
파일에는 **파라미터** 및 **리소스** 섹션이 포함됩니다.

**파라미터**

YAML 파일의 `Parameters` 섹션은 `Resources` 섹션 뒷부분에서 추가할 AWS Config 규칙 세트의 규칙 파라미터를 위한 것입니다. 다음 코드 블록을 복사하여 YAML 파일에 붙여넣고 필요에 따라 사용자 지정하고 각 규칙 파라미터에 대해 반복하여 `Parameters` 섹션을 생성합니다.

```
Parameters:    
    NameOfRuleParamNameOfRuleParameter: 
        Default: Parameter value
        Type: Type    
    ...
```

예:

```
Parameters:
    IamPasswordPolicyParamMinimumPasswordLength:
        Default: '14'
        Type: String
```

**참고**  
AWS Config 규칙을 선택하여 사용자 지정 적합성 팩을 빌드할 때는 AWS Config 규칙에 대해 평가할 리소스가 계정 내에 프로비저닝되어 있는지 확인합니다.

1. `Parameters:` 뒤에 있는 파라미터 섹션의 첫 번째 줄은 *NameOfRule* \$1 Param \$1 *NameOfRuleParameter* 문자열입니다.

   1. `NameOfRule`을 규칙에 대해 생성한 일관된 이름으로 바꿉니다. 예를 들면 **iam-password-policy **규칙의 **IamPasswordPolicy**입니다.

   1. 유형 `Param`

   1. 그런 다음 `NameOfRuleParameter`를 특정 규칙의 규칙 파라미터의 이름으로 바꿉니다. AWS Config 관리형 규칙의 경우 규칙 파라미터의 이름은 [AWS Config 관리형 규칙 목록](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)에 있습니다. 예를 들어 **MinimumPasswordLength**는 **iam-password-policy** 규칙의 규칙 파라미터 이름입니다. AWS Config 사용자 지정 규칙의 경우 규칙 파라미터의 이름은 규칙을 생성할 때 선택한 이름입니다.

1. AWS Config 관리형 규칙을 사용하는 경우 관리형 규칙 목록에서 적절한 AWS Config 규칙을 찾아 특정 규칙에 대해 허용되는 `Default` 및 `Type`의 값을 알 수 있습니다. AWS Config 사용자 지정 규칙의 경우 규칙을 생성할 때 선택한 값을 사용합니다.
**참고**  
각 파라미터에 대해 `Type`을 지정해야 합니다. `Type`은 ‘문자열’, ‘int’, ‘double’, ‘CSV’, ‘부울’, ‘StringMap’ 중 하나일 수 있습니다.

**리소스**\$1

이 `Resources` 섹션에는 사용자 지정 적합성 팩에 추가되는 규칙이 나열되어 있습니다. `Parameters` 섹션 바로 아래에 다음 `Resources` 블록을 추가한 다음 필요에 따라 사용자 지정하고 각 규칙에 대해 반복합니다. 사양에 대한 자세한 내용은 [AWS::Config::ConfigRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#aws-resource-config-configrule-syntax)을 참조하세요.

```
Resources:
     NameOfRule:
        Properties:
            ConfigRuleName: ActualConfigRuleName  
            InputParameters:
                NameOfRuleParameter: !Ref NameOfRuleParamNameOfRuleParameter
            Source:
                Owner: Owner
                SourceIdentifier: SOURCE_IDENTIFIER
        Type: AWS::Config::ConfigRule
     ...
```

예:

```
Resources:
    IamPasswordPolicy:
        Properties:
            ConfigRuleName: iam-password-policy
            InputParameters:
                MinimumPasswordLength: !Ref IamPasswordPolicyParamMinimumPasswordLength
            Source:
                Owner: AWS
                SourceIdentifier: IAM_PASSWORD_POLICY
        Type: AWS::Config::ConfigRule
```

**참고**  
AWS Config 규칙을 선택하여 사용자 지정 적합성 팩을 빌드할 때는 AWS Config 규칙에 대해 평가할 리소스가 계정 내에 프로비저닝되어 있는지 확인합니다. 자세한 내용은 [지원되는 리소스 유형](https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html) 섹션을 참조하세요.

1. `NameOfRule`을 `Parameters` 섹션에서 지정한 이름으로 바꿉니다.

1. AWS Config 관리형 규칙의 경우 `ActualConfigRuleName`을 [AWS Config 관리형 규칙 목록](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)의 해당 규칙 페이지의 제목으로 바꿉니다. AWS Config 사용자 지정 규칙의 경우 규칙을 생성할 때 선택한 Config 규칙 이름을 사용합니다.

1. `NameOfRuleParameter`을 `Parameters` 섹션에서 사용한 이름으로 바꿉니다. `Parameters` 섹션에서 생성한 것과 동일한 연결된 문자열 `!Ref` \$1 *NameOfRule* \$1 Param \$1 *NameOfRuleParameter*를 복사하여 콜론 뒤에 붙여 넣습니다.

1. `Owner`를 적절한 값으로 변경합니다.
**참고**  
**AWS Config 관리형 규칙**  
AWS Config 관리형 규칙의 경우 `Owner`의 값은 `AWS`입니다.  
**AWS Config 사용자 지정 규칙**  
Guard로 생성한 AWS Config 사용자 지정 규칙의 경우 `Owner`의 값은 `CUSTOM_POLICY`입니다. Lambda로 생성한 AWS Config 사용자 지정 규칙의 경우 `Owner`의 값은 `CUSTOM_LAMBDA`입니다.

1. `SOURCE_IDENTIFIER`를 적절한 값으로 변경합니다.
**참고**  
**AWS Config 관리형 규칙**  
AWS Config 관리형 규칙의 경우 [AWS Config 관리형 규칙 목록](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)에서 선택한 규칙의 링크를 따라 식별자를 복사합니다. 예를 들어 **access-keys-rotated** 규칙의 소스 식별자는 **ACCESS\$1KEYS\$1ROTATED**입니다.   
**AWS Config 사용자 지정 규칙**  
Lambda로 생성된 AWS Config 사용자 지정 규칙의 경우 `SourceIdentifier`는 해당 규칙 AWS Lambda 함수의 Amazon 리소스 이름(ARN)입니다(예: `arn:aws:lambda:us-east-2:123456789012:function:ActualConfigRuleName`). Guard로 생성된 AWS Config 사용자 지정 규칙의 경우 이 필드는 필요하지 않습니다.

전체적으로, 작성한 사용자 지정 적합성 팩은 다음 예제와 비슷합니다. 이 예제에서는 AWS Config 관리형 규칙 **iam-password-policy**, **access-keys-rotated** 및 **iam-user-unused-credentials-check**가 사용되었습니다.

```
Parameters:
    IamPasswordPolicyParamMinimumPasswordLength:
        Default: '14'
        Type: String
    AccessKeysRotatedParamMaxAccessKeyAge:
        Default: '90'
        Type: String
    IamUserUnusedCredentialsCheckParamMaxCredentialUsageAge:
        Default: '45'
        Type: String
Resources:
    IamPasswordPolicy:
        Properties:
            ConfigRuleName: iam-password-policy
            InputParameters:
                MinimumPasswordLength: !Ref IamPasswordPolicyParamMinimumPasswordLength
            Source:
                Owner: AWS
                SourceIdentifier: IAM_PASSWORD_POLICY
        Type: AWS::Config::ConfigRule    
    AccessKeysRotated:
        Properties:
            ConfigRuleName: access-keys-rotated
            InputParameters:
                maxAccessKeyAge: !Ref AccessKeysRotatedParamMaxAccessKeyAge
            Source:
                Owner: AWS
                SourceIdentifier: ACCESS_KEYS_ROTATED
        Type: AWS::Config::ConfigRule
    IamUserUnusedCredentialsCheck:
        Properties:
            ConfigRuleName: iam-user-unused-credentials-check
            InputParameters:
                maxCredentialUsageAge: !Ref IamUserUnusedCredentialsCheckParamMaxCredentialUsageAge
            Source:
                Owner: AWS
                SourceIdentifier: IAM_USER_UNUSED_CREDENTIALS_CHECK
        Type: AWS::Config::ConfigRule
```