Azure AI 검색에 대한 네트워크 액세스 및 방화벽 규칙 구성

이 문서에서는 검색 서비스의 공용 엔드포인트에 대한 네트워크 액세스를 제한하는 방법을 설명합니다. 공용 엔드포인트에 대한 모든 데이터 평면 액세스를 차단하려면 프라이빗 엔드포인트와 Azure 가상 네트워크를 사용합니다.

이 문서에서는 네트워크 액세스 옵션 구성하기 위해 Azure Portal을 사용한다고 가정합니다. 관리 REST API, Azure PowerShell 또는 Azure CLI를 사용할 수도 있습니다.

필수 조건

  • 기본 계층 이상의 검색 서비스, 모든 지역

  • 소유자 또는 기여자 권한

네트워크 액세스를 구성해야 하는 시기

기본적으로 Azure AI 검색은 퍼블릭 엔드포인트를 통해 연결을 허용하도록 구성됩니다. 퍼블릭 엔드포인트를 통한 검색 서비스 액세스는 인증 및 권한 부여 프로토콜에 의해 보호되지만 엔드포인트 자체는 데이터 평면 요청을 위해 네트워크 계층에서 인터넷에 개방되어 있습니다.

공용 웹 사이트를 호스트하지 않는 경우 승인된 디바이스 및 클라우드 서비스 집합에서 요청이 발생하지 않는 한 요청을 자동으로 거부하도록 네트워크 액세스를 구성하는 것이 좋을 수 있습니다.

퍼블릭 엔드포인트에 대한 액세스를 제한하는 메커니즘에는 두 가지가 있습니다.

  • 요청이 허용되는 IP 주소, 범위 또는 서브넷을 나열하는 인바운드 규칙
  • 요청이 신뢰할 수 있는 서비스에서 시작된 경우 확인 없이 요청이 허용되는 네트워크 규칙의 예외

네트워크 규칙은 필수는 아니지만, 비공개 또는 회사 내부 콘텐츠를 표시하는 데 Azure AI 검색을 사용하는 경우 네트워크 규칙을 추가하는 것이 보안 모범 사례입니다.

네트워크 규칙의 범위는 검색 서비스의 공용 엔드포인트에 대한 데이터 평면 작업으로 지정됩니다. 데이터 평면 작업에는 인덱스 만들기 또는 쿼리와 검색 REST API에 설명된 기타 모든 작업이 포함됩니다. 컨트롤 플레인 작업은 서비스 관리를 대상으로 합니다. 이러한 작업은 Azure Resource Manager에서 지원하는 네트워크 보호가 적용되는 리소스 공급자 엔드포인트를 지정합니다.

제한 사항

퍼블릭 엔드포인트를 잠그는 데는 몇 가지 단점이 있습니다.

  • IP 범위를 완전히 식별하고 방화벽을 설정하는 데는 시간이 걸리며, 개념 증명 테스트 및 조사 초기 단계에 있고 샘플 데이터를 사용하는 경우 실제로 필요할 때까지 네트워크 액세스 제어를 연기하는 것이 좋을 수 있습니다.

  • 일부 워크플로에서는 퍼블릭 엔드포인트에 액세스해야 합니다. 특히, Azure Portal의 가져오기 마법사는 기본 제공(호스트된) 샘플 데이터에 연결하고 퍼블릭 엔드포인트를 통해 모델을 포함합니다. 방화벽 규칙이 있는 경우 코드 또는 스크립트로 전환하여 동일한 작업을 완료할 수 있지만 마법사를 실행하려면 퍼블릭 엔드포인트를 사용할 수 있어야 합니다. 자세한 정보는 가져오기 마법사의 보안 연결을 참조하세요.

