View a markdown version of this page

샌드박스 설정 - AWS DevOps 에이전트

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

샌드박스 설정

샌드박스는 조사 중에 코드를 작성하고 실행할 수 있는 안전하고 격리된 Linux 환경을 AWS DevOps Agent에 제공하는 미리 보기 기능입니다. 일부 문제는 추론만으로 해결할 때보다 코드로 해결할 때 더 빠르고 안정적입니다. 샌드박스를 사용하면 에이전트는 예를 들어 대규모 로그 파일을 분석하거나, 지표 집합에 대한 통계를 계산하거나, 조사 중에 여러 소스의 데이터를 구문 분석하고 상호 연관시키는 등 계산을 통해 추론을 보완합니다.

각 샌드박스는 임시적이며 단일 조사로 범위가 지정되므로 에이전트가 실행하는 코드는 다른 리소스와 격리된 상태로 유지됩니다. 환경의 아웃바운드 네트워크 액세스와 사전 설치된 패키지를 제어합니다. 기본적으로 샌드박스는 아웃바운드 네트워크 액세스를 제한합니다. 네트워킹 허용 목록에 항목을 추가할 때까지 AWS 서비스 엔드포인트에만 도달할 수 있습니다.

참고

샌드박스는 미리 보기에서 사용할 수 있으며 변경될 수 있습니다.

미리 보기 중에 샌드박스는 다음 AWS 리전에서만 사용할 수 있습니다.

  • 미국 동부(버지니아 북부) us-east-1

  • 미국 서부(오레곤) us-west-2

  • 아시아 태평양(도쿄) ap-northeast-1

  • 유럽(아일랜드) eu-west-1

자세한 내용은 Feature availability by Region 섹션을 참조하세요.

샌드박스 작동 방식

에이전트 스페이스에 대해 샌드박스를 구성하면 AWS DevOps 에이전트는 조사를 수행하는 동안 새로운 Linux 환경을 자동으로 프로비저닝합니다. 이 환경에서 에이전트는 셸 명령을 실행하고 파일을 읽고 쓴 다음 결과를 분석으로 다시 읽을 수 있습니다. 환경은 해당 조사 기간 동안만 지속되며 두 조사가 하나를 공유하지 않습니다.

환경은 에이전트 스페이스에 연결된 AWS 계정에 대해 사전 구성된 AWS 프로필과 함께 제공됩니다. 에이전트는 이러한 프로필을 사용하여 에이전트가 이미 가지고 있는 것과 동일한 권한으로 범위가 지정된 AWS CLI 및 boto3(Python용AWS SDK)를 해당 계정에 호출할 수 있습니다. 이를 통해 에이전트는 조사 중에 프로그래밍 방식으로 AWS 리소스를 쿼리하고 코드와 상호 연관시킬 수 있습니다.

또한 에이전트는 명령줄 도구 또는 Python 및 Node.js 라이브러리를 사용하여 샌드박스에서 네트워킹 정책에서 허용하는 모든 호스트 및 경로로 HTTP 요청을 할 수 있습니다.

두 가지 설정은 환경에서 수행할 수 있는 작업을 제어합니다.

  • 네트워킹 정책 - 환경이 도달할 수 있는 호스트, HTTP 메서드 및 경로의 명시적 허용 목록입니다. 빈 허용 목록은 AWS 서비스 엔드포인트를 제외한 모든 아웃바운드 요청을 거부합니다.

  • 패키지 - 환경에 사전 설치된 pipnpm 패키지입니다. 에이전트의 코드는 런타임에 가져오지 않고도 가져올 수 있습니다.

참고

미리 보기 중에 에이전트는 조사 중에만 샌드박스를 사용합니다. 채팅, 사용자 지정 에이전트 및 기타 DevOps 에이전트 기능에 대한 지원이 곧 제공될 예정입니다.

샌드박스의 기술

