Azure는 플랫폼에서 실행되는 모든 서비스에 대해 Microsoft Entra ID를 통해 글로벌 인증 및 역할 기반 액세스 제어 를 제공합니다. 이 문서에서는 Azure AI 검색에서 검색 콘텐츠 및 관리에 대한 액세스 권한을 제공하는 역할에 대해 알아보세요.
Azure AI 검색에서는 다음 용도로 Azure 역할을 할당할 수 있습니다.
검색 결과에 대한 사용자별 액세스( 행 수준 보안 또는 문서 수준 액세스라고도 함)는 ADLS(Azure Data Lake Storage) Gen2 및 Azure Blob 인덱스에 대한 권한 상속과 다른 모든 플랫폼에 대한 보안 필터를 통해 지원됩니다( 문서 수준 액세스 제어 참조).
역할 할당은 모든 도구 및 클라이언트 라이브러리에서 누적되고 광범위하게 사용됩니다. Azure 역할 기반 액세스 제어 설명서에 설명된 지원되는 접근 방식을 사용하여 역할을 할당할 수 있습니다.
역할 기반 액세스는 선택 사항이지만 사용하는 것이 좋습니다. 다른 대안으로서, 기본으로 제공되는 키 기반 인증이 있습니다.
필수 구성 요소
역할 기반 액세스가 가능한 모든 지역, 모든 계층의 검색 서비스.
소유자, 사용자 액세스 관리자, 역할 기반 액세스 제어 관리자 또는 Microsoft.Authorization/roleAssignments/write 권한이 있는 사용자 지정 역할.
Azure Portal에서 역할을 할당하는 방법
다음 단계는 모든 역할 할당에 적용됩니다.
Azure Portal에 로그인합니다.
검색 서비스로 이동합니다.
왼쪽 창에서 액세스 제어(IAM) 를 선택합니다.
역할 할당 추가 마법사를 시작하려면 >역할 할당 추가를 선택합니다.
원하는 역할을 선택합니다. 사용자 또는 관리 ID에 관계없이 여러 보안 주체를 마법사를 통과하는 한 가지 역할로 할당할 수 있습니다. 그러나 정의한 각 역할에 대해 이러한 단계를 반복해야 합니다.
멤버 탭에서 Microsoft Entra 사용자 또는 그룹 ID를 선택합니다. 다른 Azure 서비스에 대한 권한을 설정하는 경우 시스템 또는 사용자 관리 ID를 선택합니다.
검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.
검색에 사용되는 기본 제공 역할
역할은 데이터 평면 또는 컨트롤 플레인 계층에 영향을 주는 특정 작업에 대한 권한 컬렉션입니다.
데이터 평면은 인덱싱 또는 쿼리와 같은 검색 서비스 엔드포인트에 대한 작업이나 Search Service REST API 또는 동등한 Azure SDK 클라이언트 라이브러리에 지정된 기타 작업을 나타냅니다.
컨트롤 플레인은 검색 서비스를 만들거나 구성하는 것과 같은 Azure 리소스 관리를 의미합니다.
다음 역할이 기본 제공됩니다. 이러한 역할이 요구 사항을 충족하지 않는 경우 사용자 지정 역할을 만듭니다.
| 역할 | 평면 | 설명 |
|---|---|---|
| 소유자 | 컨트롤 & 데이터 | Azure 역할을 할당하는 기능을 포함하여 검색 리소스의 컨트롤 플레인에 대한 모든 권한입니다. 소유자 역할만 인증 옵션을 사용하거나 사용하지 않도록 설정하거나 다른 사용자의 역할을 관리할 수 있습니다. 구독 관리자는 기본적으로 멤버입니다.
데이터 평면에서 이 역할은 Search Service 기여자 역할과 동일한 액세스 권한을 갖습니다. 여기에는 문서를 쿼리하는 기능을 제외한 모든 데이터 평면 작업에 대한 액세스가 포함됩니다. |
| 기여자 | 컨트롤 & 데이터 | 역할을 할당하거나 인증 옵션을 변경하는 기능을 제외하고 소유자와 동일한 수준의 컨트롤 플레인 액세스 권한입니다.
데이터 평면에서 이 역할은 Search Service 기여자 역할과 동일한 액세스 권한을 갖습니다. 여기에는 문서 쿼리 또는 인덱싱 기능을 제외한 모든 데이터 평면 작업에 대한 액세스가 포함됩니다. |
| 판독기 | 컨트롤 & 데이터 | 검색 메트릭, 콘텐츠 메트릭(사용된 스토리지, 개체 수) 및 데이터 평면 리소스(인덱서, 인덱서 등)의 개체 정의를 포함하여 전체 서비스에 대한 읽기 권한입니다. 그러나 API 키를 읽거나 인덱스 내의 콘텐츠를 읽을 수는 없습니다. |
| Search 서비스 기여자 | 컨트롤 & 데이터 | 개체 정의(인덱스, 별칭, 동의어 맵, 인덱서, 데이터 원본 및 기술 세트)에 대한 읽기/쓰기 권한입니다. 이 역할은 개체를 만드는 개발자와 검색 서비스 및 해당 개체를 관리하지만 인덱스 콘텐츠에 액세스할 수 없는 관리자를 위한 것입니다. 이 역할을 사용하여 인덱스 만들기/ 삭제/ 나열, 인덱스 정의 가져오기, 서비스 정보(통계 및 할당량) 가져오기, 분석기 테스트, 동의어 맵/인덱서/데이터 원본/기술 세트 만들기/관리를 수행합니다. 권한 목록은 Microsoft.Search/searchServices/*를 참조하세요. |
| 검색 인덱스 데이터 기여자 | 데이터 | 인덱스의 콘텐츠에 대한 읽기-쓰기 권한입니다. 이 역할은 인덱스의 문서 컬렉션을 가져오거나 새로 고치거나 쿼리해야 하는 개발자 또는 인덱스 소유자를 위한 것입니다. 이 역할은 인덱스 만들기, 업데이트 또는 삭제를 지원하지 않습니다. 기본적으로 이 역할은 검색 서비스의 모든 인덱스에 적용됩니다. 범위를 좁히려면 단일 인덱스에 대한 액세스 권한 부여를 참조하세요. |
| 검색 인덱스 데이터 읽기 권한자 | 데이터 | 쿼리 인덱스 쿼리를 위한 읽기 전용 액세스입니다. 이 역할은 쿼리를 실행하는 앱 및 사용자를 위한 것입니다. 이 역할은 개체 정의에 대한 읽기 권한을 지원하지 않습니다. 예를 들어, 검색 인덱스 정의를 읽거나 검색 서비스 통계를 가져올 수 없습니다. 기본적으로 이 역할은 검색 서비스의 모든 인덱스에 적용됩니다. 범위를 좁히려면 단일 인덱스에 대한 액세스 권한 부여를 참조하세요. |
사용 사례에 대한 충분한 권한을 가져오려면 이러한 역할을 결합합니다.
참고
Azure 역할 기반 액세스를 사용하지 않도록 설정해도 컨트롤 플레인(소유자, 기여자, 읽기 권한자)에 대한 기본 제공 역할을 계속 사용할 수 있습니다. 역할 기반 액세스를 사용하지 않도록 설정하면 해당 역할과 연결된 데이터 관련 권한만 제거됩니다. 데이터 평면 역할을 사용하지 않도록 설정하면 Search Service 기여자가 컨트롤 플레인 기여자와 동일합니다.
요약
| 사용 권한 | 검색 인덱스 데이터 읽기 권한자 | 검색 인덱스 데이터 기여자 | Search 서비스 참가자 | 소유자/기여자 | 판독기 |
|---|---|---|---|---|---|
| Azure portal에서 리소스 보기 | ❌ | ❌ | ✅ | ✅ | ✅ |
| 리소스 속성, 메트릭 및 엔드포인트 보기 | ❌ | ❌ | ✅ | ✅ | ✅ |
| 리소스의 모든 개체 나열 | ❌ | ❌ | ✅ | ✅ | ✅ |
| 할당량 및 서비스 통계 액세스 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 인덱스 읽기 및 쿼리 | ✅ | ✅ | ❌ | ❌ | ❌ |
| 인덱싱을 위한 데이터 업로드 1 | ❌ | ✅ | ❌ | ❌ | ❌ |
| 권한 필터에 관계없이 상승된 읽기 2 | ❌ | ✅ | ❌ | ❌ | ❌ |
| 인덱스 및 별칭 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 인덱서, 데이터 원본 및 기술 세트 만들기, 편집 및 실행 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 동의어 맵 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 디버그 세션 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 배포 만들기 또는 관리 | ❌ | ❌ | ✅ | ✅ | ❌ |
| Azure AI 검색 리소스 만들기 또는 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 키 아래에서 키 보기, 복사 및 다시 생성 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 역할, 정책 및 정의 보기 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 인증 옵션 설정 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 프라이빗 연결 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
| 네트워크 보안 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
1 Azure Portal에서 소유자 또는 기여자는 다른 클라이언트에서 문서를 업로드할 수 없더라도 인덱스를 만들고 로드하는 데이터 가져오기 마법사를 실행할 수 있습니다. 검색 서비스 자체는 개별 사용자가 아니라 마법사에서 데이터 연결을 만듭니다. 마법사에는 Microsoft.Search/searchServices/indexes/documents/* 이 작업을 완료하는 데 필요한 권한이 있습니다.
2 호출된 엔티티의 ID를 사용하여 결과를 가져오는 디버깅 쿼리에 관리자 권한 읽기를 사용합니다. 자세한 내용은 잘못된 쿼리 결과 조사를 참조하세요.
소유자와 기여자는 동일한 권한을 부여하지만, 소유자만 역할을 할당할 수 있습니다.
역할 할당
이 섹션에서는 다음 역할을 할당합니다.
- 서비스 관리
- 검색 서비스에 대한 개발 또는 쓰기 액세스
- 쿼리에 대한 읽기 전용 액세스
서비스 관리를 위한 역할 할당
서비스 관리자는 검색 서비스를 만들어 구성하며 관리 REST API 또는 이에 상응하는 클라이언트 라이브러리에 설명된 모든 컨트롤 플레인 작업을 수행할 수 있습니다. 소유자 또는 기여자인 경우 Azure Portal에서 대부분의 데이터 평면 REST API 검색 작업을 수행할 수도 있습니다.
| 역할 | 아이디 |
|---|---|
Owner |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
Contributor |
b24988ac-6180-42a0-ab88-20f7382dd24c |
Reader |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Azure Portal에 로그인합니다.
다음 역할을 할당합니다.
- 소유자(쿼리 권한을 제외한 모든 데이터 평면 및 컨트롤 플레인 작업에 대한 모든 액세스 권한)
- 기여자(역할 할당 권한을 제외하면 소유자와 동일)
- 읽기 권한자(메트릭 모니터링 및 보기 가능)
개발을 위한 역할 할당
역할 할당은 검색 서비스에서 전역적으로 적용됩니다. 단일 인덱스에 권한 범위를 지정하려면, PowerShell이나 Azure CLI를 사용하여 사용자 지정 역할을 만듭니다.
| 작업 | 역할 | 아이디 |
|---|---|---|
| 개체 만들기 또는 관리 | Search Service Contributor |
7ca78c08-252a-4471-8644-bb5ff32d4ba0 |
| 문서 로드, 인덱싱 작업 실행 | Search Index Data Contributor |
8ebe5a00-799e-43f5-93ac-243d3dce84a7 |
| 인덱스 쿼리 | Search Index Data Reader |
1407120a-92aa-4202-b7e9-c0e197c71c8f |
전체 액세스를 제공하는 또 다른 역할 조합은 기여자 또는 소유자에 조합되는 검색 인덱스 데이터 읽기 권한자입니다.
중요합니다
서비스 또는 인덱스용 역할 기반 액세스를 구성하고 요청에 API 키도 제공하는 경우 검색 서비스는 API 키를 사용하여 인증합니다.
Azure Portal에 로그인합니다.
다음 역할을 할당합니다.
- Search Service 기여자(인덱스, 인덱서, 기술 세트 및 기타 최상위 개체에 대한 만들기, 읽기, 업데이트 및 삭제 작업)
- 검색 인덱스 데이터 기여자(문서 로드 및 인덱싱 작업 실행)
- 검색 인덱스 데이터 읽기 권한자(인덱스 쿼리)
읽기 전용 쿼리에 대한 역할 할당
인덱스 읽기 권한자만 필요한 앱 및 프로세스에 대해 검색 인덱스 데이터 판독기 역할을 사용합니다.
| 역할 | 아이디 |
|---|---|
Search Index Data Reader
PowerShell 사용 |
1407120a-92aa-4202-b7e9-c0e197c71c8f |
이 역할은 매우 구체적입니다. 이것은 GET 액세스나 POST 액세스를 검색, 자동 완성, 제안을 위한 검색 인덱스의 문서 컬렉션에 부여합니다. 이것은 인덱스 또는 다른 최상위 개체 또는 GET 서비스 통계에 대한 GET 작업이나 LIST 작업을 지원하지 않습니다.
이 섹션에서는 역할 할당을 설정하기 위한 기본 단계를 제공하고 완전성을 위해 여기에 있지만 역할 기반 액세스를 위해 앱을 구성하는 포괄적인 지침은 키 없이 Azure AI Search 사용을 참조하세요.
참고
개발자는 Microsoft ID에 근거한 쿼리를 디버그해야 하는 경우 검색 인덱스 데이터 기여자를 사용하거나 디버그를 위해 상승된 권한을 제공하는 사용자 지정 역할을 만듭니다.
Azure Portal에 로그인합니다.
검색 인덱스 데이터 읽기 권한자 역할을 할당합니다.
역할 할당 테스트
클라이언트를 사용하여 역할 할당을 테스트합니다. 역할은 누적된다는 것을 잊지 마세요. 리소스(검색 서비스) 수준에서 구독 또는 리소스 그룹 수준으로 범위가 지정된 상속된 역할을 삭제하거나 거부할 수 없습니다.
테스트하기 전에 키 없는 연결에 대한 애플리케이션을 구성하고 역할 할당을 준비합니다.
Azure Portal에 로그인합니다.
검색 서비스로 이동합니다.
개요 페이지에서 인덱스 탭을 선택합니다.
검색 서비스 기여자는 모든 개체를 보고 만들 수 있지만 문서를 로드하거나 인덱스를 쿼리할 수는 없습니다. 권한을 확인하려면 검색 인덱스를 만듭니다.
검색 인덱스 데이터 기여자는 문서를 로드할 수 있습니다. 데이터 가져오기 마법사 외부의 Azure Portal에는 문서 로드 옵션이 없지만 인덱서 재설정 후 실행을 통해 문서 로드 권한을 확인할 수 있습니다.
검색 인덱스 데이터 읽기 권한자는 인덱스를 쿼리할 수 있습니다. 권한을 확인하려면 검색 탐색기를 사용합니다. 쿼리를 보내고 결과를 볼 수 있어야 하지만 인덱스 정의를 보거나 만들 수는 없습니다.
현재 사용자로 테스트
이미 검색 서비스의 참가자 또는 소유자인 경우 사용자 ID에 대한 전달자 토큰을 사용하여 Azure AI Search에 인증할 수 있습니다.
Azure CLI를 사용하여 현재 사용자에 대한 전달자 토큰을 가져옵니다.
az account get-access-token --scope https://search.azure.com/.default또는 PowerShell을 사용하세요:
Get-AzAccessToken -ResourceUrl https://search.azure.comVisual Studio Code의 새 텍스트 파일에 이러한 변수를 붙여넣습니다.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE @index-name = PASTE-YOUR-INDEX-NAME-HERE @token = PASTE-YOUR-TOKEN-HERE붙여넣은 다음 액세스를 확인하는 요청을 보냅니다. 다음은 호텔 빠른 시작 인덱스를 조회하는 것입니다.
POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2025-09-01 HTTP/1.1 Content-type: application/json Authorization: Bearer {{token}} { "queryType": "simple", "search": "motel", "filter": "", "select": "HotelName,Description,Category,Tags", "count": true }
단일 인덱스 액세스 권한 부여
어떤 시나리오에서는 인덱스 같은 단일 리소스에 대한 애플리케이션의 액세스를 제한하고자 할 수 있습니다.
Azure Portal은 현재 이 세분성 수준에서 역할 할당을 지원하지 않지만 PowerShell 또는 Azure CLI를 사용하여 역할을 할당할 수 있습니다.
PowerShell에서 New-AzRoleAssignment를 사용하여 Azure 사용자 또는 그룹 이름과 할당 범위를 제공합니다.
Azure및AzureAD모듈을 로드하고 Azure 계정에 연결합니다.Import-Module -Name Az Import-Module -Name AzureAD Connect-AzAccount개별 인덱스로 범위가 지정된 역할 할당을 추가합니다.
New-AzRoleAssignment -ObjectId <objectId> ` -RoleDefinitionName "Search Index Data Contributor" ` -Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
사용자 지정 역할 만들기
기본 제공 역할이 적절한 사용 권한 조합을 제공하지 않는 경우 필요한 작업을 지원하는 사용자 지정 역할을 만들 수 있습니다.
이 예제에서는 검색 인덱스 데이터 읽기 권한자를 복제한 다음, 이름으로 인덱스를 나열하는 기능을 추가합니다. 일반적으로 검색 서비스의 인덱스를 나열하는 것은 관리 권한으로 간주됩니다.
이러한 단계는 Azure Portal을 사용하여 사용자 지정 역할 만들기 또는 업데이트에서 파생됩니다. 검색 서비스 페이지에서 기존 역할의 복제를 지원합니다.
이러한 단계에서는 이름별로 인덱스 나열을 포함하도록 검색 쿼리 권한을 보강하는 사용자 지정 역할을 만듭니다. 일반적으로 인덱스 나열은 관리 기능으로 간주됩니다.
Azure Portal에서 검색 서비스로 이동합니다.
왼쪽 탐색 창에서 액세스 제어(IAM)를 선택합니다.
작업 모음에서 역할을 선택합니다.
검색 인덱스 데이터 읽기 권한자(또는 다른 역할)를 마우스 오른쪽 단추로 클릭하고 복제를 선택하여 사용자 지정 역할 만들기 마법사를 엽니다.
기본 탭에서 “검색 인덱스 데이터 탐색기”와 같은 사용자 지정 역할의 이름을 입력하고 다음을 선택합니다.
사용 권한 탭에서 사용 권한 추가를 선택합니다.
사용 권한 추가 탭에서 Microsoft Search 타일을 검색한 다음, 선택합니다.
사용자 지정 역할의 사용 권한을 설정합니다. 페이지 맨 위에서 기본 작업 선택을 사용합니다.
- Microsoft.Search/operations에서 읽기: 사용 가능한 모든 작업 나열을 선택합니다.
- Microsoft.Search/searchServices/indexes에서 읽기: 인덱스 읽기를 선택합니다.
동일한 페이지에서 데이터 작업으로 전환하고 Microsoft.Search/searchServices/indexes/documents에서 읽기: 문서 읽기를 선택합니다.
JSON 정의는 다음 예제와 유사합니다.
{ "properties": { "roleName": "search index data explorer", "description": "", "assignableScopes": [ "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc" ], "permissions": [ { "actions": [ "Microsoft.Search/operations/read", "Microsoft.Search/searchServices/indexes/read" ], "notActions": [], "dataActions": [ "Microsoft.Search/searchServices/indexes/documents/read" ], "notDataActions": [] } ] } }검토 + 만들기를 선택하여 역할을 만듭니다. 이제 역할에 사용자 및 그룹을 할당할 수 있습니다.
조건부 액세스
다단계 인증과 같은 조직 정책을 적용해야 하는 경우 Microsoft Entra 조건부 액세스를 사용합니다.
Azure AI 검색에 대한 조건부 액세스 정책을 사용하도록 설정하려면 다음 단계를 따릅니다.
Azure Portal에 로그인합니다.
Microsoft Entra 조건부 액세스를 검색합니다.
정책을 선택합니다.
새 정책을 선택합니다.
정책의 클라우드 앱 또는 작업 섹션에서 정책 설정 방법에 따라 Azure AI 검색을 클라우드 앱으로 추가합니다.
정책의 나머지 매개 변수를 업데이트합니다. 예를 들어 이 정책이 적용되는 사용자 및 그룹을 지정합니다.
해당 정책을 저장합니다.
중요합니다
검색 서비스에 할당된 관리 ID가 있는 경우 특정 검색 서비스는 조건부 액세스 정책의 일부로 포함하거나 제외할 수 있는 클라우드 앱으로 표시됩니다. 특정 검색 서비스에는 조건부 액세스 정책을 적용할 수 없습니다. 대신 일반 Azure AI Search 클라우드 앱을 선택해야 합니다.
역할 기반 액세스 제어 문제 해결
인증에 역할 기반 액세스 제어를 사용하는 애플리케이션을 개발하는 경우 몇 가지 일반적인 문제가 발생할 수 있습니다.
권한 부여 토큰이 관리 ID 에서 제공되고 최근에 적절한 권한을 할당한 경우 이러한 권한 할당이 적용되는 데 몇 시간이 걸릴 수 있습니다 .
검색 서비스의 기본 구성은 키 기반 인증입니다. 기본 키 설정을 둘 다 또는 역할 기반 액세스 제어로 변경하지 않으면 기본 권한에 관계없이 역할 기반 인증을 사용하여 모든 요청이 자동으로 거부됩니다.