🚀 완전 관리형 Milvus인 Zilliz Cloud를 무료로 체험해보세요—10배 더 빠른 성능을 경험하세요! 지금 체험하기>>

milvus-logo
LFAI
홈페이지

역할에 권한 또는 권한 그룹 부여하기

역할이 만들어지면 해당 역할에 권한을 부여할 수 있습니다. 이 가이드에서는 역할에 권한 또는 권한 그룹을 부여하는 방법을 소개합니다.

역할에 권한 또는 권한 그룹 부여하기

Milvus 2.5에서는 권한 부여 작업을 간소화하는 새로운 버전의 API가 도입되었습니다. 역할에 권한을 부여할 때 더 이상 개체 유형을 조회할 필요가 없습니다. 다음은 매개변수와 해당 설명입니다.

  • role_name: 권한 또는 권한 그룹을 부여해야 하는 대상 역할의 이름입니다.

  • 리소스: 특정 인스턴스, 데이터베이스 또는 컬렉션이 될 수 있는 권한의 대상 리소스입니다. 다음 표에서는 client.grantV2() 메서드에서 리소스를 지정하는 방법을 설명합니다.

레벨

리소스

부여 방법

참고

컬렉션

특정 컬렉션

client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="col1", db_name="db1")

대상 컬렉션의 이름과 대상 컬렉션이 속한 데이터베이스의 이름을 입력합니다.

특정 데이터베이스 아래의 모든 컬렉션

client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="*", db_name="db1")

대상 데이터베이스의 이름과 와일드카드 `*` 를 컬렉션 이름으로 입력합니다.

**데이터베이스**

특정 데이터베이스

client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="db1")

대상 데이터베이스의 이름과 와일드카드 `*` 를 컬렉션 이름으로 입력합니다.

현재 인스턴스 아래의 모든 데이터베이스

client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="*")

데이터베이스 이름으로 `*`, 컬렉션 이름으로 `*` 을 입력합니다.

**인스턴스**

현재 인스턴스

client.grant_privilege_v2(role_name="roleA", privilege="ClusterAdmin", collection_name="*", db_name="*")

데이터베이스 이름으로 `*`, 컬렉션 이름으로 `*` 을 입력합니다.

  • 권한: 역할에 부여해야 하는 특정 권한 또는 권한 그룹입니다. 현재 Milvus는 부여할 수 있는 56가지 유형의 권한을 제공합니다. 아래 표에는 Milvus의 권한이 나열되어 있습니다.

    아래 표의 유형 열은 권한을 빠르게 조회할 수 있도록 사용자별로 구분한 것으로, 분류 목적으로만 사용됩니다. 권한을 부여할 때 유형을 이해할 필요는 없습니다. 해당 권한을 입력하기만 하면 됩니다.

**유형 **

**권한**

**설명**

클라이언트 측의 관련 API 설명****

데이터베이스 권한

ListDatabases

현재 인스턴스의 모든 데이터베이스 보기

