다음을 통해 공유


Azure Machine Learning에 대한 취약성 관리

취약성 관리에는 조직 시스템 및 소프트웨어에 존재하는 보안 취약성을 검색, 평가, 완화 및 보고하는 작업이 포함됩니다. 취약성 관리는 사용자와 Microsoft 간의 공동 책임입니다.

이 문서에서는 이러한 책임에 대해 논의하고 Azure Machine Learning에서 제공하는 취약성 관리 제어에 대해 간략히 설명합니다. 최신 보안 업데이트로 서비스 인스턴스와 애플리케이션을 최신 상태로 유지하는 방법과 공격자의 기회를 최소화하는 방법을 배우게 됩니다.

Microsoft 관리 VM 이미지

Azure Machine Learning은 Azure Machine Learning 컴퓨팅 인스턴스, Azure Machine Learning 컴퓨팅 클러스터 및 데이터 과학 Virtual Machines에 대한 호스트 OS VM(가상 머신) 이미지를 관리합니다. 업데이트 빈도는 월별이며 다음 세부 정보를 포함합니다.

  • 각각의 새 VM 이미지 버전에 대해 최신 업데이트는 OS의 원래 게시자로부터 제공됩니다. 최신 업데이트를 사용하면 적용 가능한 모든 OS 관련 패치를 얻을 수 있습니다. Azure Machine Learning의 경우 게시자는 모든 Ubuntu 이미지에 대해 Canonical입니다. 이러한 이미지는 Azure Machine Learning 컴퓨팅 인스턴스, 컴퓨팅 클러스터 및 Data Science Virtual Machines에 사용됩니다.

  • VM 이미지는 매월 업데이트됩니다.

  • 원래 게시자가 적용한 패치 외에도 Azure Machine Learning은 업데이트를 사용할 수 있을 때 컴퓨터 패키지를 업데이트합니다.

  • Azure Machine Learning은 업그레이드가 필요할 수 있는 모든 기계 학습 패키지를 확인하고 유효성을 검사합니다. 대부분의 경우 새 VM 이미지에는 최신 패키지 버전이 포함됩니다.

  • 모든 VM 이미지는 취약성 검사를 정기적으로 실행하는 보안 구독을 기반으로 합니다. Azure Machine Learning은 해결되지 않은 취약성에 플래그를 지정하고 다음 릴리스 내에서 수정합니다.

  • 빈도는 대부분의 이미지에 대해 월 간격으로 설정됩니다. 컴퓨팅 인스턴스의 경우 이미지 릴리스는 환경에 사전 설치된 상태로 제공되므로 Azure Machine Learning SDK의 릴리스 주기에 맞춰 조정됩니다.

Azure Machine Learning은 일반 릴리스 주기 외에도 취약성이 노출되면 핫픽스를 적용합니다. Microsoft는 Azure Machine Learning 컴퓨팅 클러스터의 경우 72시간 이내에, 컴퓨팅 인스턴스의 경우 1주일 이내에 핫픽스를 롤아웃합니다.

참고 항목

호스트 OS는 모델을 학습하거나 배포할 때 환경에 대해 지정할 수 있는 OS 버전이 아닙니다. 환경은 Docker 내에서 실행됩니다. Docker는 호스트 OS에서 실행됩니다.

Microsoft 관리 컨테이너 이미지

Azure Machine Learning에서 유지 관리하는 기본 Docker 이미지는 새로 발견된 취약성을 해결하기 위해 보안 패치를 자주 받습니다.

Azure Machine Learning은 취약성을 해결하기 위해 2주마다 지원되는 이미지에 대한 업데이트를 릴리스합니다. 약속의 일환으로 지원되는 이미지의 최신 버전에서 30일이 지난 취약성이 없는 것을 목표로 합니다.

패치된 이미지는 새로운 변경할 수 없는 태그와 업데이트된 :latest 태그로 릴리스됩니다. :latest 태그를 사용하거나 특정 이미지 버전에 고정하면 기계 학습 작업에 대한 보안 및 환경 재현성 간에 절충이 발생할 수 있습니다.

