다음을 통해 공유


공유 프라이빗 엔드포인트를 통해 아웃바운드 연결 만들기

이 문서에서는 Azure 가상 네트워크 내에서 실행되는 Azure PaaS 리소스로의 프라이빗 아웃바운드 호출을 Azure AI 검색에서 구성하는 방법을 설명합니다.

프라이빗 연결을 설정하면 검색 서비스는 인터넷에 개방된 포트가 아니라 가상 네트워크 IP 주소에 연결할 수 있습니다. 연결에 대해 만든 개체를 공유 프라이빗 링크라고 합니다. 연결 시 검색 서비스는 내부적으로 공유 프라이빗 링크를 사용하여 네트워크 경계 내의 Azure PaaS 리소스에 연결합니다.

공유 프라이빗 링크는 사용량에 따라 청구되는 프리미엄 기능입니다. 공유 프라이빗 링크를 설정하면 프라이빗 엔드포인트에 대한 요금이 Azure 청구서에 추가됩니다. 공유 프라이빗 링크를 사용하면 인바운드 및 아웃바운드 액세스에 대한 데이터 전송 속도도 청구 대상입니다. 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.

참고 항목

SQL Managed Instance에 대한 프라이빗 인덱서 연결을 설정하는 경우 해당 리소스 종류와 관련된 단계는 대신 이 문서를 참조하세요.

Azure AI 검색은 다음 시나리오에서 다른 Azure PaaS 리소스에 대한 아웃바운드 호출을 수행합니다.

  • 텍스트-벡터 포함을 위한 인덱서 또는 검색 엔진의 Azure OpenAI 연결
  • 지원되는 데이터 원본에 대한 인덱서 연결
  • 보강을 캐싱하거나, 세션 상태를 디버그하거나, 지식 저장소에 쓰기 위해 Azure Storage에 대한 인덱서(기술 세트) 연결
  • Azure Key Vault에 대한 암호화 키 요청
  • Azure Functions 또는 유사한 리소스에 대한 사용자 지정 기술 요청

공유 프라이빗 링크는 Azure 간 연결에서만 작동합니다. OpenAI 또는 다른 외부 모델에 연결하는 경우 공용 인터넷을 통해 연결해야 합니다.

공유 프라이빗 링크는 Azure Virtual Network에서 실행되는 Azure 리소스 또는 클라이언트에 대한 프라이빗 엔드포인트를 통해 액세스되는 작업 및 데이터를 위한 것입니다.

공유 프라이빗 링크는 다음과 같습니다.

  • Azure AI 검색 도구, API 또는 SDK를 사용하여 만들어짐
  • Azure PaaS 리소스 소유자가 승인
  • Azure AI 검색에서 특정 Azure 리소스에 대한 프라이빗 연결 시 내부적으로 사용됨

검색 서비스는 검색 서비스에서 만든 프라이빗 링크만 사용할 수 있으며 각 리소스 및 하위 리소스 조합의 경우 서비스에 만들어진 공유 프라이빗 링크는 하나만 있을 수 있습니다.

프라이빗 링크를 설정하면 검색 서비스가 해당 PaaS 리소스에 연결될 때마다 자동으로 사용됩니다. 연결에 사용되는 디바이스는 Azure PaaS 리소스의 방화벽에서 권한 있는 IP를 사용하여 연결해야 하지만 연결 문자열을 수정하거나 요청을 발급하는 데 사용하는 클라이언트를 변경할 필요가 없습니다.

Azure Private Link와 Azure AI 검색을 함께 사용하는 두 가지 시나리오가 있습니다.

  • 시나리오 1: Azure PaaS에 대한 아웃바운드(인덱서) 연결에 프라이빗 연결이 필요한 경우 공유 프라이빗 링크를 만듭니다.

  • 시나리오 2: 가상 네트워크에서 실행되는 클라이언트에서 프라이빗 인바운드 연결에 대한 검색을 구성합니다.

이 문서에서는 시나리오 1을 다룹니다.

두 시나리오 모두 Azure Private Link에 종속성이 있지만 독립적입니다. 프라이빗 엔드포인트에 대한 자체 검색 서비스를 구성하지 않고도 공유 프라이빗 링크를 만들 수 있습니다.

제한 사항