[ListDatabases](https://milvus.io/docs/manage_databases.md)

DescribeDatabase

데이터베이스의 세부 정보 보기

[DescribeDatabase](https://milvus.io/docs/manage_databases.md)

CreateDatabase

데이터베이스 생성

[CreateDatabase](https://milvus.io/docs/manage_databases.md)

DropDatabase

데이터베이스 삭제

[DropDatabase](https://milvus.io/docs/manage_databases.md)

AlterDatabase

데이터베이스 속성 수정

[AlterDatabase](https://milvus.io/docs/manage_databases.md)

수집 권한

GetFlushState

컬렉션 플러시 작업 상태 확인

[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

GetLoadState

컬렉션의 로드 상태 확인

[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

GetLoadingProgress

컬렉션의 로딩 진행률 확인

[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)

ShowCollections

컬렉션 권한이 있는 모든 컬렉션 보기

[ShowCollections](https://milvus.io/docs/view-collections.md)

ListAliases

컬렉션의 모든 별칭 보기

[ListAliases](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/list_aliases.md)

컬렉션 설명

컬렉션의 세부 정보 보기

[DescribeCollection](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_collection.md)

DescribeAlias

별칭의 세부 정보 보기

[DescribeAlias](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_alias.md)

통계 가져오기

컬렉션의 통계(예: 컬렉션의 엔티티 수)를 가져옵니다.

[GetCollectionStatistics](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/get_collection_stats.md)

CreateCollection

컬렉션을 생성합니다.

[CreateCollection](https://milvus.io/docs/create-collection.md)

DropCollection

컬렉션 삭제

[DropCollection](https://milvus.io/docs/drop-collection.md)

Load

컬렉션 로드

[LoadCollection](https://milvus.io/docs/load-and-release.md)/[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)/[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

릴리스

컬렉션 릴리스

[ReleaseCollection](https://milvus.io/docs/load-and-release.md)

Flush

컬렉션의 모든 엔티티를 봉인된 세그먼트에 유지합니다. 플러시 작업 후에 삽입된 모든 엔티티는 새 세그먼트에 저장됩니다.

[Flush](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)/[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

압축

수동으로 압축 트리거

[Compact](https://milvus.io/docs/v2.0.x/compact_data.md)

RenameCollection

컬렉션 이름 바꾸기

[컬렉션 이름바꾸기](https://milvus.io/docs/modify-collection.md)

별칭 만들기

컬렉션의 별칭 만들기

[CreateAlias](https://milvus.io/docs/manage-aliases.md)

DropAlias

컬렉션의 별칭 삭제

[DropAlias](https://milvus.io/docs/manage-aliases.md)

FlushAll

데이터베이스의 모든 컬렉션을 플러시합니다.

[FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md)

파티션 권한

HasPartition

파티션 존재 여부 확인

[HasPartition](https://milvus.io/docs/manage-partitions.md)

ShowPartitions

컬렉션의 모든 파티션 보기

[ShowPartitions](https://milvus.io/docs/manage-partitions.md)

CreatePartition

파티션 만들기

[CreatePartition](https://milvus.io/docs/manage-partitions.md)

DropPartition

파티션 삭제

[DropPartition](https://milvus.io/docs/manage-partitions.md)

인덱스 권한

IndexDetail

인덱스의 세부 정보 보기

[색인 설명/색인 상태 가져오기/색인 빌드 진행률 가져오기](https://milvus.io/docs/index-vector-fields.md?tab=floating)

CreateIndex

인덱스 생성

[CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

DropIndex

인덱스 삭제

[DropIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

리소스 관리 권한

LoadBalance

로드 밸런스 달성

[LoadBalance](https://milvus.io/docs/resource_group.md)

CreateResourceGroup

리소스 그룹 생성

[CreateResourceGroup](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/create_resource_group.md)

DropResourceGroup

리소스 그룹 삭제

[DropResourceGroup](https://milvus.io/docs/resource_group.md)

업데이트 리소스 그룹

리소스 그룹 업데이트

[UpdateResourceGroups](https://milvus.io/docs/resource_group.md)

DescribeResourceGroup

리소스 그룹의 세부 정보 보기

[DescribeResourceGroup](https://milvus.io/docs/resource_group.md)

리소스 그룹 목록

현재 인스턴스의 모든 리소스 그룹 보기

[ListResourceGroups](https://milvus.io/docs/resource_group.md)

TransferNode

리소스 그룹 간 노드 전송

[TransferNode](https://milvus.io/docs/resource_group.md)

TransferReplica

리소스 그룹 간 복제본 전송

[TransferReplica](https://milvus.io/docs/resource_group.md)

BackupRBAC

현재 인스턴스에서 모든 RBAC 관련 작업에 대한 백업을 생성합니다.

BackupRBAC

RestoreRBAC

현재 인스턴스의 모든 RBAC 관련 작업의 백업을 복원합니다.

RestoreRBAC

엔터티 권한

쿼리

쿼리 수행

[쿼리](https://milvus.io/docs/get-and-scalar-query.md)

검색

검색 수행

[검색](https://milvus.io/docs/single-vector-search.md)

삽입

엔티티 삽입

[삽입](https://milvus.io/docs/insert-update-delete.md)

삭제

엔티티 삭제

[삭제](https://milvus.io/docs/delete-entities.md)

Upsert

엔터티 삽입

[업서트](https://milvus.io/docs/upsert-entities.md)

가져오기

엔티티 대량 삽입 또는 가져오기

[대량 삽입/가져오기](https://milvus.io/docs/import-data.md)

RBAC 권한

소유권 만들기

사용자 또는 역할 만들기

[사용자 만들기/역할 만들기](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

UpdateUser

사용자의 비밀번호 업데이트

[UpdateCredential](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

DropOwnership

사용자 비밀번호 또는 역할 삭제

[DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh)

SelectOwnership

특정 역할이 부여된 모든 사용자 보기

[SelectRole/SelectGrant](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

소유권 관리

사용자 또는 역할을 관리하거나 사용자에게 역할을 부여합니다.

[사용자 역할 운영/권한 운영/권한 운영V2](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

사용자 선택

사용자에게 부여된 모든 역할 보기

[SelectUser](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

권한 그룹 만들기

권한 그룹 만들기

[CreatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

DropPrivilegeGroup

권한 그룹 삭제

[DropPrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

ListPrivilegeGroups

현재 인스턴스의 모든 권한 그룹 보기

[ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

권한 그룹 운영

권한 그룹에 권한을 추가하거나 권한 그룹에서 권한을 제거합니다.

[OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

다음 예는 기본 데이터베이스 아래의 collection_01privilege_group_1 라는 권한 그룹과 role_a 역할에 PrivilegeSearch 권한을 부여하는 방법을 보여줍니다.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.grant_privilege_v2(
    role_name="role_a",
    privilege="Search"
    collection_name='collection_01'
    db_name='default',
)
    
client.grant_privilege_v2(
    role_name="role_a",
    privilege="privilege_group_1"
    collection_name='collection_01'
    db_name='default',
)

client.grant_privilege_v2(
    role_name="role_a",
    privilege="ClusterReadOnly"
    collection_name='*'
    db_name='*',
)
import io.milvus.v2.service.rbac.request.GrantPrivilegeReqV2

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.GrantV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "collection_01", "privilege_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});

await milvusClient.grantPrivilege({
   roleName: 'role_a',
   object: 'Collection', 
   objectName: 'collection_01',
   privilegeName: 'Search'
 });
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "privilege_group_1",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

역할 설명

다음 예제는 describe_role 메서드를 사용하여 role_a 역할에 부여된 권한을 보는 방법을 보여줍니다.

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")
import io.milvus.v2.service.rbac.response.DescribeRoleResp;
import io.milvus.v2.service.rbac.request.DescribeRoleReq

DescribeRoleReq describeRoleReq = DescribeRoleReq.builder()
        .roleName("role_a")
        .build();
DescribeRoleResp resp = client.describeRole(describeRoleReq);
List<DescribeRoleResp.GrantInfo> infos = resp.getGrantInfos();
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.ListRoles(context.Background())
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

await milvusClient.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a"
}'

아래는 출력 예시입니다.

{
     "role": "role_a",
     "privileges": [
         {
             "collection_name": "collection_01",
             "db_name": "default",
             "role_name": "role_a",
             "privilege": "Search",
             "grantor_name": "root"
         },
         "privilege_group_1"
     ]
}

역할에서 권한 또는 권한 그룹 해지하기

다음은 기본 데이터베이스 아래의 collection_01 에 대한 PrivilegeSearch 권한과 역할 role_a 에 부여된 privilege_group_1 권한 그룹을 해지하는 예제입니다.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.revoke_privilege_v2(
    role_name="role_a",
    privilege="Search"
    collection_name='collection_01'
    db_name='default',
)
    
client.revoke_privilege_v2(
    role_name="role_a",
    privilege="privilege_group_1"
    collection_name='collection_01'
    db_name='default',
)

client.revoke_privilege_v2(
    role_name="role_a",
    privilege="ClusterReadOnly"
    collection_name='*'
    db_name='*',
)
import io.milvus.v2.service.rbac.request.RevokePrivilegeReqV2

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.RevokeV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "collection_01", "privielge_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?