역할을 사용하여 Azure AI Search에 연결
Azure는 플랫폼에서 실행되는 모든 서비스에 대해 Microsoft Entra ID를 통해 글로벌 인증 및 역할 기반 액세스 제어 를 제공합니다. 이 문서에서는 Azure AI Search에서 검색 콘텐츠 및 관리에 대한 액세스를 제공하는 역할에 대해 알아봅니다.
Azure AI 검색에서는 다음 용도로 Azure 역할을 할당할 수 있습니다.
검색 결과에 대한 사용자별 액세스(행 수준 보안 또는 문서 수준 보안이라고도 함)는 역할 할당을 통해 지원되지 않습니다. 해결 방법은 보안 필터를 사용하여 사용자 ID별로 결과를 트리밍하고 요청자가 액세스 권한이 없어야 하는 문서를 제거하는 것입니다. 데모는 RAG을 사용한 기업 채팅 샘플을 참조합니다.
역할 할당은 모든 도구 및 클라이언트 라이브러리에서 누적되고 광범위하게 사용됩니다. 역할은 Azure 역할 기반 액세스 제어 설명서에 설명된 지원되는 접근 방식 중 하나를 사용하여 할당할 수 있습니다.
역할 기반 액세스는 선택 사항이지만 사용하는 것이 좋습니다. 다른 대안으로서, 기본으로 제공되는 키 기반 인증이 있습니다.
필수 조건
역할 기반 액세스가 가능한 모든 지역, 모든 계층의 검색 서비스.
소유자, 사용자 액세스 관리자, 역할 기반 액세스 제어 관리자 또는 Microsoft.Authorization/roleAssignments/쓰기 권한이 있는 사용자 지정 역할
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 서비스 기여자 | 소유자/기여자 | 판독기 |
---|---|---|---|---|---|
Azure Portal에서 리소스 보기 | ❌ | ❌ | ✅ | ✅ | ✅ |
리소스 속성/메트릭/엔드포인트 보기 | ❌ | ❌ | ✅ | ✅ | ✅ |
리소스의 모든 개체 나열 | ❌ | ❌ | ✅ | ✅ | ✅ |
액세스 할당량 및 서비스 통계 | ❌ | ❌ | ✅ | ✅ | ❌ |
인덱스 읽기/쿼리 | ✅ | ✅ | ❌ | ❌ | ❌ |
인덱싱을 위한 데이터 업로드 | ❌ | ✅ | ❌ | ❌ | ❌ |
인덱스/별칭 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
인덱서/데이터 원본/기술 세트 만들기, 편집 및 실행 | ❌ | ❌ | ✅ | ✅ | ❌ |
동의어 맵 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
디버그 세션 만들기 또는 편집 | ❌ | ❌ | ✅ | ✅ | ❌ |
배포 만들기 또는 관리 | ❌ | ❌ | ✅ | ✅ | ❌ |
Azure AI Search 리소스 만들기 또는 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
키에서 키 보기/복사/다시 생성 | ❌ | ❌ | ✅ | ✅ | ❌ |
역할/정책/정의 보기 | ❌ | ❌ | ✅ | ✅ | ❌ |
인증 옵션 설정 | ❌ | ❌ | ✅ | ✅ | ❌ |
프라이빗 연결 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
네트워크 보안 구성 | ❌ | ❌ | ✅ | ✅ | ❌ |
소유자와 참가자는 소유자만 역할을 할당할 수 있다는 점을 제외하고 동일한 권한을 부여합니다.
API 키를 사용하는 경우 소유자와 참가자는 Azure Portal에서 개체를 만들고, 읽고, 업데이트하고, 삭제할 수 있습니다. Azure Portal은 데이터 평면 API에 대한 내부 호출에서 키를 사용합니다. 이후에 "역할만"을 사용하도록 Azure AI Search를 구성하면 소유자 및 참가자는 해당 역할 할당만 사용하여 Azure Portal에서 개체를 관리할 수 없습니다. 해결 방법은 검색 인덱스 데이터 판독기, 검색 인덱스 데이터 기여자 및 Search Service 기여자와 같은 더 많은 역할을 할당하는 것입니다.
역할 할당
이 섹션에서는 다음 역할을 할당합니다.
- 서비스 관리
- 검색 서비스에 대한 개발 또는 쓰기 액세스
- 쿼리에 대한 읽기 전용 액세스
서비스 관리를 위한 역할 할당
서비스 관리자는 검색 서비스를 만들어 구성하며 관리 REST API 또는 이에 상응하는 클라이언트 라이브러리에 설명된 모든 컨트롤 플레인 작업을 수행할 수 있습니다. 소유자 또는 참가자인 경우 Azure Portal에서 대부분의 데이터 평면 검색 REST API 작업을 수행할 수도 있습니다.
역할 | ID |
---|---|
Owner |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
Contributor |
b24988ac-6180-42a0-ab88-20f7382dd24c |
Reader |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Azure Portal에 로그인합니다.
다음 역할을 할당합니다.
- 소유자(쿼리 권한을 제외한 모든 데이터 평면 및 컨트롤 플레인 작업에 대한 모든 액세스 권한)
- 기여자(역할 할당 권한을 제외하면 소유자와 동일)
- 읽기 권한자(메트릭 모니터링 및 보기 가능)
개발을 위한 역할 할당
역할 할당은 검색 서비스에서 전체적으로 동일합니다. 단일 인덱스에 권한 범위를 지정하려면, PowerShell이나 Azure CLI를 사용하여 사용자 지정 역할을 만듭니다.
작업 | 역할 | ID |
---|---|---|
CRUD 작업 | 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 |
전체 액세스를 제공하는 또 다른 역할 조합은 기여자 또는 소유자에 조합되는 검색 인덱스 데이터 읽기 권한자입니다.
Important
서비스 또는 인덱스용 역할 기반 액세스를 구성하고 요청에 API 키도 제공하는 경우 검색 서비스는 API 키를 사용하여 인증합니다.
Azure Portal에 로그인합니다.
다음 역할을 할당합니다.
- 검색 서비스 기여자(인덱스, 인덱서, 기술 세트 및 기타 최상위 개체에 대한 만들기-읽기-업데이트-삭제 작업)
- 검색 인덱스 데이터 기여자(문서 로드 및 인덱싱 작업 실행)
- 검색 인덱스 데이터 읽기 권한자(인덱스 쿼리)
읽기 전용 쿼리에 대한 역할 할당
인덱스 읽기 액세스 권한만 필요한 앱이나 프로세스에는 검색 인덱스 데이터 읽기 권한자 역할을 사용합니다.
역할 | ID |
---|---|
Search Index Data Reader PowerShell 사용 |
1407120a-92aa-4202-b7e9-c0e197c71c8f |
이것은 매우 구체적인 역할입니다. 이것은 GET 액세스나 POST 액세스를 검색, 자동 완성, 제안을 위한 검색 인덱스의 문서 컬렉션에 부여합니다. 이것은 인덱스 또는 다른 최상위 개체 또는 GET 서비스 통계에 대한 GET 작업이나 LIST 작업을 지원하지 않습니다.
이 섹션에서는 역할 할당을 설정하기 위한 기본 단계를 제공하고 완전성을 위해 여기에 있지만, 역할 기반 액세스를 위해 앱을 구성하는 방법에 대한 포괄적인 지침을 위해 키 없이 Azure AI 검색을 사용하는 것이 좋습니다.
Azure Portal에 로그인합니다.
검색 인덱스 데이터 판독기 역할을 할당합니다.
역할 할당 테스트
클라이언트를 사용하여 역할 할당을 테스트합니다. 역할은 구독 또는 리소스 그룹 수준으로 범위가 지정된 누적 및 상속된 역할이므로 리소스(검색 서비스) 수준에서 삭제하거나 거부할 수 없습니다.
테스트하기 전에 키 없는 연결에 대한 애플리케이션을 구성하고 역할 할당을 준비합니다.
Azure Portal에 로그인합니다.
검색 서비스로 이동합니다.
개요 페이지에서 인덱스 탭을 선택합니다.
검색 서비스 기여자는 모든 개체를 보고 만들 수 있지만 문서를 로드하거나 인덱스를 쿼리할 수는 없습니다. 권한을 확인하려면 검색 인덱스를 만듭니다.
검색 인덱스 데이터 기여자는 문서를 로드할 수 있습니다. 데이터 가져오기 마법사 외부의 Azure Portal에는 문서 로드 옵션이 없지만 인덱서를 다시 설정하여 실행하여 문서 로드 권한을 확인할 수 있습니다.
검색 인덱스 데이터 읽기 권한자는 인덱스를 쿼리할 수 있습니다. 권한을 확인하려면 검색 탐색기를 사용합니다. 쿼리를 보내고 결과를 볼 수 있어야 하지만 인덱스 정의를 보거나 만들 수는 없습니다.
현재 사용자로 테스트
이미 Search Service의 기여자 또는 소유자인 경우 Azure AI 검색에 대한 인증을 위해 사용자 ID에 대한 전달자 토큰을 제시할 수 있습니다.
Azure CLI를 사용하여 현재 사용자에 대한 전달자 토큰을 가져옵니다.
az account get-access-token --scope https://search.azure.com/.default
또는 PowerShell을 사용하여 다음을 수행합니다.
Get-AzAccessToken -ResourceUrl https://search.azure.com
Visual Studio Code의 새 텍스트 파일에 이러한 변수를 붙여넣습니다.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE @index-name = PASTE-YOUR-INDEX-NAME-HERE @token = PASTE-YOUR-TOKEN-HERE
붙여넣은 다음 액세스를 확인하는 요청을 보냅니다. 다음은 Hotels-quickstart 인덱스를 쿼리하는 것임
POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2024-07-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 검색을 클라우드 앱으로 추가합니다.
정책의 나머지 매개 변수를 업데이트합니다. 예를 들어 이 정책이 적용되는 사용자 및 그룹을 지정합니다.
정책을 저장합니다.
Important
검색 서비스에 관리 ID가 할당된 경우 특정 검색 서비스가 조건부 액세스 정책의 일부로 포함되거나 제외될 수 있는 클라우드 앱으로 표시됩니다. 조건부 액세스 정책은 특정 검색 서비스에 적용할 수 없습니다. 대신 일반 Azure AI 검색 클라우드 앱을 선택해야 합니다.
제한 사항
Azure 역할 기반 액세스 제어를 사용하면 일부 요청의 대기 시간이 증가할 수 있습니다. 서비스 리소스(인덱스, 인덱서 등)와 서비스 주체의 각각의 고유한 조합은 권한 부여 확인을 트리거합니다. 이러한 권한 부여 검사는 요청마다 최대 200밀리초의 대기 시간을 추가할 수 있습니다.
요청이 다양한 서비스 주체에서 시작되는 경우는 드물며, 모든 다른 서비스 리소스(인덱스, 인덱서 등)를 대상으로 하므로 권한 부여 검사로 인해 제한이 발생할 수 있습니다. 제한은 검색 서비스 리소스와 서비스 주체의 고유한 조합이 1초 이내에 사용된 경우에만 발생합니다.
역할 기반 액세스 제어 문제 해결
인증에 역할 기반 액세스 제어를 사용하는 애플리케이션을 개발할 때 몇 가지 일반적인 문제가 발생할 수 있습니다.
권한 부여 토큰이 관리 ID에서 제공되었고 적절한 권한이 최근에 할당된 경우 이러한 권한 할당이 적용되는 데 몇 시간이 걸릴 수 있습니다.
검색 서비스의 기본 구성은 키 기반 인증입니다. 기본 키 설정을 둘 다 또는 역할 기반 액세스 제어로 변경하지 않은 경우 역할 기반 인증을 사용하는 모든 요청이 기본 권한에 관계없이 자동으로 거부됩니다.