환경 및 컨테이너 이미지 관리

재현성은 소프트웨어 개발 및 기계 학습 실험의 핵심 측면입니다. Azure Machine Learning 환경 구성 요소의 주요 초점은 사용자 코드가 실행되는 환경의 재현성을 보장하는 것입니다. 모든 기계 학습 작업의 재현성을 보장하기 위해 재구체화할 필요 없이 이전에 빌드된 이미지를 컴퓨팅 노드로 가져옵니다.

Azure Machine Learning은 각 릴리스와 함께 기본 이미지를 패치하지만 최신 이미지를 사용하는지 여부는 재현성과 취약성 관리 사이에서 절충점일 수 있습니다. 작업 또는 모델 배포에 사용되는 환경 버전을 선택하는 것은 사용자의 책임입니다.

기본적으로 종속성은 환경을 구축할 때 Azure Machine Learning에서 제공하는 기본 이미지 위에 계층화됩니다. Azure Machine Learning에서 환경을 사용할 때 고유한 기본 이미지를 사용할 수도 있습니다. Microsoft 제공 이미지 위에 더 많은 종속성을 설치하거나 고유한 기본 이미지를 가져오면 취약성 관리가 사용자의 책임이 됩니다.

Azure Machine Learning 작업 영역과 연결된 것은 컨테이너 이미지의 캐시로 사용되는 Azure Container Registry 인스턴스입니다. 구체화되는 모든 이미지는 컨테이너 레지스트리에 푸시됩니다. 작업 영역은 해당 환경에 대해 실험 또는 배포가 트리거되는 경우 이를 사용합니다.

Azure Machine Learning은 컨테이너 레지스트리에서 이미지를 삭제하지 않습니다. 시간이 지남에 따라 이미지의 필요성을 평가할 책임이 있습니다. 환경 보안을 모니터링하고 유지하기 위해 Microsoft Defender for Container Registry를 사용하여 이미지에서 취약성을 검사할 수 있습니다. Microsoft Defender의 트리거를 기반으로 프로세스를 자동화하려면 수정 응답 자동화를 참조하세요.

자세한 내용은 환경의 주소 취약성을 참조 하세요.

프라이빗 패키지 리포지토리 사용

Azure Machine Learning은 Conda 및 Pip를 사용하여 Python 패키지를 설치합니다. 기본적으로 Azure Machine Learning은 퍼블릭 리포지토리에서 패키지를 다운로드합니다. 조직에서 Azure DevOps 피드와 같은 프라이빗 리포지토리에서만 패키지를 소싱해야 하는 경우 Conda 및 Pip 구성을 기본 이미지 및 컴퓨팅 인스턴스에 대한 환경 구성의 일부로 재정의할 수 있습니다.

다음 예제 구성은 기본 채널을 제거하고 프라이빗 conda 및 pip 피드를 추가하는 방법을 보여줍니다. 자동화를 위해 컴퓨팅 인스턴스 설정 스크립트를 사용해 보세요.

RUN conda config --set offline false \
&& conda config --remove channels defaults || true \
&& conda config --add channels https://my.private.conda.feed/conda/feed \
&& conda config --add repodata_fns <repodata_file_on_your_server>.json

# Configure Pip private indexes and ensure that the client trusts your host
RUN pip config set global.index https://my.private.pypi.feed/repository/myfeed/pypi/ \
&&  pip config set global.index-url https://my.private.pypi.feed/repository/myfeed/simple/

# In case your feed host isn't secured through SSL
RUN  pip config set global.trusted-host http://my.private.pypi.feed/

Azure Machine Learning에서 사용자 고유의 기본 이미지를 지정하는 방법을 알아보려면 Docker 빌드 컨텍스트에서 환경 만들기를 참조하세요. Conda 환경 구성에 대한 자세한 내용은 Conda 사이트에서 수동으로 환경 파일 만들기를 참조하세요.

