[시작] AWS Systems Manager를 통한 패치 관리(자습서)

AWS Systems Manager


사회는 바로 대관리 서비스 시대다.
이 세상의 모든 것이 거기에 있다고 한다(?).
이번에 말씀드린 Systems Manager는 시스템 관리에 있어 많은 기능을 갖추고 있습니다.
※ 전반적인 상황 파악은 어렵지만, AWS 뒷면에 구성관리/자동구축(Chef와 Ansible 등)이 사용됐을 수 있음
나는 이것이 그것에 근거하여 인프라 시설을 관리하는 서비스라고 생각한다.
이번에는 패치 관리에 관한 부분만 말씀드리겠습니다.

이 기사로 쓰겠습니다.

  • 패치 관리 아이디어
  • 하위 기능 유지 관리 창
  • 정보
  • 하위 기능 "패치 관리자"정보
  • 설치 방법
  • 1. 패치 관리에 대한 생각


    패치를 자동으로 적용할 수 없음(패치 내용을 하나하나 확인해야 함)
    나는 이 보도가 유용할 것이라고 생각한다.

    2. 하위 기능 "유지 관리 창" 정보


    실행 시간표의 시간 등을 정의합니다.
    또한 패치 관리에서 스캔 또는 스캔 및 설치를 결정합니다.
    ※ 이번엔 자동 패치를 사용할 수 없으므로 스캔만 가능합니다.

    3. 하위 기능 "패치 관리자" 정보


    PatchBaseline 규칙을 사용하여 적용할 패치를 설정합니다.
    다음은 요약할 수 있습니다. ※2020년 4월 13일 기준

  • 개체 EC2 제어
  • 특정 태그 설정만 자동으로 적용
  • (패치 그룹에 사전 가입) 그룹에서 통합 지정
  • 인스턴스를 수동으로 지정

  • 다양한 OS 지원
  • Amazon Linux
  • Amazon Linux2
  • CentOS
  • Red Hat Enterprise Linux
  • SUSE
  • Ubuntu
  • Windows
  • ※ 더 정교한 OS를 지정할 수도 있습니다.
    Windows의 경우 Win7~10/Win10LTC/Wins Server 2012 R2~2019 등.

  • 패치 분류를 지정할 수 있습니다.
  • CriticalUpdate
  • Driver
  • SecurityUpdates
  • FeaturePacks
  • etc...

  • 패치의 중요성을 지정할 수 있습니다.
  • Critical~Low/Unspecified

  • 기타
  • 패치 릴리스에서 패치 관리자에 이르는 대기 일수를 지정할 수 있습니다.
  • 어플리케이션의 패치를 자동으로 적용할 수도 있습니다.
  • 오피스와 AD 등 ※ AWS는 라이선스 문제로 오피스 자체를 거의 사용할 수 없습니다.
  • 대상자 명시/비대칭 패치 ※ Windows는 KB, Linux는 패키지명
  • 4. 설치 방법


    1. 관리 인스턴스 지원


    1-1. SSM 에이전트 설치


    WinServer 2012 R2(2016년 이후 공개), Amazon Linux2 등의 기본 설치가 완료되었습니다.
    ※ 수동 설치링크

    1-2. EC2 설치에 대한 SSM 에이전트 라이센스


    서비스 [IAM] 페이지에서 EC2용 IAM Role 작성
    SSM 에이전트가 사용하는 정책을 알아맞히십시오(Ama zonSSMManaged InstanceCore).





    서비스 [EC2] 페이지에서 위에서 설명한 IAM Role을 사용하여 EC2를 설계합니다.
    ※ 단계별 할애

    1-3. SSM 프록시 재부팅


    EC2 디버그 후 프록시 서비스를 다시 시작하면 Active 상태가 됩니다.
    sudo systemctl restart amazon-ssm-agent.service
    
    확인 명령을 실행하다.
    systemctl status amazon-ssm-agent.service -l
    
    다음은 결과입니다.
    ● amazon-ssm-agent.service - amazon-ssm-agent
       Loaded: loaded (/usr/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2020-03-16 04:43:36 UTC; 3s ago
     Main PID: 3440 (amazon-ssm-agen)
       CGroup: /system.slice/amazon-ssm-agent.service
               mq3440 /usr/bin/amazon-ssm-agent
    
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [LongRunningPluginsManager] There are no long running plugins currently getting executed - skipping their healthcheck
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [MessageGatewayService] listening reply.
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [StartupProcessor] Executing startup processor tasks
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [StartupProcessor] Write to serial port: Amazon SSM Agent v2.3.714.0 is running
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [StartupProcessor] Write to serial port: OsProductName: Amazon Linux
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [StartupProcessor] Write to serial port: OsVersion: 2
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [MessageGatewayService] Opening websocket connection to: wss://ssmmessages.ap-northeast-1.amazonaws.com/v1/control-channel/i-***?role=subscribe&stream=input
    Mar 16 04:43:39 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [MessageGatewayService] Successfully opened websocket connection to: wss://ssmmessages.ap-northeast-1.amazonaws.com/v1/control-channel/i-***?role=subscribe&stream=input
    Mar 16 04:43:40 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [MessageGatewayService] Starting receiving message from control channel
    Mar 16 04:43:40 *** amazon-ssm-agent[3440]: 2020-03-16 04:43:37 INFO [MessageGatewayService] [EngineProcessor] Initial processing
    

    1-4. SSM 프록시 사용 확인


    서비스 [Systems Manager] 페이지에서 관리 인스턴스 화면에 객체 EC2가 표시되는지 확인합니다.

    2. PatchBaseline 생성


    2-1. 창설


    패치 관리자 화면을 표시하려면 처음으로 다음 화면을 표시합니다.
    미리 정의된 패치 베이스라인 표시를 선택합니다.

    패치 베이스라인 작성을 선택합니다.

    이름 등 필수 항목을 입력합니다.
    ※ 이번 OS는 아마존 라인x2로 설정됐지만, 윈도 시스템 OS 설정 항목도 거의 변경되지 않았습니다.
    원하는 항목을 입력한 후 화면 아래의 패치 베이스라인 작성을 선택합니다.



    그럼 패치 기선의 일람화면으로 돌아가고 싶습니다.

    3. 유지 관리 창 만들기


    3-1. 창설


    방금 작성한 패치 베이스라인을 확인하고 [패치 적용 적용]을 선택합니다.

    자동 패치 관리를 위한 EC2 인스턴스를 설정합니다.
    이번에는 EC2의 인스턴스 태그 가져오기를 선택합니다.
    ※ Tag Key에는'Patch Group', Tag Value에는'Linux-Ppatch Baseline'
    Add를 선택하면 다음 이미지가 표시됩니다.

    "새 유지보수 창에서 시간표 만들기"를 선택하십시오.
    스케줄 설정 방법은 CRON/Rate 를 입력하는 것입니다.
    ※ 화면에 나타난 크론 시간표는 매월 마지막 날인 오전 2시에 실행된다는 의미입니다.
    Cron 구문 참조 페이지
    "유지보수 번호 창 이름"을 입력하고 "패치 적용 작업"을 엽니다
    스캔만 선택, 패치 적용 을 선택합니다.

    점검창 일람화면으로 이동합니다.
    작성된 유지 관리 창이 표시되는지 확인합니다.

    4. 스캔 실행


    4-1. 계획을 집행하다


    패치 검사는 스케줄링만 수행할 수 있고 수동으로 실행할 수 없습니다.
    ※ 검증을 위해서는 빠른 시간 내에 결과를 낼 수 있도록 설정해 주십시오.

    5. 스캔 후 패치 정보 확인


    5-1. 운영 환경 준비


    이번에는 방금 SSM 에이전트가 설치된 서버부터 AWS CLI를 실행합니다.
    AWS CLI 참조
    ※ 람바다는 파이톤이나 JAVA 언어로 수행할 수도 있습니다.

    5-2. CLI 실행 권한 부여


    AWS CLI를 실행할 때는 EC2의 IAM Role에 Policy를 부여해야 합니다.
    "1-2.EC2 SSM 프록시 설치 권한 부여"에서 만든 Role의
    상세 화면을 엽니다.
    첨부 정책을 선택합니다.

    AmazonSSM ReadOnlyAccess 또는 AmazonSSMFull Access를 설정해야 합니다.
    Policy 를 선택하고 첨부 정책을 선택합니다.

    5-3. 패치 검사 결과 목록 표시


    서버에 로그인하여 다음 명령을 실행하면 적용되지 않은 패치 목록이 표시됩니다.
    [ec2-user@*** ~]$ aws ssm describe-instance-patches --instance-id i-*** --filters Key=State,Values=Missing
    
    실행 결과는 다음과 같다.
    {
        "Patches": [
            {
                "KBId": "curl.x86_64", 
                "Severity": "Medium", 
                "Classification": "Security", 
                "Title": "curl.x86_64:0:7.61.1-12.93.amzn1", 
                "State": "Missing", 
                "InstalledTime": 0.0
            }, 
    ・
    ・
    ・
    

    5. 후기


    어때?
    간단한 관리라면 Systems Manager로 충분합니다.
    제작 상황에 따라 다음과 같은 구성도 가능합니다.
    ◇자동 적용되지 않은 패치 스캔
    1. CloudWatchEvents를 통해 유지 관리 창 종료 감지
    2. Lambda에서 패치 적용 안 함 목록을 만들어 S3에 업로드
      Amazon CloudWatch Events를 통해 Systems Manager 이벤트 모니터링
    ◇안전성에만 자동 적용
    1. 패치 베이스라인을 제작할 때 분류에서 "Security"를 선택
    2. 유지 보수 창을 만들 때 패치 적용 작업 중
    검색 및 설치 선택
    스케줄을 실행할 때 항상 보안 관련 패치만 설치합니다.
    ※ 설치에 실패할 수 있으므로 설치와 활용이 필요합니다.

    좋은 웹페이지 즐겨찾기