샌드박스를 활성화하면 에이전트가 가상 파일 시스템이 아닌 DevOps 에이전트 기술샌드박스의 파일 시스템에서를 읽습니다. 이렇게 하면 에이전트가 두 가지 방식으로 기술을 사용하는 방식이 변경됩니다.

  • 명령줄 도구를 사용하여 검색 및 읽기 - 에이전트는 표준 명령줄 도구를 사용하여 가상 파일 시스템을 통해 로드하는 대신 기술을 검색하고 파일을 읽을 수 있습니다. 이렇게 하면 작업에 적합한 기술을 찾고 적용하는 데 도움이 됩니다.

  • 번들 코드 실행 - 에이전트는 스킬과 번들로 제공되는 코드를 실행하고 조정할 수 있습니다. 샌드박스가 없으면 스킬에 마크다운 지침, 참조 및 데이터 파일과 같은 실행 불가능한 파일만 포함될 수 있습니다. 샌드박스를 사용하면 스킬에 에이전트가 환경에서 실행할 수 있는 실행 코드가 포함될 수 있습니다.

시작하기 전 준비 사항

샌드박스는 기본적으로 구성되지 않으므로 옵트인할 때까지 에이전트는 코드를 실행할 수 없습니다. 다음 이미지는 구성하기 전에 샌드박스 섹션을 보여줍니다.

빈 pip 패키지, npm 패키지 및 허용 목록 항목 필드가 있는 "샌드박스가 구성되지 않음"을 보여주는 샌드박스 섹션입니다.

샌드박스를 구성하기 전에 다음을 확인합니다.

  • 호스트, HTTP 메서드 및 경로가 있는 경우 에이전트의 코드에 도달해야 합니다. 허용 목록 항목을 추가할 때까지 샌드박스는 AWS 서비스 엔드포인트에만 도달할 수 있습니다.

  • 환경에 사전 설치하려는 pipnpm 패키지입니다.

에이전트 스페이스에 대한 샌드박스 구성

  1. AWS Management Console에 로그인하고 AWS DevOps 에이전트 콘솔을 엽니다.

  2. 에이전트 스페이스를 선택하고 기능 탭을 선택합니다.

  3. 샌드박스 섹션에서 구성을 선택합니다.

  4. 다음 섹션에 설명된 대로 네트워킹 정책 및 사전 설치된 패키지를 구성합니다.

  5. 구성을 저장합니다.

샌드박스를 구성하면 샌드박스 섹션에 사전 설치된 pipnpm 패키지와 허용 목록 항목 수가 표시됩니다. 나중에 구성을 제거하려면 샌드박스 제거를 참조하세요.

네트워킹 정책 구성

샌드박스는 아웃바운드 요청을 명시적 허용 목록으로 제한합니다. 빈 허용 목록은 AWS 서비스 엔드포인트를 제외한 모든 아웃바운드 요청을 거부합니다. 환경이 다른 호스트에 도달하도록 하려면 해당 호스트에 대한 허용 목록 항목을 추가합니다.