컴퓨팅 호스트의 취약성 관리

Azure Machine Learning의 관리형 컴퓨팅 노드는 Microsoft 관리형 OS VM 이미지를 사용합니다. 노드를 프로비전하면 업데이트된 최신 VM 이미지를 가져옵니다. 이 동작은 컴퓨팅 인스턴스, 컴퓨팅 클러스터, 서버리스 컴퓨팅(미리 보기) 및 관리 유추 컴퓨팅 옵션에 적용됩니다.

OS VM 이미지는 정기적으로 패치되지만 Azure Machine Learning은 사용 중인 동안 컴퓨팅 노드에서 취약성을 적극적으로 검사하지 않습니다. 추가 보호 계층을 위해 컴퓨터의 네트워크 격리를 고려합니다.

환경이 최신 상태이고 컴퓨팅 노드가 최신 OS 버전을 사용하도록 하는 것은 사용자와 Microsoft 간의 공동 책임입니다. 유휴 상태가 아닌 노드는 최신 VM 이미지로 업데이트할 수 없습니다. 고려 사항은 다음 섹션에 나열된 것처럼 컴퓨팅 유형마다 약간 다릅니다.

컴퓨팅 인스턴스

컴퓨팅 인스턴스는 프로비저닝 시 최신 VM 이미지를 가져옵니다. Microsoft는 매월 새 VM 이미지를 릴리스합니다. 컴퓨팅 인스턴스를 배포한 후에는 적극적으로 업데이트되지 않습니다. 인스턴스의 운영 체제 버전을 쿼리할 수 있습니다. 최신 소프트웨어 업데이트 및 보안 패치를 최신 상태로 유지하려면 다음 방법 중 하나를 사용할 수 있습니다.

  • 컴퓨팅 인스턴스를 다시 만들어 최신 OS 이미지 가져오기(권장)

    이 방식을 사용하면 인스턴스의 OS 및 임시 디스크에 저장된 설치된 패키지와 같은 데이터 및 사용자 지정은 손실됩니다.

    인스턴스를 다시 만들 때:

    이미지 릴리스에 대한 자세한 내용은 Azure Machine Learning 컴퓨팅 인스턴스 이미지 릴리스 정보를 참조하세요.

  • OS 및 Python 패키지를 정기적으로 업데이트합니다.

    • Linux 패키지 관리 도구를 사용하여 패키지 목록을 최신 버전으로 업데이트합니다.

      sudo apt-get update
      
    • Linux 패키지 관리 도구를 사용하여 패키지를 최신 버전으로 업그레이드합니다. 이 방법을 사용하면 패키지 충돌이 발생할 수 있습니다.

      sudo apt-get upgrade
      
    • Python 패키지 관리 도구를 사용하여 패키지를 업그레이드하고 업데이트를 확인합니다.

      pip list --outdated
      

보안 문제를 검사하기 위해 컴퓨팅 인스턴스에 추가 검사 소프트웨어를 설치하고 실행할 수 있습니다.

  • Trivy를 사용하여 OS 및 Python 패키지 수준의 취약성을 발견합니다.
  • ClamAV를 사용하여 맬웨어를 검색합니다. 컴퓨팅 인스턴스에 미리 설치됩니다.

서버용 Microsoft Defender 에이전트 설치는 현재 지원되지 않습니다.

자동화를 위해 사용자 지정 스크립트를 사용해 보세요. Trivy 및 ClamAV를 결합하는 예제 설치 스크립트는 컴퓨팅 인스턴스 샘플 설정 스크립트를 참조하세요.

컴퓨팅 클러스터

컴퓨팅 클러스터는 노드를 최신 VM 이미지로 자동 업그레이드합니다. min nodes = 0로 클러스터를 구성하는 경우 모든 작업이 완료되고 클러스터가 노드 0으로 줄어들 때 노드를 최신 VM 이미지 버전으로 자동 업그레이드합니다.

