Amazon Web Services 한국 블로그

AWS Config 규칙 – 사전 예방적 규정 준수 지원 기능 출시

비즈니스를 운영할 때는 클라우드 운영의 속도와 제어 간의 절충점을 잘 찾아야 합니다. 애플리케이션에 필요한 클라우드 리소스를 신속하게 프로비저닝하는 기능이 필요합니다. 하지만 동시에 업계의 규제, 보안 및 운영 모범 사례도 지속적으로 준수해야 합니다.

AWS Config에서 제공하는 규칙감시 모드(detective mode)에서 실행하면, AWS 리소스의 구성 설정이 원하는 구성 설정과 호환되는지 평가할 수 있습니다. 이제부터 AWS에서는 AWS Config 규칙의 사전 예방 모드(proactive mode)를 지원하여, 프로비저닝 전에 언제든지 실행할 수 있게 하고 배포 전 검증을 자체 구현하는 데 필요한 시간을 줄일 수 있습니다.

표준 리소스 템플릿을 만들 때 플랫폼 팀은 AWS Config 규칙을 사전 예방 모드로 실행하여, 조직 전체에서 공유하기 전에 템플릿이 규정을 준수하는지 확인할 수 있습니다. 새로운 서비스나 새로운 기능을 구현할 때 개발 팀은 지속적 통합 및 지속적 전달(CI/CD) 파이프라인의 일환으로 규칙을 사전 예방 모드로 실행하여, 규정을 준수하지 않는 리소스를 식별할 수 있습니다.

또한 배포 파이프라인에서 AWS CloudFormation Guard를 사용하여 규정 준수를 사전에 확인하고, 리소스 프로비저닝 전후에 일관된 정책 집합이 적용되는지 확인할 수 있습니다.

실제로 어떻게 작동하는지 알아보겠습니다.

AWS Config를 통한 사전 예방적 규정 준수 사용
AWS Config 콘솔의 탐색 창에서 규칙을 선택합니다. 규칙 표에는 규칙이 사전 예방 모드인지 감시 모드인지를 나타내는 활성화된 평가 모드(Enabled evaluation mode) 열이 있습니다. 첫 번째 규칙을 설정하겠습니다.

콘솔 스크린샷.

규칙 추가(Add rule)를 선택한 다음 AWS 관리형 규칙(AWS Managed Rules) 검색 상자에 rds-storage를 입력하여 rds-storage-encrypted 규칙을 찾습니다. 이 규칙은 Amazon Relational Database Service(RDS) DB 인스턴스에 스토리지 암호화가 활성화되어 있는지 확인하는데, 사전 예방 또는 감시 평가 모드로 추가할 수 있습니다. 다음(Next)을 선택합니다.

콘솔 스크린샷.

평가 모드(Evaluation mode) 섹션에서 사전 예방 평가를 켭니다. 이제 사전 예방 평가와 감시 평가 스위치가 모두 활성화되었습니다.

콘솔 스크린샷.

다른 설정은 모두 기본값으로 두고 다음(Next)을 선택합니다. 다음 단계에서는 구성을 검토하고 규칙을 추가합니다.

콘솔 스크린샷.

이제 AWS Config API(AWS Command Line Interface(CLI)AWS SDK 포함)나 CloudFormation Guard를 이용해 사전 예방적 규정 준수를 사용할 수 있습니다. CI/CD 파이프라인에서는 AWS Config API를 사용하여, 리소스를 생성하기 전에 규정 준수 여부를 확인할 수 있습니다. AWS CloudFormation을 사용하여 배포할 때는 실제 배포가 이루어지기 전에 CloudFormation 후크를 설정하여 구성을 사전에 확인할 수 있습니다.

AWS CLI를 사용하는 예시를 확인해보겠습니다. 먼저 CloudFormation 스키마를 사용하여 리소스 ID (참조 전용), 리소스 유형 및 구성을 입력하여 StartProactiveEvaluationResponse API를 호출합니다. 쉽게 확인할 수 있도록 데이터베이스 구성에서는 StorageEncrypted 옵션만 사용하고 true로 설정하여 평가를 통과했습니다. 평가 제한 시간으로 60초를 사용했는데, 이 규칙에는 충분한 시간입니다.

aws configservice start-resource-evaluation --evaluation-mode PROACTIVE \
    --resource-details '{"ResourceId":"myDB",
                         "ResourceType":"AWS::RDS::DBInstance",
                         "ResourceConfiguration":"{\"StorageEncrypted\":true}",
                         "ResourceConfigurationSchemaType":"CFN_RESOURCE_SCHEMA"}' \
    --evaluation-timeout 60
{
    "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d"
}

GetResourceEvaluationSummary API를 사용하여 평가 상태를 확인하는 데 사용하게 되는 ResourceEvaluationId가 출력에 표시됩니다. 처음에는 평가가 IN_PROGRESS입니다. 일반적으로 COMPLIANT 또는 NON_COMPLIANT 결과를 얻으려면 몇 초가 지나야 합니다.

aws configservice get-resource-evaluation-summary \
    --resource-evaluation-id be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d
{
    "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d",
    "EvaluationMode": "PROACTIVE",
    "EvaluationStatus": {
        "Status": "SUCCEEDED"
    },
    "EvaluationStartTimestamp": "2022-11-15T19:13:46.029000+00:00",
    "Compliance": "COMPLIANT",
    "ResourceDetails": {
        "ResourceId": "myDB",
        "ResourceType": "AWS::RDS::DBInstance",
        "ResourceConfiguration": "{\"StorageEncrypted\":true}"
    }
}

예상대로 Amazon RDS 구성이 rds-storage-encrypted 규칙을 준수합니다. StorageEncryptedfalse로 설정한 상태에서 이전 단계를 반복하면 규정 미준수 결과가 표시됩니다.

한 리소스 유형에 대해 두 개 이상의 규칙을 사용하는 경우, 해당하는 모든 규칙이 리소스 평가를 위해 사전 예방 모드로 실행됩니다. 리소스에 대한 개별 규칙 수준 규정 준수를 확인하려면 GetComplianceDetailsByResource API를 호출하면 됩니다.

aws configservice get-compliance-details-by-resource \
    --resource-evaluation-id be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d
{
    "EvaluationResults": [
        {
            "EvaluationResultIdentifier": {
                "EvaluationResultQualifier": {
                    "ConfigRuleName": "rds-storage-encrypted",
                    "ResourceType": "AWS::RDS::DBInstance",
                    "ResourceId": "myDB",
                    "EvaluationMode": "PROACTIVE"
                },
                "OrderingTimestamp": "2022-11-15T19:14:42.588000+00:00",
                "ResourceEvaluationId": "be2a915a-540d-4595-ac7b-e105e39b7980-1847cb6320d"
            },
            "ComplianceType": "COMPLIANT",
            "ResultRecordedTime": "2022-11-15T19:14:55.588000+00:00",
            "ConfigRuleInvokedTime": "2022-11-15T19:14:42.588000+00:00"
        }
    ]
}

이러한 세부 정보를 확인할 때 원하는 규칙이 호출되지 않는다면, 사전 예방 모드가 켜져 있는지 확인하세요.

가용성 및 요금
사전 예방적 규정 준수는 AWS Config가 제공되는 모든 상용 AWS 리전에서 사용할 수 있지만, 모든 지역에 이 새로운 기능을 배포하려면 며칠이 걸릴 수 있습니다. 배포가 완료되면 이 게시물을 업데이트하겠습니다. 사전 예방 모드로 전환할 수 있는 AWS Config 규칙을 알고 싶다면 개발자 안내서를 참조하세요.

요금은 기록된 AWS Config 규칙 평가 수를 기준으로 부과됩니다. 규칙 평가는 AWS Config 규칙을 기준으로 리소스의 규정 준수를 평가할 때마다 기록됩니다. 규칙 평가는 감시 모드 및/또는 (가능한 경우) 사전 예방 모드에서 실행할 수 있습니다. 감시 모드와 사전 예방 모드 모두에서 규칙을 실행할 때는 감시 모드의 평가에 대해서만 요금이 부과됩니다. 자세한 내용은 AWS Config 요금을 참조하세요.

이 새로운 기능을 사용하면 프로비저닝하기 전에 AWS Config를 사용하여 규칙을 확인할 수 있으며, 검증을 자체 구현하지 않아도 됩니다.

Danilo