항목 추가를 선택한 다음 허용 목록 항목에 대해 다음을 구성합니다.

  • 호스트 패턴 - 항목이 적용되는 호스트입니다. 부분 레이블 일치는 지원되지 않습니다. 다음 양식 중 하나를 사용합니다.

    • ** - 모든 호스트.

    • *.example.com - 하나의 하위 도메인 수준입니다.

    • **.example.com - 모든 하위 도메인 깊이입니다.

    • example.com - 정확한 호스트입니다.

  • HTTP 메서드 -이 호스트에 허용되는 HTTP 메서드입니다. 드롭다운 목록에서 GET 및와 같은 하나 이상의 메서드OPTIONS를 선택합니다.

  • 경로 패턴 -이 호스트에 허용되는 경로입니다. 경로 추가를 선택하여 하나 이상의 패턴을 추가합니다.

    • *는와 같은 하나의 세그먼트와 일치합니다/repos/*/pulls.

    • 와 같은 부분 일치가 허용됩니다/users/aws-*/.

    • /**는 모든 하위 경로를 허용합니다.

    • 쿼리 파라미터는 무시됩니다.

다음 이미지는 완료된 허용 목록 항목을 보여줍니다.

호스트 패턴 *.github.com, GET 및 OPTIONS 메서드, 경로 패턴 /**가 포함된 허용 목록 항목입니다.

에이전트의 코드가 도달해야 하는 각 추가 호스트에 대해 항목 추가를 선택합니다. 항목을 제거하려면 제거를 선택합니다.

사전 설치된 패키지 구성

패키지 섹션에서 샌드박스 환경에 사전 설치할 pipnpm 패키지를 지정합니다. 그러면 에이전트의 코드가 이러한 패키지를 직접 가져올 수 있으며, 환경을 사용하기 위해 패키지 레지스트리에 대한 아웃바운드 액세스가 필요하지 않습니다. 다음 이미지는 패키지 예제 구성된 패키지 섹션을 보여줍니다.

pip 패키지 요청과 pandas 및 npm 패키지 axios가 포함된 패키지 섹션으로, 각각 제거 버튼이 있습니다.
  • pip 패키지 - 패키지 추가를 선택하고 사전 설치할 각 Python 패키지에 pandas대해 requests 또는와 같은 패키지 이름을 입력합니다.

  • npm 패키지 - 패키지 추가를 선택하고 사전 설치할 각 Node.js 패키지에 axios대해와 같은 패키지 이름을 입력합니다.

패키지를 제거하려면 옆에 있는 제거를 선택합니다.

샌드박스 제거

옵트아웃하려면 샌드박스 구성을 제거합니다. 에이전트 스페이스를 선택하고 기능 탭으로 이동한 다음 샌드박스 섹션에서 제거를 선택합니다. 구성을 제거하면 에이전트는 더 이상 새 조사를 위해 샌드박스 환경을 프로비저닝하지 않습니다.

샌드박스 구성 제한

미리 보기 중 각 샌드박스 구성에는 다음 제한이 적용됩니다.

Limit
pip 패키지 50
npm 패키지 50
네트워킹 허용 목록 항목 100
허용 목록 항목당 경로 패턴 50
허용 목록 항목당 HTTP 메서드 최소 1개

보안 고려 사항

AWS DevOps Agent는 자체 샌드박스 환경에서 각 조사를 격리하므로 한 조사의 코드와 데이터는 다른 조사와 공유되지 않습니다. AWS DevOps Agent는 샌드박스에서 나가는 모든 트래픽을 검사하고 필터링하여 안전하고 허용된 요청만 대상에 도달하도록 합니다. 서비스 AWS 엔드포인트 및 네트워킹 허용 목록과 일치하는 호스트에 대한 요청을 허용하고 다른 모든 요청을 거부합니다.

에이전트는 샌드박스에서 코드를 생성하고 실행합니다. 구성할 때 다음 사항에 유의하세요.

  • 허용 목록을 최소한으로 유지합니다. 빈 허용 목록의 경우 샌드박스는 AWS 서비스 엔드포인트에만 도달합니다. 에이전트에 필요한 특정 호스트, 메서드 및 경로에 대해서만 허용 목록 항목을 추가합니다.

  • 허용 목록 항목의 범위를 좁힙니다. ** 및와 같은 광범위한 와일드카드가 아닌 정확한 호스트 패턴과 특정 경로 패턴을 사용하고 필요한 HTTP 메서드만 /**부여합니다.

  • 레지스트리 허용 목록 대신 패키지를 사전 설치합니다. 에이전트가 필요로 하는 패키지를 사전 설치할 때 런타임 시 패키지 레지스트리에 대한 아웃바운드 액세스 권한을 부여하지 않습니다.

AWS DevOps 에이전트 보안 모델에 대한 자세한 내용은 섹션을 참조하세요AWS DevOps 에이전트 보안.