권한 그룹 만들기

권한을 부여하는 프로세스를 간소화하려면 여러 권한을 하나의 권한 그룹으로 결합하는 것이 좋습니다.

권한 그룹과 권한 비교

권한 그룹은 여러 권한으로 구성됩니다.

Privilege Group Illustrated 권한 그룹 예시

위 그림과 같이 한 역할에 세 가지 다른 권한을 부여해야 한다고 가정해 보겠습니다.

  • 권한 그룹을 사용하지 않는 경우에는 권한을 세 번 부여해야 합니다.

  • 권한 그룹을 사용하는 경우에는 권한 그룹을 만든 다음 이 권한 그룹에 세 가지 권한을 추가하고 역할 A에 권한 그룹을 부여하기만 하면 됩니다.

권한 그룹을 사용하면 한 역할에 여러 권한을 일괄적으로 부여할 수 있습니다.

기본 제공 권한 그룹

Milvus는 사용 편의성을 위해 컬렉션, 데이터베이스, 인스턴스 수준에서 총 9개의 기본 제공 권한을 제공합니다: COLL_RO, COLL_RW, COLL_ADMIN, DB_RO, DB_RW, DB_Admin, Cluster_RO, Cluster_RW 및 Cluster_Admin입니다.

기본 제공 권한 그룹의 세 가지 수준은 계단식 관계가 없습니다. 인스턴스 수준에서 권한 그룹을 설정한다고 해서 해당 인스턴스 아래의 모든 데이터베이스 및 컬렉션에 대한 권한이 자동으로 설정되는 것은 아닙니다. 데이터베이스 및 컬렉션 수준에서의 권한은 수동으로 설정해야 합니다.

다음 표에서는 각 기본 제공 권한 그룹에 포함된 권한에 대해 설명합니다.

컬렉션 수준

  • CollectionReadOnly(COLL_RO): 컬렉션 데이터를 읽을 수 있는 권한이 포함됩니다.

  • CollectionReadWrite(COLL_RW): 컬렉션 데이터를 읽고 쓸 수 있는 권한 포함

  • CollectionAdmin(COLL_ADMIN): 컬렉션 데이터를 읽고 쓸 수 있는 권한과 컬렉션을 관리할 수 있는 권한이 포함됩니다.

아래 표에는 컬렉션 수준에서 세 가지 기본 제공 권한 그룹에 포함된 특정 권한이 나열되어 있습니다:

권한

컬렉션 읽기 전용

컬렉션 읽기/쓰기

CollectionAdmin

Query

✔️

✔️

✔️

검색

✔️

✔️

✔️

IndexDetail

✔️

✔️

✔️

GetFlushState

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

HasPartition

✔️

✔️

✔️

ShowPartitions

✔️

✔️

✔️

ListAliases

✔️

✔️

✔️

DescribeCollection

✔️

✔️

✔️

DescribeAlias

✔️

✔️

✔️

GetStatistics

✔️

✔️

✔️

CreateIndex

✔️

✔️

DropIndex

✔️

✔️

CreatePartition

✔️

✔️

DropPartition

✔️

✔️

Load

✔️

✔️

릴리스

✔️

✔️

Insert

✔️

✔️

삭제

✔️

✔️

Upsert

✔️

✔️

Import

✔️

✔️

Flush

✔️

✔️

Compaction

✔️

✔️

LoadBalance

✔️

✔️

CreateAlias

✔️

DropAlias

✔️

데이터베이스 수준

  • 데이터베이스 읽기 전용(DB_RO): 데이터베이스 데이터를 읽을 수 있는 권한을 포함합니다.

  • 데이터베이스 읽기/쓰기(DB_RW): 데이터베이스 데이터를 읽고 쓸 수 있는 권한 포함

  • DatabaseAdmin(DB_Admin): 데이터베이스 데이터를 읽고 쓸 수 있는 권한과 데이터베이스를 관리하는 권한이 포함됩니다.

아래 표에는 데이터베이스 수준에서 세 가지 기본 제공 권한 그룹에 포함된 특정 권한이 나열되어 있습니다:

권한

데이터베이스 읽기 전용

데이터베이스 읽기/쓰기

DatabaseAdmin

ShowCollections

✔️

✔️

✔️

데이터베이스 설명

✔️

✔️

✔️

CreateCollection

✔️

✔️

✔️

DropCollection

✔️

AlterDatabase

✔️

✔️

클러스터 수준

  • 클러스터 읽기 전용(Cluster_RO): 인스턴스 데이터를 읽을 수 있는 권한을 포함합니다.

  • ClusterReadWrite(Cluster_RW): 인스턴스 데이터를 읽고 쓸 수 있는 권한을 포함합니다.

  • ClusterAdmin(Cluster_Admin): 인스턴스 데이터 읽기 및 쓰기 권한과 인스턴스 관리 권한이 포함됩니다.

