AWS Config에서 관리 규칙을 정기적으로 평가하는 방법

경위



AWS Config에는 AWS 리소스가 올바른 설정인지 확인하는 기능이 있습니다.
다음은 예입니다.
  • S3 버킷이 공용 읽기 액세스를 허용하지 않는지 확인합니다.
  • AWS 계정에서 AWS CloudTrail이 활성화되어 있는지 확인합니다.
  • RDS DB 인스턴스의 고가용성이 활성화되어 있는지 확인합니다.

  • 첫 번째 비 호환 이메일을 놓치면
    위의 규칙을 준수하지 않는 상태가 계속됩니다.
    꽤 끔찍하네요.
    그 때문에, 룰을 정기적으로 평가시켜 보게 되었습니다.

    착각



    AWS Config의 관리형 규칙에 대해 착각하고,
    룰의 상세의 트리거 타입을 「설정의 변경」→「정기적」으로 하면
    누구나 정기 실행이 가능하다고 생각했습니다.

    하지만 규칙을 Edit에서 열어도 "정기적"이 회색으로되어 체크할 수없는 것이 있습니다.

    AWS 지원에서 가르쳐 준 조치



    StartConfigRulesEvaluation을 Lambda로 구현하고 CloudWatch Events에서 Lambda를 정기적으로 실행하면
    요구를 충족시킬 수 있었다는 것이었습니다.

    Lambda용 Role



    이하의 Policy를 작성해 지금부터 작성하는 Lambda용의 Role에 첨부하면 OK입니다.

    JSON의 경우


    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "config:StartConfigRulesEvaluation",
                "Resource": "*"
            }
        ]
    }
    

    관리 콘솔의 경우





    Lambda(Python3.6)



    파이썬 참고 페이지 을 참조하면서 작성한 코드가 여기입니다.
    import boto3
    
    client = boto3.client('config')
    
    def lambda_handler(event, context):
        response = client.start_config_rules_evaluation(
            ConfigRuleNames=[
                's3-bucket-public-read-prohibited',
                'cloudtrail-enabled',
                'rds-multi-az-support' 
            ]
        )
    

    ConfigRuleNames의 위치에 관리 규칙의 항목 이름을 기재하면 됩니다.
    위에서 만든 Role을 선택하면 Lambda 화면에서 Config가 연동됩니다.



    CloudWatch 이벤트



    스케줄에서 확인하고 싶은 간격을 설정하고 Lambda를 지정하면 연계가 완료됩니다.


    확인 방법



    규칙의 항목에서 평가 상태를 확인합니다.
    마지막으로 성공한 호출과 마지막으로 성공한 평가가 지정된 간격으로 업데이트되면 성공입니다.



    함정



    AWS Config는 사양에 따라 규칙 준수 및 비준수 상태 변경 시에만 알려줍니다.
    즉, 비준수가 계속되는 경우에는 메일 통지가 없습니다.
    서포트로부터 상기의 회답을 받았으므로 2019년 2월 말 시점에서는 대체 수단도 없어서
    「운용으로 커버」를 하지 않으면 안 되는 것 같습니다・・・

    ■ 공식 링크
    공식 페이지
    블랙 벨트
    AWS Config 관리형 규칙 목록

    ■ AWS Config 과거 기사
    AWS Config의 알림 내용을 Lambda로 성형

    좋은 웹페이지 즐겨찾기