공유 프라이빗 엔드포인트를 통해 아웃바운드 연결 만들기
이 문서에서는 Azure AI Search에서 Azure 가상 네트워크 내에서 실행되는 Azure 리소스로의 프라이빗 아웃바운드 호출을 구성하는 방법을 설명합니다.
프라이빗 연결을 설정하면 검색 서비스는 인터넷에 개방된 포트가 아니라 가상 네트워크 IP 주소에 연결할 수 있습니다. 연결에 대해 만든 개체를 공유 프라이빗 링크라고 합니다. 연결에서 검색 서비스는 내부적으로 공유 프라이빗 링크를 사용하여 네트워크 경계 내의 Azure 리소스에 연결합니다.
공유 프라이빗 링크는 사용량에 따라 청구되는 프리미엄 기능입니다. 공유 프라이빗 링크를 설정하면 프라이빗 엔드포인트에 대한 요금이 Azure 청구서에 추가됩니다. 공유 프라이빗 링크를 사용하면 인바운드 및 아웃바운드 액세스에 대한 데이터 전송 속도도 청구 대상입니다. 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.
참고 항목
SQL Managed Instance에 대한 프라이빗 인덱서 연결을 설정하는 경우 해당 리소스 종류와 관련된 단계는 대신 이 문서를 참조하세요.
공유 프라이빗 링크를 사용하는 경우
Azure AI Search는 다음 시나리오에서 다른 Azure 리소스에 대한 아웃바운드 호출을 수행합니다.
- 텍스트-벡터 포함을 위한 인덱서 또는 검색 엔진의 Azure OpenAI 연결
- 지원되는 데이터 원본에 대한 인덱서 연결
- 보강을 캐싱하거나, 세션 상태를 디버그하거나, 지식 저장소에 쓰기 위해 Azure Storage에 대한 인덱서(기술 세트) 연결
- 청구를 위해 Azure AI 서비스에 대한 인덱서(기술 세트) 연결
- Azure Key Vault에 대한 암호화 키 요청
- Azure Functions 또는 유사한 리소스에 대한 사용자 지정 기술 요청
공유 프라이빗 링크는 Azure 간 연결에서만 작동합니다. OpenAI 또는 다른 외부 모델에 연결하는 경우 공용 인터넷을 통해 연결해야 합니다.
공유 프라이빗 링크는 Azure Virtual Network에서 실행되는 Azure 리소스 또는 클라이언트에 대한 프라이빗 엔드포인트를 통해 액세스되는 작업 및 데이터를 위한 것입니다.
공유 프라이빗 링크는 다음과 같습니다.
- Azure AI 검색 도구, API 또는 SDK를 사용하여 만들어짐
- Azure 리소스 소유자의 승인
- Azure AI 검색에서 특정 Azure 리소스에 대한 프라이빗 연결 시 내부적으로 사용됨
검색 서비스는 검색 서비스에서 만든 프라이빗 링크만 사용할 수 있으며 각 리소스 및 하위 리소스 조합의 경우 서비스에 만들어진 공유 프라이빗 링크는 하나만 있을 수 있습니다.
프라이빗 링크를 설정하면 검색 서비스가 해당 리소스에 연결할 때마다 자동으로 사용됩니다. 연결에 사용되는 디바이스가 Azure 리소스 방화벽의 권한 있는 IP를 사용하여 연결해야 하지만 연결 문자열 수정하거나 요청을 발급하는 데 사용하는 클라이언트를 변경할 필요는 없습니다.
Azure Private Link와 Azure AI 검색을 함께 사용하는 두 가지 시나리오가 있습니다.
시나리오 1: Azure에 대한 아웃바운드(인덱서) 연결에 프라이빗 연결이 필요한 경우 공유 프라이빗 링크를 만듭니다.
시나리오 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-preview
및2024-06-01-preview
가 포함됩니다. 최신 미리 보기 API를 사용하는 것이 좋습니다.인덱서 실행은 검색 서비스와 관련된 프라이빗 실행 환경을 사용해야 합니다. 프라이빗 엔드포인트 연결은 다중 테넌트 콘텐츠 처리 환경에서 지원되지 않습니다. 이 요구 사항에 대한 구성 설정은 이 문서에서 다룹니다.
각 계층에 대한 공유 프라이빗 링크 리소스 제한을 검토합니다.
필수 조건
워크로드별 계층 및 지역 요구 사항이 있는 Azure AI Search 서비스:
작업 계층 요구 사항 지역 요구 사항 서비스 만들기 요구 사항 기술 세트가 없는 인덱서 기본 이상 None None 포함 기술을 포함하는 기술 세트(통합 벡터화) 기본 이상 대용량 지역 2024년 4월 3일 이후 다른 기본 제공 또는 사용자 지정 기술을 사용하는 기술 세트 표준 2(S2) 이상 None 2024년 4월 3일 이후 Azure AI Search 및 Azure 리소스에 대한 권한:
리소스 사용 권한 Azure AI 검색 Microsoft.Search/searchServices/sharedPrivateLinkResources/write
Microsoft.Search/searchServices/sharedPrivateLinkResources/read
Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read
기타 Azure 리소스 프라이빗 엔드포인트 연결을 승인할 수 있는 권한입니다. 예를 들어 Azure Storage에서 필요합니다 Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action
.
지원되는 리소스 유형
다음 리소스에 대한 공유 프라이빗 링크를 만들 수 있습니다.
리소스 종류 | 하위 리소스(또는 그룹 ID) |
---|---|
Microsoft.Storage/storageAccounts 1 | blob , table , dfs file |
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 |
Microsoft.CognitiveServices/accounts 8 | cognitiveservices_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 포함 모델에 대한 벡터라이저 및 인덱서 연결에 사용됩니다. 2024년 11월 19일부터 Azure AI Foundry 모델 카탈로그 또는 Azure AI Vision 멀티모달 API에 모델을 포함하기 위한 공유 프라이빗 링크가 지원됩니다.
7 Azure OpenAI에 대한 공유 프라이빗 링크는 퍼블릭 클라우드에서만 지원됩니다. Microsoft Azure Government와 같은 다른 클라우드 제품에는 그룹 ID에 대한 공유 프라이빗 링크가 openai_account
지원되지 않습니다.
8 공유 프라이빗 링크는 이제 Azure AI 다중 서비스 계정에 대한 연결에 대해 지원됩니다(2024년 11월 기준). Azure AI Search는 청구를 위해 Azure AI 다중 서비스에 연결합니다. 이제 공유 프라이빗 링크를 통해 이러한 연결을 비공개로 설정할 수 있습니다. 공유 프라이빗 링크는 기술 세트 정의에서 관리 ID(키 없는 구성)를 구성할 때만 지원됩니다.
1 - 공유 프라이빗 링크 만들기
Azure Portal, 관리 REST API, Azure CLI 또는 Azure PowerShell을 사용하여 공유 프라이빗 링크를 만듭니다.
다음은 이에 대한 몇 가지 팁입니다.
- 의미 있는 이름을 프라이빗 링크에 지정합니다. Azure PaaS 리소스에서 공유 프라이빗 링크는 다른 프라이빗 엔드포인트와 함께 표시됩니다. “shared-private-link-for-search”와 같은 이름은 사용 방법을 상기시킬 수 있습니다.
이 섹션에서 이러한 단계를 완료하면 보류 중인 상태로 프로비전되는 공유 프라이빗 링크가 생깁니다. 링크를 만드는 데 몇 분이 걸립니다. 만들어진 후에는 리소스 소유자가 요청을 승인해야 작동 가능합니다.
Azure Portal에 로그인하고 검색 서비스를 찾습니다.
왼쪽 탐색 창의 설정에서 네트워킹을 선택합니다.
공유 프라이빗 액세스 페이지에서 + 공유 프라이빗 액세스 추가를 선택합니다.
내 디렉터리에서 Azure 리소스에 연결 또는 리소스 ID로 Azure 리소스에 연결을 선택합니다.
첫 번째 옵션(권장)을 선택하면 Azure Portal에서 적절한 Azure 리소스를 선택하고 리소스의 그룹 ID 및 리소스 종류와 같은 다른 속성을 채웁니다.
두 번째 옵션을 선택하는 경우 Azure 리소스 ID를 수동으로 입력하고 이 문서의 시작 부분에 있는 목록에서 적절한 그룹 ID를 선택합니다.
프로비전 상태가 “업데이트 중”인지 확인합니다.
리소스가 만들어지면 리소스의 프로비전 상태가 “성공”으로 변경됩니다.
공유 프라이빗 링크 만들기 워크플로
성공 시 202 Accepted
응답이 반환됩니다. 아웃바운드 프라이빗 엔드포인트를 만드는 프로세스는 장기 실행(비동기) 작업입니다. 여기에는 다음 리소스 배포가 포함됩니다.
"Pending"
상태의 개인 IP 주소로 할당된 프라이빗 엔드포인트입니다. 개인 IP 주소는 검색 서비스별 프라이빗 인덱서에 대한 실행 환경의 가상 네트워크에 할당된 주소 공간에서 가져옵니다. 프라이빗 엔드포인트 승인 시 Azure AI 검색에서 Azure 리소스로의 통신은 개인 IP 주소와 보안 프라이빗 링크 채널에서 시작됩니다.그룹 ID를 기반으로 하는 리소스 유형에 대한 프라이빗 DNS 영역입니다. 이 리소스를 배포하여 프라이빗 리소스에 대한 DNS 조회가 프라이빗 엔드포인트와 연결된 IP 주소를 활용하는지 확인합니다.
2 - 프라이빗 엔드포인트 연결 승인
프라이빗 엔드포인트 연결 승인은 Azure PaaS 쪽에서 부여됩니다. 리소스 소유자의 명시적인 승인이 필요합니다. 다음 단계에서는 Azure Portal을 사용한 승인을 다루지만, Azure PaaS 쪽에서 프로그래밍 방식으로 연결을 승인하는 몇 가지 링크는 다음과 같습니다.
- Azure Storage에서 프라이빗 엔드포인트 연결 - 배치 사용
- Azure Cosmos DB에서 프라이빗 엔드포인트 연결 - 만들기 또는 업데이트 사용
- Azure OpenAI에서는 프라이빗 엔드포인트 연결 - 만들기 또는 업데이트 사용
Azure Portal을 사용하여 다음 단계를 수행합니다.
Azure PaaS 리소스의 네트워킹 페이지를 엽니다.text
프라이빗 엔드포인트 연결을 나열하는 섹션을 찾습니다. 다음 예는 스토리지 계정에 대한 것입니다.
연결을 선택한 다음, 승인을 선택합니다. Azure Portal에서 상태를 업데이트하는 데 몇 분 정도 걸릴 수 있습니다.
프라이빗 엔드포인트가 승인되면 Azure AI Search는 생성된 DNS 영역에 필요한 DNS 영역 매핑을 만듭니다.
네트워킹 페이지의 프라이빗 엔드포인트 링크가 활성화되어 있어도 확인되지 않습니다.
링크를 선택하면 오류가 발생합니다. 백 엔드 프라이빗 엔드포인트 리소스는 Microsoft 관리 테넌트에서 Microsoft에 의해 프로비전되고 연결된 리소스(Azure AI 검색)는 테넌트에 있기 때문에 "The access token is from the wrong issuer"
및 must match the tenant associated with this subscription
상태 메시지가 나타납니다. 프라이빗 엔드포인트 연결 링크를 선택하여 프라이빗 엔드포인트 리소스에 액세스할 수 없도록 설계되었습니다.
공유 프라이빗 링크의 상태를 확인하려면 다음 섹션의 지침을 따릅니다.
3 - 공유 프라이빗 링크 상태 확인
Azure AI 검색 쪽에서 검색 서비스 네트워킹 페이지의 공유 프라이빗 액세스 페이지를 다시 방문하여 요청 승인을 확인할 수 있습니다. 연결 상태는 승인됨이어야 합니다.
또는 공유 프라이빗 링크 리소스 - 가져오기를 사용하여 연결 상태를 가져올 수도 있습니다.
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를 사용하여 프라이빗 환경에서 실행할 인덱서를 구성하는 방법을 보여 줍니다. Azure Portal에서 JSON 편집기를 사용하여 실행 환경을 설정할 수도 있습니다.
참고 항목
프라이빗 엔드포인트 연결이 승인되기 전에 이 단계를 수행할 수 있습니다. 그러나 프라이빗 엔드포인트 연결이 승인된 것으로 표시될 때까지 보안 리소스(예: 스토리지 계정)와 커뮤니케이션하려는 기존 인덱서는 일시적인 오류 상태가 되고 새 인덱서는 생성되지 않습니다.
평소와 같이 데이터 원본 정의, 인덱스 및 기술 세트(사용하는 경우)를 만듭니다. 공유 프라이빗 엔드포인트를 사용하는 경우에 따라 달라지는 이러한 정의에는 속성이 없습니다.
이전 단계에서 만든 데이터 원본, 인덱스 및 기술 세트를 가리키는 인덱서를 만듭니다. 또한 인덱서
executionEnvironment
구성 속성을private
으로 설정하여 인덱서가 프라이빗 실행 환경에서 실행되도록 합니다.{ "name": "indexer", "dataSourceName": "blob-datasource", "targetIndexName": "index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
인덱서가 성공적으로 만들어지면 프라이빗 엔드포인트 연결을 통해 Azure 리소스에 연결해야 합니다. 인덱서 상태 API를 사용하여 인덱서의 상태를 모니터링할 수 있습니다.
참고 항목
기존 인덱서가 이미 있는 경우 Azure Portal에서 JSON 편집기를 설정 executionEnvironment
하거나 사용하여 PUT API를 통해 업데이트할 private
수 있습니다.
5 - 공유 프라이빗 링크 테스트
아직 수행하지 않은 경우 Azure PaaS 리소스가 공용 인터넷에서 연결을 거부하는지 확인합니다. 연결이 수락되면 Azure PaaS 리소스의 네트워킹 페이지에서 DNS 설정을 검토합니다.
프라이빗 엔드포인트에 대한 인덱서 연결과 같은 아웃바운드 요청 시나리오를 호출할 수 있는 도구를 선택합니다. 데이터 가져오기 마법사를 사용하는 것이 쉬운 선택이지만 더 정밀한 작업을 위해 REST 클라이언트와 REST API를 사용해 볼 수도 있습니다. 프라이빗 연결에 검색 서비스가 구성되지 않은 경우 Search에 대한 REST 클라이언트 연결은 공용 인터넷을 통해 수행할 수 있습니다.
연결 문자열을 프라이빗 Azure PaaS 리소스로 설정합니다. 공유 프라이빗 링크에서 연결 문자열의 형식은 변경되지 않습니다. 검색 서비스는 내부적으로 공유 프라이빗 링크를 호출합니다.
인덱서 워크로드의 경우 연결 문자열은 데이터 원본 정의에 있습니다. 데이터 원본의 예는 다음과 같습니다.
{ "name": "my-blob-ds", "type": "azureblob", "subtype": null, "credentials": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..." }
인덱서 워크로드의 경우 인덱서 정의에서 실행 환경을 설정해야 합니다. 인덱서 정의의 예는 다음과 같습니다.
"name": "indexer", "dataSourceName": "my-blob-ds", "targetIndexName": "my-index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
인덱서를 실행합니다. 인덱서 실행에 성공하고 검색 인덱스가 채워지면 공유 프라이빗 링크가 작동합니다.
문제 해결
“데이터 원본 자격 증명이 유효하지 않음”과 함께 인덱서 만들기에 실패하는 경우 연결을 디버그하기 전에 공유 프라이빗 링크의 승인 상태를 확인합니다. 상태가
Approved
이면properties.provisioningState
속성을 확인합니다.Incomplete
이면 기본 종속성에 문제가 있는 것일 수 있습니다. 이 경우PUT
요청을 다시 실행하여 공유 프라이빗 링크를 다시 만듭니다. 승인 단계를 반복해야 할 수도 있습니다.인덱서가 일관적으로 또는 간헐적으로 실패하는 경우 인덱서에서
executionEnvironment
속성을 확인합니다. 값은private
로 설정해야 합니다. 이 속성을 설정하지 않았고 인덱서 실행이 과거에 성공했다면 검색 서비스가 저절로 프라이빗 환경을 사용했기 때문에 문제가 발생한 것입니다. 시스템이 로드 중인 경우 검색 서비스가 다중 테넌트 환경에서 처리를 이동합니다.공유 프라이빗 링크를 만들 때 오류가 발생하는 경우 서비스 한도를 확인하여 계층의 할당량을 초과하지 않았는지 확인합니다.
다음 단계
프라이빗 엔드포인트 및 기타 보안 연결 방법에 대해 자세히 알아보기: