본문 바로가기
WIKI 기술 지식 베이스

사용자와 역할 만들기 (Create Users & Roles)

원문 보기 위키 갱신

Milvus는 RBAC(Role-Based Access Control, 역할 기반 접근 제어)를 통해 세분화된 접근 제어를 구현해요. 사용자와 역할을 먼저 만들고, 역할에 권한(privilege)이나 권한 그룹을 할당한 다음, 마지막으로 역할을 사용자에게 부여해 접근 제어를 관리할 수 있어요. 이 방식은 접근 관리의 효율성과 보안을 보장해 줘요. 이 페이지에서는 Milvus에서 사용자와 역할을 만드는 방법을 소개해요.

출처: Milvus 문서

본문

사용자 (User)

Milvus 인스턴스를 초기화한 뒤, 처음 Milvus에 연결할 때 인증을 위해 root 사용자가 자동으로 생성돼요. root 사용자의 사용자 이름은 root이고 비밀번호는 Milvus예요. root 사용자의 기본 역할은 admin이며 모든 리소스에 접근할 수 있어요. 데이터 보안을 위해 root 사용자의 자격 증명을 안전하게 보관해 무단 접근을 방지하세요.

일상 운영에서는 root 사용자 대신 사용자를 만들어 사용하는 것을 권장해요.

사용자 만들기 (Create a user)

다음 예시는 사용자 이름 user_1, 비밀번호 P@ssw0rd인 사용자를 만드는 방법을 보여 줘요. 사용자 이름과 비밀번호는 다음 규칙을 따라야 해요.

  • 사용자 이름: 문자로 시작해야 하고, 대문자·소문자·숫자·밑줄만 포함할 수 있어요.
  • 비밀번호: 8~64자여야 하고, 대문자·소문자·숫자·특수 문자 중 세 가지를 포함해야 해요.
from pymilvus import MilvusClient

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

client.create_user(user_name="user_1", password="P@ssw0rd")
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.rbac.request.CreateUserReq;

ConnectConfig connectConfig = ConnectConfig.builder()
        .uri("http://localhost:19530")
        .token("root:Milvus")
        .build();
        
MilvusClientV2 client = new MilvusClientV2(connectConfig);

CreateUserReq createUserReq = CreateUserReq.builder()
        .userName("user_1")
        .password("P@ssw0rd")
        .build();
        
client.createUser(createUserReq);
import (
    "context"
    "fmt"

    "github.com/milvus-io/milvus/client/v2/milvusclient"
)

ctx, cancel := context.WithCancel(context.Background())
defer cancel()

client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    APIKey:  "root:Milvus",
})
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
defer client.Close(ctx)

err = client.CreateUser(ctx, milvusclient.NewCreateUserOption("user_1", "P@ssw0rd"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

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

await client.createUser({
   username: 'user_1',
   password: 'P@ssw0rd',
 });
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "userName": "user_1",
    "password": "P@ssw0rd"
}'

비밀번호 업데이트 (Update password)

사용자를 만든 뒤 비밀번호를 잊어버렸다면 업데이트할 수 있어요.

새 비밀번호도 다음 규칙을 따라야 해요.

  • 8~64자여야 하고, 대문자·소문자·숫자·특수 문자 중 세 가지를 포함해야 해요.

다음 예시는 user_1 사용자의 비밀번호를 NewP@ssw0rd로 업데이트하는 방법을 보여 줘요.

from pymilvus import MilvusClient

client.update_password(
    user_name="user_1",
    old_password="P@ssw0rd",
    new_password="NewP@ssw0rd"
)
import io.milvus.v2.service.rbac.request.UpdatePasswordReq;

UpdatePasswordReq updatePasswordReq = UpdatePasswordReq.builder()
        .userName("user_1")
        .password("P@ssw0rd")
        .newPassword("NewP@ssw0rd")
        .build();
client.updatePassword(updatePasswordReq);
err = client.UpdatePassword(ctx, milvusclient.NewUpdatePasswordOption("user_1", "P@ssw0rd", "NewP@ssw0rd"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

await client.updateUser({
   username: 'user_1',
   newPassword: 'P@ssw0rd',
   oldPassword: 'NewP@ssw0rd',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/update_password" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "newPassword": "P@ssw0rd!",
    "userName": "user_1",
    "password": "P@ssw0rd"
}'

사용자 나열 (List users)

여러 사용자를 만든 뒤 모든 기존 사용자를 나열하고 확인할 수 있어요.

from pymilvus import MilvusClient

client.list_users()
List<String> resp = client.listUsers();
users, err := client.ListUsers(ctx, milvusclient.NewListUserOption())
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
await client.listUsers();
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{}'

아래는 예시 출력이에요. root는 Milvus에서 자동으로 생성된 기본 사용자이고, user_1은 방금 만든 새 사용자예요.

['root', 'user_1']

역할 (Role)

Milvus는 admin이라는 내장 역할을 제공해요. 이 역할은 모든 인스턴스 아래의 리소스에 접근할 수 있고 모든 연산에 대한 권한을 가진 관리자 역할이에요. 더 세분화된 접근 관리와 향상된 데이터 보안을 위해 필요에 따라 사용자 지정 역할을 만드는 것을 권장해요.

역할 만들기 (Create a role)

다음 예시는 role_a라는 역할을 만드는 방법을 보여 줘요.

역할 이름은 다음 규칙을 따라야 해요.

  • 문자로 시작해야 하고, 대문자·소문자·숫자·밑줄만 포함할 수 있어요.
from pymilvus import MilvusClient

client.create_role(role_name="role_a")
import io.milvus.v2.service.rbac.request.CreateRoleReq;

CreateRoleReq createRoleReq = CreateRoleReq.builder()
        .roleName("role_a")
        .build();
       
err = client.CreateRole(ctx, milvusclient.NewCreateRoleOption("role_a"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
await client.createRole({
   roleName: 'role_a',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "roleName": "role_a"
}'

역할 나열 (List roles)

여러 역할을 만든 뒤 모든 기존 역할을 나열하고 확인할 수 있어요.

from pymilvus import MilvusClient

client.list_roles()
List<String> roles = client.listRoles();
roles, err := client.ListRoles(ctx, milvusclient.NewListRoleOption())
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
await client.listRoles({
    includeUserInfo: true
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{}'

아래는 예시 출력이에요. admin은 Milvus의 기본 역할이고, role_a는 방금 만든 새 역할이에요.

['admin', 'role_a']

이 페이지에서는 사용자와 역할의 생성·나열 방법을 다뤘어요. 역할에 권한을 부여(grant)하거나 사용자에게 역할을 할당하는 방법은 Milvus의 RBAC 관련 문서에서 이어서 확인할 수 있어요.

더 알아보기 (Learn more)