시나리오에 대한 공유 프라이빗 링크를 평가할 때는 이러한 제약 조건을 기억하세요.

  • 공유 프라이빗 링크에 사용되는 몇 가지 리소스 종류는 미리 보기로 제공됩니다. 미리 보기 리소스(Azure Database for MySQL 또는 Azure SQL Managed Instance)에 연결하는 경우 관리 REST API의 미리 보기 버전을 사용하여 공유 프라이빗 링크를 만듭니다. 이러한 버전에는 2020-08-01-preview, 2021-04-01-preview, 2024-03-01-preview2024-06-01-preview가 포함됩니다. 최신 미리 보기 API를 사용하는 것이 좋습니다.

  • 인덱서 실행은 검색 서비스와 관련된 프라이빗 실행 환경을 사용해야 합니다. 프라이빗 엔드포인트 연결은 다중 테넌트 환경에서 지원되지 않습니다. 이 요구 사항에 대한 구성 설정은 이 문서에서 다룹니다.

필수 조건

  • 통합 벡터화의 경우에만 공유 프라이빗 링크를 통한 아웃바운드 연결은 모든 청구 가능 계층에서 지원되며, 더 높은 용량제공하는 지역에 있는 2024년 4월 3일 이후에 생성된 서비스에서만 지원됩니다.

  • 2024년 4월 3일 이전에 만든 서비스에 포함 기술을 포함하지 않는 AI 보강, 기술 세트 처리의 경우 Azure AI Search는 표준 2(S2) 이상이어야 합니다.

  • 기술 세트를 포함하지 않는 다른 모든 사용 사례의 경우 Azure AI Search는 기본 이상일 수 있습니다.

  • 다음 지원되는 리소스 종류 목록에 있는 Azure PaaS 리소스는 가상 네트워크에서 실행되도록 구성되었습니다.

  • Azure AI 검색 및 데이터 원본 모두에 대한 권한:

    • Azure PaaS 리소스에서는 프라이빗 엔드포인트 연결을 승인할 수 있는 권한이 있어야 합니다. 예를 들어, Azure Storage 계정을 데이터 원본(예: Blob 컨테이너, Azure Files 공유, Azure 테이블)으로 사용하는 경우 Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action이 필요합니다.

    • 검색 서비스에서는 공유 프라이빗 링크 리소스에 대한 읽기 및 쓰기 권한과 읽기 작업 상태가 있어야 합니다.

      • Microsoft.Search/searchServices/sharedPrivateLinkResources/write
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/read
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read

지원되는 리소스 유형

다음 리소스에 대한 공유 프라이빗 링크를 만들 수 있습니다.

리소스 종류 하위 리소스(또는 그룹 ID)
Microsoft.Storage/storageAccounts 1 blob, table, dfsfile
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servers 3 sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers(미리 보기) mysqlServer
Microsoft.Web/sites 4 sites
Microsoft.Sql/managedInstances(미리 보기) 5 managedInstance
Microsoft.CognitiveServices/accounts 6 7 openai_account

1 Azure Storage 및 Azure AI 검색이 동일한 지역에 있는 경우 스토리지에 대한 연결은 Microsoft 백본 네트워크를 통해 이루어집니다. 즉, 공유 프라이빗 링크가 이 구성에 중복됩니다. 그러나 Azure Storage에 대한 프라이빗 엔드포인트를 이미 설정한 경우 공유 프라이빗 링크도 설정해야 합니다. 그렇지 않으면 스토리지 쪽에서 연결이 거부됩니다. 또한 검색 시 다양한 시나리오에 여러 스토리지 형식을 사용하는 경우 각 하위 리소스에 대해 별도의 공유 프라이빗 링크를 만들어야 합니다.

2 Microsoft.DocumentDB/databaseAccounts 리소스 종류는 Azure Cosmos DB for NoSQL에 대한 인덱서 연결에 사용됩니다. 공급자 이름 및 그룹 ID는 대/소문자를 구분합니다.

3 Microsoft.Sql/servers 리소스 종류는 Azure SQL Database 연결에 사용됩니다. 현재 Azure Synapse SQL에 대한 공유 프라이빗 링크는 지원되지 않습니다.

4 Microsoft.Web/sites 리소스 종류는 App Service 및 Azure 함수에 사용됩니다. Azure AI 검색의 컨텍스트에서 Azure 함수는 가능성이 높은 시나리오입니다. Azure 함수는 일반적으로 사용자 지정 기술의 논리를 호스팅하는 데 사용됩니다. Azure Function에는 사용량, 프리미엄, 전용 App Service 호스팅 계획이 있습니다. 현재 ASE(App Service Environment), AKS(Azure Kubernetes Service)Azure API Management는 지원되지 않습니다.