아래 표에는 인스턴스 수준에서 세 가지 기본 제공 권한 그룹에 포함된 특정 권한이 나열되어 있습니다:

권한

클러스터 읽기 전용

ClusterReadWrite

ClusterAdmin

ListDatabases

✔️

✔️

✔️

RenameCollection

✔️

CreateOwnership

✔️

UpdateUser

✔️

DropOwnership

✔️

SelectOwnership

✔️

✔️

✔️

ManageOwnership

✔️

SelectUser

✔️

✔️

✔️

BackupRBAC

✔️

RestoreRBAC

✔️

CreateResourceGroup

✔️

DropResourceGroup

✔️

업데이트 리소스 그룹

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

리소스 그룹 나열

✔️

✔️

✔️

TransferNode

✔️

✔️

TransferReplica

✔️

✔️

CreateDatabase

✔️

DropDatabase

✔️

FlushAll

✔️

✔️

CreatePrivilegeGroup

✔️

DropPrivilegeGroup

✔️

ListPrivilegeGroups

✔️

OperatePrivilegeGroup

✔️

절차

권한 그룹을 만든 다음 권한 그룹에 권한을 추가할 수 있습니다.

권한 그룹 만들기

다음 예는 privilege_group_1 라는 권한 그룹을 만드는 방법을 보여줍니다.

from pymilvus import MilvusClient
client.create_privilege_group(group_name='privilege_group_1'
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.CreatePrivilegeGroup(ctx, milvusclient.NewCreatePrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.CreatePrivilegeGroupReq;

client.createPrivilegeGroup(CreatePrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.createPrivilegeGroup({
  group_name: 'privilege_group_1',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

권한 그룹에 권한 추가하기

다음 예는 방금 만든 권한 그룹 privilege_group_1PrivilegeBackupRBACPrivilegeRestoreRBAC 권한을 추가하는 방법을 보여줍니다.

from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])
import "github.com/milvus-io/milvus/client/v2/milvusclient"

privileges := []string{"Query", "Search"}
err = client.AddPrivilegesToGroup(ctx, milvusclient.NewAddPrivilegesToGroupOption("privilege_group_1", privileges...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.AddPrivilegesToGroupReq;

client.addPrivilegesToGroup(AddPrivilegesToGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Arrays.asList("Query", "Search"))
        .build());
await client.addPrivilegesToGroup({
  group_name: privilege_group_1,
  privileges: ['Query', 'Search'],
});

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/add_privileges_to_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Query", "Search"]
}'

권한 그룹에서 권한 제거하기

다음 예제는 권한 그룹 privilege_group_1 에서 PrivilegeRestoreRBAC 권한을 제거하는 방법을 보여줍니다.

from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.RemovePrivilegesFromGroup(ctx, milvusclient.NewRemovePrivilegesFromGroupOption("privilege_group_1", []string{"Search"}...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.RemovePrivilegesFromGroupReq;

client.removePrivilegesFromGroup(RemovePrivilegesFromGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Collections.singletonList("Search"))
        .build());
await client.removePrivilegesFromGroup({
  group_name: "privilege_group_1",
  privileges: ["Search"],
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/remove_privileges_from_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Search"]
}'

권한 그룹 나열하기

다음은 기존의 모든 권한 그룹을 나열하는 방법을 설명합니다.

from pymilvus import MilvusClient
client.list_privilege_groups()
import "github.com/milvus-io/milvus/client/v2/milvusclient"

groups, err := client.ListPrivilegeGroups(ctx, milvusclient.NewListPrivilegeGroupsOption())
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.PrivilegeGroup;
import io.milvus.v2.service.rbac.request.ListPrivilegeGroupsReq;
import io.milvus.v2.service.rbac.response.ListPrivilegeGroupsResp;

ListPrivilegeGroupsResp resp = client.listPrivilegeGroups(ListPrivilegeGroupsReq.builder()
        .build());
List<PrivilegeGroup> groups = resp.getPrivilegeGroups();
await client.listPrivilegeGroups();
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'

아래는 출력 예시입니다.

PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>

권한 그룹 삭제하기

다음은 권한 그룹을 삭제하는 방법을 보여주는 예제입니다. privilege_group_1.

from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.DropPrivilegeGroup(ctx, milvusclient.NewDropPrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.DropPrivilegeGroupReq;

client.dropPrivilegeGroup(DropPrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.dropPrivilegeGroup({group_name: 'privilege_group_1'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

Try Managed Milvus for Free

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

Get Started
피드백

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