Azure Portal에서 네트워크 액세스 구성

  1. Azure Portal에 로그인하여 검색 서비스를 찾습니다.

  2. 설정 아래 가장 왼쪽 창에서 네트워킹을 선택합니다. 이 옵션이 표시되지 않으면 서비스 계층을 확인합니다. 네트워킹 옵션은 기본 계층 이상에서 사용할 수 있습니다.

  3. 선택한 IP 주소를 선택합니다. 프라이빗 엔드포인트를 구성하는 경우가 아니면 사용 안 함 옵션을 사용하지 마세요.

    Azure Portal의 네트워크 액세스 옵션을 보여 주는 스크린샷.

  4. 이 옵션을 선택하면 더 많은 설정을 사용할 수 있습니다.

    Azure Portal에서 IP 방화벽 설정을 구성하는 방법을 보여 주는 스크린샷.

  5. IP 방화벽에서 클라이언트 IP 주소 추가를 선택하여 개인 디바이스의 공용 IP 주소에 대한 인바운드 규칙을 만듭니다. 자세한 내용은 Azure Portal IP 주소에서 액세스 허용을 참조하세요.

  6. 검색 서비스에 요청을 보내는 다른 디바이스 및 서비스에 대한 다른 클라이언트 IP 주소를 추가합니다.

    IP 주소와 범위는 CIDR 형식입니다. CIDR 표기법의 예로는 8.8.8.0/24가 있습니다. 이는 8.8.8.0에서 8.8.8.255까지 범위의 IP를 나타냅니다.

    검색 클라이언트가 Azure의 정적 웹앱인 경우 Azure App Service의 인바운드 및 아웃바운드 IP 주소를 참조하세요. Azure Functions에 대해서는 Azure Functions의 IP 주소를 참조하세요.

  7. 예외에서 신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 검색 서비스에 액세스하도록 허용을 선택합니다. 신뢰할 수 있는 서비스 목록에는 다음이 포함됩니다.

    • Azure OpenAI 및 Azure AI 서비스의 경우 Microsoft.CognitiveServices
    • Azure Machine Learning의 경우 Microsoft.MachineLearningServices

    이 예외를 사용하도록 설정하면 Microsoft Entra ID 인증, 관리 ID 및 역할 할당에 대한 종속성을 갖게 됩니다. 검색 서비스에 유효한 역할 할당이 있는 모든 Azure AI 서비스 또는 AML 기능은 방화벽을 무시할 수 있습니다. 자세한 내용은 신뢰할 수 있는 서비스에 대한 액세스 권한 부여를 참조하세요.

  8. 변경 내용을 저장합니다.

Azure AI 검색 서비스에서 IP 액세스 제어 정책을 사용하도록 설정한 후에는, 허용된 IP 주소 범위 목록 외부의 컴퓨터에서 데이터 평면에 대한 모든 요청은 거부됩니다.

요청이 허용 목록에 없는 IP 주소에서 시작되면 다른 세부 정보 없이 제네릭 403 사용할 수 없음 응답이 반환됩니다.

Important

변경 내용이 적용되는 데 몇 분 정도 걸릴 수 있습니다. 네트워크 구성과 관련된 문제를 해결하기 전에 최소 15분 정도 기다립니다.

Azure Portal IP 주소에서 액세스 허용

IP 규칙을 구성하면 Azure Portal의 일부 기능을 사용할 수 없습니다. 서비스 수준 정보를 보고 관리할 수 있지만 가져오기 마법사, 인덱스, 인덱서 및 기타 최상위 리소스에 대한 포털 액세스는 제한됩니다.

포털 IP 주소를 추가하면 전체 범위의 검색 서비스 작업에 대한 포털 액세스를 복원할 수 있습니다.

포털의 IP 주소를 얻으려면 nslookup(또는 ping)을 수행합니다.

  • Azure 퍼블릭 클라우드에 대한 트래픽 관리자의 도메인인 stamp2.ext.search.windows.net.
  • Azure Government 클라우드의 경우 stamp2.ext.search.azure.us.

nslookup의 경우 IP 주소는 응답의 "신뢰할 수 없는 답변" 부분에 표시됩니다. 다음 예제에서 복사해야 하는 IP 주소는 52.252.175.48입니다.

$ nslookup stamp2.ext.search.windows.net
Server:  ZenWiFi_ET8-0410
Address:  192.168.50.1

Non-authoritative answer:
Name:    azsyrie.northcentralus.cloudapp.azure.com
Address:  52.252.175.48
Aliases:  stamp2.ext.search.windows.net
          azs-ux-prod.trafficmanager.net
          azspncuux.management.search.windows.net

서비스가 다른 지역에서 실행되면 서로 다른 트래픽 관리자에 연결됩니다. 도메인 이름과 상관없이 ping에서 반환된 IP 주소는 해당 지역의 Azure Portal에 대한 인바운드 방화벽 규칙을 정의할 때 사용할 올바른 IP 주소입니다.

ping의 경우 요청 시간이 초과되지만 응답에 IP 주소가 표시됩니다. 예를 들어 메시지 "Pinging azsyrie.northcentralus.cloudapp.azure.com [52.252.175.48]"에서 IP 주소는 52.252.175.48입니다.

배너는 IP 규칙이 포털 환경에 영향을 미친다는 것을 알려 줍니다. 포털의 IP 주소를 추가한 후에도 이 배너는 계속 표시됩니다. 테스트하기 전에 네트워크 규칙이 적용될 때까지 몇 분 정도 기다려야 합니다.

제한된 액세스 배너를 보여 주는 스크린샷.

신뢰할 수 있는 Azure 서비스에 대한 액세스 권한 부여

신뢰할 수 있는 서비스 예외를 선택했나요? 그렇다면 검색 서비스는 IP 주소를 확인하지 않고 신뢰할 수 있는 Azure 리소스의 요청 및 응답을 인정합니다. 신뢰할 수 있는 리소스에는 관리 ID(시스템 또는 사용자가 할당하지만 일반적으로는 시스템)가 있어야 합니다. 신뢰할 수 있는 리소스에는 데이터 및 작업에 대한 권한을 부여하는 Azure AI 검색에 대한 역할 할당이 있어야 합니다.

Azure AI 검색에 대한 신뢰할 수 있는 서비스 목록에는 다음이 포함됩니다.

  • Azure OpenAI 및 Azure AI 서비스의 경우 Microsoft.CognitiveServices
  • Azure Machine Learning의 경우 Microsoft.MachineLearningServices

이 네트워크 예외에 대한 워크플로는 RAG(검색 증강 세대) 및 플레이그라운드 환경에 대한 Azure OpenAI on Your Data 시나리오에서 일반적으로 Azure AI 스튜디오, Azure OpenAI Studio 또는 기타 AML 기능 에서 시작하여 Azure AI 검색으로 발생하는 요청입니다.

신뢰할 수 있는 리소스에는 관리 ID가 있어야 합니다.

Azure OpenAI 및 Azure Machine Learning에 대해 관리 ID를 설정하려면 다음을 수행합니다.

Azure AI 서비스에 대해 관리 ID를 설정하려면 다음을 수행합니다.

  1. 다중 서비스 계정을 찾습니다.
  2. 가장 왼쪽 창의 리소스 관리에서 ID를 선택합니다.
  3. 시스템 할당켜짐으로 설정합니다.

신뢰할 수 있는 리소스에는 역할 할당이 있어야 함

Azure 리소스에 관리 ID가 있으면 Azure AI 검색에 역할을 할당하여 데이터 및 작업에 대한 권한을 부여합니다.

신뢰할 수 있는 서비스는 텍스트 및 이미지 콘텐츠에서 벡터를 생성하고 쿼리 실행 또는 인덱싱을 위해 검색 서비스로 페이로드를 다시 보내는 벡터화 워크로드에 사용됩니다. 신뢰할 수 있는 서비스의 연결은 Azure AI 검색에 페이로드를 제공하는 데 사용됩니다.

  1. 검색 서비스 찾기.

  2. 가장 왼쪽 창의 액세스 제어(IAM)에서 ID를 선택합니다.

  3. 추가를 선택한 다음 역할 할당 추가를 선택합니다.

  4. 역할 페이지에서 다음을 수행합니다.

    • 검색 인덱스 데이터 기여자를 선택하여 포함 모델에서 생성된 벡터를 사용해 검색 인덱스를 로드합니다. 인덱싱 중에 통합된 벡터화를 사용하려는 경우 이 역할을 선택합니다.
    • 또는 검색 인덱스 데이터 읽기 권한자를 선택하여 포함 모델에서 생성된 벡터를 쿼리에 제공합니다. 쿼리에 사용되는 포함은 인덱스에 기록되지 않으므로 쓰기 권한이 필요하지 않습니다.
  5. 다음을 선택합니다.

  6. 멤버 페이지에서 관리 ID멤버 선택을 선택합니다.

  7. 시스템 관리 ID별로 필터링한 다음, Azure AI 다중 서비스 계정의 관리 ID를 선택합니다.

참고 항목

이 문서에서는 검색 서비스에 대한 요청을 허용하는 신뢰할 수 있는 예외를 다루지만 Azure AI 검색 자체는 다른 Azure 리소스의 신뢰할 수 있는 서비스 목록에 있습니다. 특히, Azure AI 검색에서 Azure Storage로의 연결에 신뢰할 수 있는 서비스 예외를 사용할 수 있습니다.

다음 단계

방화벽을 통해 요청이 허용되면 인증 및 권한 부여를 받아야 합니다. 이때 다음 두 가지 방법을 사용할 수 있습니다.

  • 키 기반 인증: 요청 시 관리자 또는 쿼리 API 키가 제공됩니다. 이 옵션이 기본값입니다.

  • Microsoft Entra ID를 사용하는 역할 기반 액세스 제어. 여기서 호출자는 검색 서비스의 보안 역할 멤버입니다. 이것이 가장 안전한 옵션입니다. 데이터 및 작업에 대한 권한을 위해 Azure AI 검색에서 인증 및 역할 할당을 위해 Microsoft Entra ID를 사용합니다.