5 지침은 SQL Managed Instance에 대한 공유 프라이빗 링크 만들기를 참조하세요.

6 Microsoft.CognitiveServices/accounts 리소스 종류는 통합된 벡터화를 구현할 때 Azure OpenAI에 대한 벡터라이저 및 인덱서 연결에 사용됩니다. 현재 Azure AI Studio 모델 카탈로그 또는 Azure AI Vision 다중 모달 API에 모델을 포함하기 위한 공유 프라이빗 링크는 지원되지 않습니다.

7 Azure OpenAI에 대한 공유 프라이빗 링크는 퍼블릭 클라우드에서만 지원됩니다. Microsoft Azure Government와 같은 다른 클라우드 제품에는 그룹 ID에 대한 공유 프라이빗 링크가 openai_account 지원되지 않습니다.

Azure Portal, 관리 REST API, Azure CLI 또는 Azure PowerShell을 사용하여 공유 프라이빗 링크를 만듭니다.

다음은 이에 대한 몇 가지 팁입니다.

  • 의미 있는 이름을 프라이빗 링크에 지정합니다. Azure PaaS 리소스에서 공유 프라이빗 링크는 다른 프라이빗 엔드포인트와 함께 표시됩니다. “shared-private-link-for-search”와 같은 이름은 사용 방법을 상기시킬 수 있습니다.

이 섹션에서 이러한 단계를 완료하면 보류 중인 상태로 프로비전되는 공유 프라이빗 링크가 생깁니다. 링크를 만드는 데 몇 분이 걸립니다. 만들어진 후에는 리소스 소유자가 요청을 승인해야 작동 가능합니다.

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

  2. 왼쪽 탐색 창의 설정에서 네트워킹을 선택합니다.

  3. 공유 프라이빗 액세스 페이지에서 + 공유 프라이빗 액세스 추가를 선택합니다.

  4. 내 디렉터리에서 Azure 리소스에 연결 또는 리소스 ID로 Azure 리소스에 연결을 선택합니다.

  5. 첫 번째 옵션(권장)을 선택하는 경우 포털에서 적절한 Azure 리소스를 선택하도록 도와주며, 리소스의 그룹 ID 및 리소스 종류와 같은 다른 속성을 채웁니다.

    공유 프라이빗 링크 리소스를 만들기 위한 단계별 환경을 보여 주는 공유 프라이빗 액세스 추가 페이지의 스크린샷.

  6. 두 번째 옵션을 선택하는 경우 Azure 리소스 ID를 수동으로 입력하고 이 문서의 시작 부분에 있는 목록에서 적절한 그룹 ID를 선택합니다.

    공유 프라이빗 링크 리소스를 만들기 위한 수동 환경을 보여 주는 공유 프라이빗 액세스 추가 페이지의 스크린샷.

  7. 프로비전 상태가 “업데이트 중”인지 확인합니다.

    진행 중인 리소스 만들기를 보여 주는 공유 프라이빗 액세스 추가 페이지의 스크린샷.

  8. 리소스가 만들어지면 리소스의 프로비전 상태가 “성공”으로 변경됩니다.

    리소스 만들기가 완료되었음을 보여 주는 공유 프라이빗 액세스 추가 페이지의 스크린샷.

성공 시 202 Accepted 응답이 반환됩니다. 아웃바운드 프라이빗 엔드포인트를 만드는 프로세스는 장기 실행(비동기) 작업입니다. 여기에는 다음 리소스 배포가 포함됩니다.

  • "Pending" 상태의 개인 IP 주소로 할당된 프라이빗 엔드포인트입니다. 개인 IP 주소는 검색 서비스별 프라이빗 인덱서에 대한 실행 환경의 가상 네트워크에 할당된 주소 공간에서 가져옵니다. 프라이빗 엔드포인트 승인 시 Azure AI 검색에서 Azure 리소스로의 통신은 개인 IP 주소와 보안 프라이빗 링크 채널에서 시작됩니다.

  • 그룹 ID를 기반으로 하는 리소스 유형에 대한 프라이빗 DNS 영역입니다. 이 리소스를 배포하여 프라이빗 리소스에 대한 DNS 조회가 프라이빗 엔드포인트와 연결된 IP 주소를 활용하는지 확인합니다.

