적절한 RBAC(역할 기반 액세스 제어) 권한 및 VNet(가상 네트워크) 통합을 통해 몇 가지 방법으로 Azure SRE 에이전트에서 에이전트의 보안을 향상시킬 수 있습니다.
에이전트의 관리 ID에 적절한 RBAC 권한을 부여하는 경우 에이전트는 인프라에 대해 작업하고, 데이터베이스를 쿼리하고, 클러스터에 대해 명령을 실행할 수 있습니다. RBAC는 에이전트가 수행할 수 있는 작업을 제어하는 기본 보안 경계입니다.
가상 네트워크 통합은 에이전트가 트래픽을 보낼 수 있는 위치를 제어하여 보완적인 보호 계층을 추가합니다. 이러한 통합이 없으면 에이전트의 아웃바운드 트래픽이 공용 인터넷을 통해 흐릅니다. 이를 통해 모든 아웃바운드 호출은 Azure Virtual Network 및 기존 네트워크 보안 인프라를 통해 라우팅합니다.
이 문서에서는 엔터프라이즈 배포에서 네트워크 수준 제어가 중요한 이유, 가상 네트워크 통합의 작동 방식 및 워크로드에 적합한 네트워크 제어 모드를 선택하는 방법을 설명합니다.
네트워크 제어가 중요한 이유
기본적으로 에이전트는 인터넷의 모든 엔드포인트에 연결할 수 있습니다. 개발 및 테스트 워크로드의 경우 이 동작이 허용됩니다. 프로덕션 엔터프라이즈 배포의 경우 이 수준의 액세스로 인해 불필요한 위험이 발생합니다.
두 가지 위험으로 인해 네트워크 제어에 대한 엔터프라이즈 요구 사항이 발생합니다.
데이터 반출: 중요한 내부 데이터 및 무제한 인터넷 액세스에 액세스할 수 있는 에이전트는 조직을 떠날 데이터의 경로를 만들 수 있습니다.
프롬프트 삽입: 공용 인터넷의 악성 콘텐츠를 만들어 에이전트 동작을 조작할 수 있습니다. 외부 콘텐츠를 가져오는 무제한 에이전트는 이러한 응답을 통해 삽입 공격에 노출됩니다.
동작을 더 잘 제어하려면 가상 네트워크 내부에 에이전트를 배치합니다.
가상 네트워크 통합 작동 방식
가상 네트워크 통합은 SRE 에이전트를 기존 가상 네트워크에 연결합니다. 에이전트가 아웃바운드 호출을 하면 트래픽이 공용 인터넷 대신 네트워크 인프라를 통해 흐릅니다.
가상 네트워크 통합을 구성한 후 에이전트 트래픽:
- 감사 및 모니터링을 위해 네트워크 로그에 표시됩니다.
- 계층 4 및 계층 7 방화벽을 통과합니다.
- 사용자 지정 DNS(도메인 이름 시스템) 구성을 준수합니다.
- 엔터프라이즈 보안 정책 및 송신 규칙을 따릅니다.
SRE 에이전트는 가상 네트워크에 조인한 후 방화벽 검사, DNS 확인 및 트래픽 로깅을 포함하여 해당 네트워크의 다른 워크로드와 동일한 규칙에 따라 작동합니다.
Important
가상 네트워크 통합은 아웃바운드(송신) 트래픽만 제어합니다.
네트워크 제어 모드
SRE 에이전트는 세 가지 네트워크 제어 모드를 제공합니다. 보안 상태 및 운영 컨텍스트와 일치하는 모드를 선택합니다.
| 모드 | 설명 | 적합한 대상 |
|---|---|---|
| 제한 없음 | 네트워크 제한이 없습니다. 에이전트는 모든 인터넷 엔드포인트에 연결할 수 있습니다. | 개발, 테스트 및 중요하지 않은 워크로드. |
| 한정 | 와일드카드 기반 URL은 에이전트가 호출할 수 있는 엔드포인트를 목록 컨트롤로 허용합니다. | 전체 VNet 라우팅이 없는 호스트 수준 제어 |
| Azure VNet | DNS 및 방화벽 규칙이 적용된 모든 비 플랫폼 아웃바운드 트래픽은 VNet을 통해 라우팅됩니다. | 송신 제어 및 감사 준수가 필요한 프로덕션 배포 |
워크로드에 대한 네트워크 제어 모드 선택
모드를 선택하려면 다음 조건을 사용합니다.
Azure VNet: 워크로드가 중요하거나 규제된 데이터를 처리하거나, 아웃바운드 네트워크 활동의 전체 감사 내역이 필요하거나, 엔터프라이즈 보안 정책을 준수해야 하는 경우 이 모드를 선택합니다. 이 모드는 프로덕션 엔터프라이즈 배포에 권장됩니다.
제한: 가상 네트워크를 통해 모든 트래픽을 라우팅하지 않고 특정 외부 대상을 제한하려면 이 모드를 선택합니다. 이 모드는 전체 가상 네트워크 구성의 오버헤드 없이 부분 제어가 필요한 경우에 잘 작동합니다.
무제한: 워크로드가 중요한 데이터에 액세스할 수 없는 단기 개발 또는 테스트 환경인 경우 이 모드를 선택합니다. 이 모드는 기본값입니다.
모드를 선택하려면 Azure 포털에서 에이전트를 열고 설정>작업 영역 구성을 선택합니다. 실행 중인 에이전트의 모드 간에 전환합니다. 설정은 모드 변경 내용 간에 유지됩니다.
Azure VNet 모드 작동 방식
Azure VNet 모드에서 아웃바운드 트래픽은 다음 두 경로 중 하나를 사용합니다.
Your VNet. 기본적으로 모든 비 플랫폼 아웃바운드 트래픽은 가상 네트워크에서 위임된 서브넷을 통과합니다. NSG 규칙, 방화벽 정책, 사용자 지정 DNS 및 네트워크 로그가 모두 적용됩니다. 에이전트는 해당 서브넷의 다른 워크로드와 동일한 컨트롤의 적용을 받습니다. 서브넷이 도달할 수 있는 항목에 도달할 수 있으며 그 이상의 것은 없습니다.
에이전트는 네트워크 경로 및 규칙이 허용하는 한 ExpressRoute 또는 VPN을 통해 연결된 프라이빗 엔드포인트, 내부 서비스 및 온-프레미스 시스템 뒤에 있는 리소스에 연결할 수 있습니다.
Azure SRE 에이전트 인프라 네트워크 에이전트가 사용하는 플랫폼 서비스(오케스트레이션, 모델 엔드포인트, 원격 분석)는 항상 Microsoft 관리되는 인프라를 통해 라우팅됩니다. 이러한 서비스는 구성할 수 없습니다. 패키지 설치, 코드 리포지토리 액세스 및 원격 MCP 서버와 같은 일부 에이전트 기능에는 공용 서비스에 도달해야 합니다. Azure VNet 모드에서 이러한 기능을 사용하려면 해당 토글을 사용하도록 설정합니다. 토글이 꺼져 있는 경우 VNet이 해당 서비스(예: FQDN 기반 방화벽 규칙을 통해)로 직접 라우팅할 수 없는 한 해당 기능을 사용할 수 없습니다. 자세한 내용은 Azure SRE 에이전트 인프라 네트워크를 참조하세요.
트래픽 라우팅 요약
| 트래픽 유형 | Path | 구성 가능? |
|---|---|---|
| Azure 인프라(Log Analytics, App Insights, AKS, 데이터베이스, Key Vault) | 사용자의 VNet | Yes. 기본적으로 VNet을 통해 라우팅됩니다. |
| 온-프레미스 시스템(ExpressRoute/VPN) | 사용자의 VNet | Yes. 네트워크 경로에서 허용하는 경우 액세스할 수 있습니다. |
| 플랫폼 서비스(오케스트레이션, 모델 엔드포인트, 원격 분석) | Azure SRE 에이전트 인프라 네트워크 | No. 항상 관리되는 인프라를 통해 라우팅됩니다. |
| 패키지 레지스트리(PyPI, npm, NuGet, apt) | SRE Agent 인프라 네트워크(설정) 또는 VNet(FQDN 규칙) | Yes. 레지스트리별 토글 또는 사전 설치 패키지 |
| 코드 리포지토리(GitHub, GHE, Azure DevOps) | SRE Agent 인프라 네트워크(설정) 또는 VNet(FQDN 규칙) | Yes. 공급자별 토글 |
| 원격 MCP 서버 | SRE Agent 인프라 네트워크(설정) 또는 VNet(FQDN 규칙) | Yes. 단일 토글 |
| 추가 호스트 이름 | SRE 에이전트 인프라 네트워크(목록의 호스트용) | Yes. 사용자 지정 목록 |
| 커넥터 트래픽 | 공용 인터넷 | No. 이 미리 보기에서는 VNet을 통해 라우팅되지 않습니다. |
| 인바운드(프라이빗 엔드포인트) | 지원되지 않음 | No. 이 미리 보기에서는 송신만 지원됩니다. |
Azure VNet 모드 구성
서브넷 요구 사항
Azure VNet 모드에는 가상 네트워크에 전용 서브넷이 필요합니다.
- 크기: /28 이상 /28은 단일 에이전트의 동시 세션을 지원합니다. 더 큰 플릿 또는 버스트 처리 용량을 위해 /26까지 확장할 수 있습니다.
-
위임: 서브넷은
Microsoft.App/environments에 위임되어야 합니다. - 지역: 서브넷은 SRE 에이전트 리소스와 동일한 지역에 있어야 합니다.
- 전용: 서브넷을 다른 서비스와 공유할 수 없습니다.
Azure VNet 모드 설정
- 설정>작업 영역 구성>네트워크로 이동합니다.
- 송신 모드로 Azure VNet을 선택합니다.
- 서브넷 찾아보기를 선택합니다.
- 서브넷 요구 사항을 충족하는 구독, 리소스 그룹, 가상 네트워크 및 서브넷을 선택합니다.
- 저장을 선택합니다.
- 대표 인시던트를 사용하여 에이전트를 테스트하여 필요한 리소스에 도달할 수 있는지 확인합니다.
Azure SRE 에이전트 인프라 네트워크
일부 에이전트 기능은 IP 주소로 목록을 허용하기 어려운 공용 서비스에 따라 달라집니다. Azure VNet 모드에서 이러한 기능에는 트래픽을 직접 허용하는 인프라 네트워크 토글(Azure SRE 에이전트 인프라 네트워크를 통해 해당 범주를 라우팅하는) 또는 VNet의 FQDN 기반 방화벽 규칙이 필요합니다. 범주 및 경로의 전체 목록은 트래픽 라우팅 요약 을 참조하세요.
토글을 해제하고 VNet이 서비스에 연결할 수 없는 경우 해당 기능을 사용할 수 없습니다.
메모
Azure Policy 적용하여 인프라 네트워크 토글을 제한하거나 사용하지 않도록 설정하여 운영자가 VNet 외부에서 트래픽을 라우팅할 수 없도록 할 수 있습니다.
사전 설치된 패키지
에이전트를 실행할 때마다 사용할 수 있도록 샌드박스 기본 디스크 이미지에 패키지를 사전 설치합니다. 이 기능은 도구 또는 스크립트가 기본 샌드박스 환경에 포함되지 않은 특정 패키지에 의존하는 경우에 유용합니다.
미리 설치된 패키지를 구성하려면 다음을 수행합니다.
Azure 포털에서 에이전트를 열고 Settings>Workspace 구성 선택합니다.
패키지 탭 을 선택합니다.
패키지 이름을 입력하고, 패키지 관리자(pip 또는 NuGet)를 선택하고, 필요에 따라 버전을 지정합니다.
+ 패키지 추가를 선택합니다.
메모
NuGet 항목은 .NET CLI 도구(예: dotnet-ef)여야 합니다. 라이브러리 패키지를 전역적으로 설치할 수 없습니다.
가상 네트워크 바이패스 컨트롤
Azure VNet 모드를 사용하도록 설정하면 작업 영역 구성 페이지의 인프라 네트워크 섹션에서 공용 인터넷을 통해 VNet 외부의 트래픽 범주를 라우팅할 수 있습니다. 이러한 컨트롤을 사용하도록 설정하지 않으면 모든 에이전트 트래픽이 VNet을 통해 라우팅됩니다.
모든 외부 서비스가 Azure 서비스 태그를 제공하는 것은 아닙니다. 예를 들어 GitHub Azure 서비스가 아니며 서비스 태그를 노출하지 않습니다. 에이전트가 GitHub 도달해야 하는 경우 계층 4 IP 기반 방화벽을 사용하는 유일한 옵션은 공급자의 IP 주소 목록을 유지하는 것입니다. 이러한 목록은 자주 변경되며, 최신 상태를 유지하지 않는 방화벽은 에이전트를 중단합니다.
PyPI, npm, NuGet 및 컨테이너 레지스트리와 같은 여러 주요 공용 서비스에서도 마찬가지입니다. 이러한 서비스는 자주 변경되는 대규모 글로벌 IP 범위에서 작동하며 Azure 서비스 태그에 포함되지 않습니다.
바이패스 토글을 사용하면 에이전트가 플랫폼 송신을 통해 이러한 호스트에 연결할 수 있습니다. 네트워크 팀은 방화벽 규칙을 업데이트하거나 호스트 이름 필터링 또는 FQDN(정규화된 도메인 이름) 필터링을 지원하는 방화벽으로 이동합니다. 예를 들어 FQDN 규칙을 사용하는 Azure Firewall Premium 또는 전송 계층 보안 검사를 지원하는 네트워크 가상 어플라이언스가 있습니다.
바이패스 제어는 호스트 이름 기반 송신 필터링을 영구적으로 대체하는 수단이 아니라 과도기적 도구로 간주하세요.
다음과 같은 컨트롤을 사용할 수 있습니다.
| 제어 | 설명 |
|---|---|
| MCP(모델 컨텍스트 프로토콜) 서버 액세스 | 사용하도록 설정하면 MCP 서버 트래픽이 가상 네트워크 대신 공용 인터넷을 통해 라우팅됩니다. |
| 패키지 관리자 액세스 | 사용하도록 설정하면 패키지 관리자 트래픽(PyPI, npm, NuGet)이 가상 네트워크 대신 공용 인터넷을 통해 라우팅됩니다. |
| 코드 리포지토리 | 가상 네트워크 대신 공용 인터넷을 통해 라우팅할 코드 리포지토리 공급자(GitHub, GitHub Enterprise, Azure DevOps)를 선택합니다. |
| 추가 호스트 | 가상 네트워크 대신 공용 인터넷을 통해 라우팅할 추가 호스트 이름 또는 와일드카드 패턴(예 github.com: , *.example.com) raw.contoso.io을 입력합니다. 구성된 패키지는 자체 호스트를 자동으로 허용합니다. |
거버넌스 고려 사항
이러한 컨트롤에 대한 액세스 범위는 SRE 에이전트 관리자 역할이 있는 사용자로 범위가 지정됩니다. 엔터프라이즈 환경에서 SRE 에이전트를 만드는 것은 조직에서 일반적으로 프로덕션 환경에 서비스를 배포하는 데 상당한 승인이 필요하기 때문에 중요한 거버넌스 작업입니다. 바이패스 컨트롤은 관리 ID, OBO(On-Behalf-of) 자격 증명 및 RBAC 권한을 포함하는 광범위한 엔터프라이즈 거버넌스 스토리의 한 측면입니다. 에이전트는 권한에서 허용하는 작업만 수행할 수 있으며, 네트워크 구성은 해당 트래픽이 어디로 가는지 제어할 수 있습니다.
네트워크에서 호출을 차단하면 어떻게 되나요?
아웃바운드 요청이 NSG 규칙에 의해 거부되거나 경로가 없는 경우 에이전트는 해당 서브넷의 모든 워크로드에서 볼 수 있는 동일한 네트워크 오류를 확인합니다. 에이전트는 조사 출력의 실패를 보고하고(예: "Log Analytics 작업 영역에 도달하지 못했습니다. 연결 시간이 초과되었습니다.") 연결할 수 있는 도구와 데이터를 계속 사용합니다. 중요한 데이터 원본에 연결할 수 없는 경우 조사가 완료되지 않으며 에이전트가 이 조건을 보고합니다.
Limitations
미리 보기 중에는 다음과 같은 제한 사항이 적용됩니다.
송신 전용: 가상 네트워크 통합은 아웃바운드(송신) 트래픽만 제어합니다. 프라이빗 네트워크 내에서 에이전트에 대한 인바운드 연결은 지원되지 않습니다.
커넥터는 가상 네트워크를 통해 라우팅되지 않습니다. 가상 네트워크를 통한 커넥터 트래픽 라우팅은 지원되지 않습니다. 커넥터도 미리 보기로 제공됩니다. 미리 보기 중에는 공용 인터넷을 통해 커넥터 트래픽이 라우팅됩니다. 자세한 내용은 SRE 에이전트 커넥터를 참조하세요.
프라이빗 클러스터에 대한 kubectl 명령에는 관리 ID가 필요합니다. 에이전트가 가상 네트워크 통합을 통해 프라이빗 AKS(Azure Kubernetes Service) API 서버에 도달하면 kubectl 명령은 AKS 명령 호출 흐름을 통해 실행됩니다.
이 흐름은 에이전트의 관리 ID를 지원하지만 OBO(On-Behalf-of) 사용자 자격 증명을 전달하지는 않습니다.
또한 이 명령에는 60초 Azure Resource Manager API 시간 제한 및 512KB 출력 크기 제한을 포함하여 작동 제한이 있습니다. 오랫동안 실행되거나 출력량이 많은 kubectl 작업은 중간에 잘리거나 실패할 수 있습니다.
kubectl에 대한 OBO 지원이 필요하거나 이러한 제한을 초과하는 작업을 실행해야 하는 경우 AKS API 서버에 공개적으로 연결할 수 있도록 유지하고 제한되지 않거나 제한된 모드를 사용합니다.
메모
IP 주소 및 서비스 태그 구성이 올바른 경우 VNet 뒤에 있는 MCP 서버 및 Azure 리소스에 예상대로 액세스할 수 있습니다.
커넥터도 미리 보기로 제공됩니다. 미리 보기 중에 커넥터 트래픽은 VNet을 통하지 않고 공용 인터넷을 통해 라우팅됩니다. 자세한 내용은 SRE 에이전트 커넥터를 참조하세요.