다음 조건에서 클러스터 노드는 축소되지 않으므로 최신 VM 이미지를 가져올 수 없습니다.

  • 클러스터의 최소 노드 수는 0보다 큰 값으로 설정됩니다.
  • 작업은 클러스터에서 지속적으로 예약될 수 있습니다.

유휴 상태가 아닌 클러스터 노드를 축소하여 최신 OS VM 이미지 업데이트를 가져올 책임이 있습니다. Azure Machine Learning은 VM 업데이트를 발행하기 위해 컴퓨팅 노드에서 실행 중인 워크로드를 중단하지 않습니다. 최소 노드를 일시적으로 0으로 변경하고 클러스터가 노드를 0으로 줄이도록 합니다.

관리형 온라인 엔드포인트

관리 온라인 엔드포인트는 취약성 수정이 포함된 OS 호스트 이미지 업데이트를 자동으로 수신합니다. 이미지의 업데이트 빈도는 최소 한 달에 한 번입니다.

컴퓨팅 노드는 해당 버전이 릴리스될 때 자동으로 최신 VM 이미지 버전으로 업그레이드됩니다. 아무 작업도 수행할 필요가 없습니다.

고객 관리되는 Kubernetes 클러스터

Kubernetes 컴퓨팅을 사용하면 Azure Machine Learning에서 모델을 학습, 유추 수행, 관리하도록 Kubernetes 클러스터를 구성할 수 있습니다.

Kubenetes로 환경을 관리하므로 OS VM 취약성과 컨테이너 이미지 취약성 관리는 모두 사용자의 책임입니다.

Azure Machine Learning은 새 버전의 Azure Machine Learning 확장 컨테이너 이미지를 Microsoft Artifact Registry에 자주 게시합니다. Microsoft는 새 이미지 버전이 취약성으로부터 자유로워지도록 할 책임이 있습니다. 각 릴리스는 취약성을 수정합니다.

클러스터가 중단 없이 작업을 실행하면 실행 중인 작업이 오래된 컨테이너 이미지 버전을 실행할 수 있습니다. amlarc 확장을 실행 중인 클러스터로 업그레이드하면 새로 제출된 작업이 최신 이미지 버전을 사용하기 시작합니다. amlarc 확장을 최신 버전으로 업그레이드할 때 필요에 따라 클러스터에서 이전 컨테이너 이미지 버전을 정리합니다.

Azure Arc 클러스터에서 amlarc의 최신 버전을 실행하고 있는지 확인하려면 Azure Portal을 사용합니다. Kubernetes - Azure Arc 유형의 Azure Arc 리소스에서 확장으로 이동하여 amlarc 확장 버전을 찾습니다.

Important

명령의 매개 변수를 사용하여 자동 업데이트를 사용하지 않도록 설정한 경우 을 az k8s-extension create 사용하여 --auto-upgrade false az k8s-extension update확장을 수동으로 업데이트해야 합니다. 이 확장의 버전에 대한 자세한 내용은 릴리스 정보를 참조 하세요.

AutoML 및 디자이너 환경

코드 기반 학습 환경의 경우 어떤 Azure Machine Learning 환경을 사용할지 사용자가 제어합니다. AutoML 및 디자이너를 사용하면 환경이 서비스의 일부로 캡슐화됩니다. 이러한 유형의 작업은 사용자가 구성한 컴퓨팅에서 실행할 수 있으므로 네트워크 격리와 같은 추가 제어가 가능합니다.

AutoML 작업은 Azure Machine Learning 기본 Docker 이미지를 기반으로 하는 환경에서 실행됩니다.

디자이너 작업은 구성 요소로 구분됩니다. 각 구성 요소에는 Azure Machine Learning 기본 Docker 이미지 위에 계층화되는 고유한 환경이 있습니다. 구성 요소에 대한 자세한 내용은 구성 요소 참조를 참조하세요.

다음 단계