2 - 프라이빗 엔드포인트 연결 승인

프라이빗 엔드포인트 연결 승인은 Azure PaaS 쪽에서 부여됩니다. 리소스 소유자의 명시적인 승인이 필요합니다. 다음 단계에서는 Azure Portal을 사용한 승인을 다루지만, Azure PaaS 쪽에서 프로그래밍 방식으로 연결을 승인하는 몇 가지 링크는 다음과 같습니다.

Azure Portal을 사용하여 다음 단계를 수행합니다.

  1. Azure PaaS 리소스의 네트워킹 페이지를 엽니다.text

  2. 프라이빗 엔드포인트 연결을 나열하는 섹션을 찾습니다. 다음 예는 스토리지 계정에 대한 것입니다.

  3. 연결을 선택한 다음, 승인을 선택합니다. 포털에서 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.

    프라이빗 엔드포인트 연결 창의 승인됨 상태를 보여 주는 Azure Portal의 스크린샷

프라이빗 엔드포인트가 승인되면 Azure AI Search는 생성된 DNS 영역에 필요한 DNS 영역 매핑을 만듭니다.

네트워킹 페이지의 프라이빗 엔드포인트 링크가 활성화되어 있어도 확인되지 않습니다.

Azure PaaS 네트워킹 페이지의 프라이빗 엔드포인트 링크 스크린샷.

링크를 선택하면 오류가 발생합니다. 백 엔드 프라이빗 엔드포인트 리소스는 Microsoft 관리 테넌트에서 Microsoft에 의해 프로비전되고 연결된 리소스(Azure AI 검색)는 테넌트에 있기 때문에 "The access token is from the wrong issuer"must match the tenant associated with this subscription 상태 메시지가 나타납니다. 프라이빗 엔드포인트 연결 링크를 선택하여 프라이빗 엔드포인트 리소스에 액세스할 수 없도록 설계되었습니다.

공유 프라이빗 링크의 상태를 확인하려면 다음 섹션의 지침을 따릅니다.

Azure AI 검색 쪽에서 검색 서비스 네트워킹 페이지의 공유 프라이빗 액세스 페이지를 다시 방문하여 요청 승인을 확인할 수 있습니다. 연결 상태는 승인됨이어야 합니다.

승인된 공유 프라이빗 링크 리소스를 보여 주는 Azure Portal 스크린샷.

또는 공유 프라이빗 링크 리소스 - 가져오기를 사용하여 연결 상태를 가져올 수도 있습니다.

az rest --method get --uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2024-07-01

그러면 연결 상태가 “속성” 섹션 아래에 “상태”로 표시되는 JSON이 반환됩니다. 다음은 스토리지 계정에 대한 예입니다.

{
      "name": "blob-pe",
      "properties": {
        "privateLinkResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
        "groupId": "blob",
        "requestMessage": "please approve",
        "status": "Approved",
        "resourceRegion": null,
        "provisioningState": "Succeeded"
      }
}

리소스의 프로비전 상태(properties.provisioningState)가 이고 “성공함”이고 연결 상태(properties.status)가 “승인됨”이면 공유 프라이빗 링크 리소스가 작동하고 프라이빗 엔드포인트를 통해 통신하도록 인덱서를 구성할 수 있음을 의미합니다.

4 - 프라이빗 환경에서 실행되도록 인덱서 구성

인덱서 실행은 검색 서비스와 관련된 프라이빗 환경 또는 비용이 많이 드는 여러 고객의 기술 세트 처리를 오프로드하기 위해 내부적으로 사용되는 다중 테넌트 환경에서 발생합니다.

실행 환경은 투명하지만 일단 방화벽 규칙을 빌드하거나 프라이빗 연결을 설정하기 시작하면 인덱서 실행을 고려해야 합니다. 프라이빗 연결의 경우 항상 프라이빗 환경에서 실행되도록 인덱서 실행을 구성합니다.

이 단계에서는 REST API를 사용하여 프라이빗 환경에서 실행할 인덱서를 구성하는 방법을 보여 줍니다. 포털에서 JSON 편집기를 사용하여 실행 환경을 설정할 수도 있습니다.

참고 항목

프라이빗 엔드포인트 연결이 승인되기 전에 이 단계를 수행할 수 있습니다. 그러나 프라이빗 엔드포인트 연결이 승인된 것으로 표시될 때까지 보안 리소스(예: 스토리지 계정)와 커뮤니케이션하려는 기존 인덱서는 일시적인 오류 상태가 되고 새 인덱서는 생성되지 않습니다.

  1. 평소와 같이 데이터 원본 정의, 인덱스 및 기술 세트(사용하는 경우)를 만듭니다. 공유 프라이빗 엔드포인트를 사용하는 경우에 따라 달라지는 이러한 정의에는 속성이 없습니다.

  2. 이전 단계에서 만든 데이터 원본, 인덱스 및 기술 세트를 가리키는 인덱서를 만듭니다. 또한 인덱서 executionEnvironment 구성 속성을 private으로 설정하여 인덱서가 프라이빗 실행 환경에서 실행되도록 합니다.

    {
        "name": "indexer",
        "dataSourceName": "blob-datasource",
        "targetIndexName": "index",
        "parameters": {
            "configuration": {
                "executionEnvironment": "private"
            }
        },
        "fieldMappings": []
    }
    

인덱서가 성공적으로 만들어지면 프라이빗 엔드포인트 연결을 통해 Azure 리소스에 연결해야 합니다. 인덱서 상태 API를 사용하여 인덱서의 상태를 모니터링할 수 있습니다.

참고 항목

기존 인덱서가 이미 있는 경우 executionEnvironmentprivate으로 설정하거나 포털에서 JSON 편집기를 사용하여 PUT API를 통해 업데이트할 수 있습니다.

  1. 아직 수행하지 않은 경우 Azure PaaS 리소스가 공용 인터넷에서 연결을 거부하는지 확인합니다. 연결이 수락되면 Azure PaaS 리소스의 네트워킹 페이지에서 DNS 설정을 검토합니다.

  2. 프라이빗 엔드포인트에 대한 인덱서 연결과 같은 아웃바운드 요청 시나리오를 호출할 수 있는 도구를 선택합니다. 데이터 가져오기 마법사를 사용하는 것이 쉬운 선택이지만 더 정밀한 작업을 위해 REST 클라이언트와 REST API를 사용해 볼 수도 있습니다. 프라이빗 연결에 검색 서비스가 구성되지 않은 경우 Search에 대한 REST 클라이언트 연결은 공용 인터넷을 통해 수행할 수 있습니다.

  3. 연결 문자열을 프라이빗 Azure PaaS 리소스로 설정합니다. 공유 프라이빗 링크에서 연결 문자열의 형식은 변경되지 않습니다. 검색 서비스는 내부적으로 공유 프라이빗 링크를 호출합니다.

    인덱서 워크로드의 경우 연결 문자열은 데이터 원본 정의에 있습니다. 데이터 원본의 예는 다음과 같습니다.

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. 인덱서 워크로드의 경우 인덱서 정의에서 실행 환경을 설정해야 합니다. 인덱서 정의의 예는 다음과 같습니다.

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. 인덱서를 실행합니다. 인덱서 실행에 성공하고 검색 인덱스가 채워지면 공유 프라이빗 링크가 작동합니다.

문제 해결

  • “데이터 원본 자격 증명이 유효하지 않음”과 함께 인덱서 만들기에 실패하는 경우 연결을 디버그하기 전에 공유 프라이빗 링크의 승인 상태를 확인합니다. 상태가 Approved이면 properties.provisioningState 속성을 확인합니다. Incomplete이면 기본 종속성에 문제가 있는 것일 수 있습니다. 이 경우 PUT 요청을 다시 실행하여 공유 프라이빗 링크를 다시 만듭니다. 승인 단계를 반복해야 할 수도 있습니다.

  • 인덱서가 일관적으로 또는 간헐적으로 실패하는 경우 인덱서에서 executionEnvironment 속성을 확인합니다. 값은 private로 설정해야 합니다. 이 속성을 설정하지 않았고 인덱서 실행이 과거에 성공했다면 검색 서비스가 저절로 프라이빗 환경을 사용했기 때문에 문제가 발생한 것입니다. 시스템의 부하가 낮으면 검색 서비스가 표준 환경의 처리를 이동합니다.

  • 공유 프라이빗 링크를 만들 때 오류가 발생하는 경우 서비스 한도를 확인하여 계층의 할당량을 초과하지 않았는지 확인합니다.

다음 단계

프라이빗 엔드포인트 및 기타 보안 연결 방법에 대해 자세히 알아보기: