milvus-logo
LFAI
홈페이지
  • 관리 가이드

RBAC 활성화

RBAC를 활성화하면 특정 Milvus 리소스(예: 컬렉션 또는 파티션)에 대한 액세스 또는 사용자 역할 및 권한에 따른 권한을 제어할 수 있습니다. 현재 이 기능은 Python과 Java에서만 사용할 수 있습니다.

이 주제에서는 RBAC를 활성화하고 사용자 및 역할을 관리하는 방법에 대해 설명합니다.

이 페이지의 코드 스니펫은 새로운 MilvusClient (Python)를 사용하여 Milvus와 상호 작용합니다. 다른 언어에 대한 새로운 MilvusClient SDK는 향후 업데이트를 통해 출시될 예정입니다.

1. Milvus 클라이언트를 시작하여 연결 설정하기

사용자 인증을 활성화한 후 사용자 이름과 비밀번호로 구성된 token 을 사용하여 Milvus 인스턴스에 연결합니다. 기본적으로 Milvus는 root 사용자와 비밀번호 Milvus 를 사용합니다.

from pymilvus import MilvusClient

client = MilvusClient(
    uri='http://localhost:19530', # replace with your own Milvus server address
    token='root:Milvus' # replace with your own Milvus server token
)

2. 사용자 만들기

user_1 라는 이름의 사용자와 P@ssw0rd 이라는 비밀번호를 생성합니다:

client.create_user(
    user_name='user_1',
    password='P@ssw0rd'
)

사용자를 생성한 후 다음을 수행할 수 있습니다:

  • 사용자 비밀번호를 업데이트합니다. 기존 비밀번호와 새 비밀번호를 모두 입력해야 합니다.
client.update_password(
    user_name='user_1',
    old_password='P@ssw0rd',
    new_password='P@ssw0rd123'
)
  • 모든 사용자를 나열합니다.
client.list_users()

# output:
# ['root', 'user_1']
  • 특정 사용자의 역할을 확인합니다.
client.describe_user(user_name='user_1')

# output:
# {'user_name': 'user_1', 'roles': ()}

3. 역할 만들기

다음 예에서는 roleA 라는 이름의 역할을 만듭니다.

client.create_role(
    role_name="roleA",
)

역할을 만든 후에는 다음과 같이 할 수 있습니다:

  • 모든 역할을 나열합니다.
client.list_roles()

# output:
# ['admin', 'public', 'roleA']

4. 역할에 권한 부여하기

다음 예는 roleA 라는 역할에 모든 컬렉션을 검색할 수 있는 권한을 부여하는 방법을 보여줍니다.

object_type 은 리소스 유형으로도 이해할 수 있는 객체 유형을 지정합니다. 현재 유효한 값으로는 컬렉션/사용자/글로벌 등이 있으며, 여기서 글로벌은 특정 리소스 유형이 없음을 의미합니다. object_name 은 리소스 이름입니다. 객체 유형이Collection인 경우 객체 이름은 특정 컬렉션 이름을 참조하거나 *를 사용하여 모든 컬렉션을 지정할 수 있습니다.개체유형이Global인 경우에는 개체 이름을 *로만 지정할 수 있습니다. 부여할 수 있는 다른 유형의 권한은 사용자 및 역할을 참조하세요.

역할 권한을 관리하기 전에 사용자 인증을 사용 설정했는지 확인하세요. 그렇지 않으면 오류가 발생할 수 있습니다. 사용자 인증을 사용 설정하는 방법에 대한 자세한 내용은 사용자 액세스 인증하기를 참조하세요.

# grant privilege to a role

client.grant_privilege(
    role_name='roleA',
    object_type='User',  # value here can be Global, Collection or User, object type also depends on the API defined in privilegeName
    object_name='user_1',  # value here can be * or a specific user name if object type is 'User'
    privilege='SelectUser'
)

역할에 권한을 부여한 후에는 다음과 같이 할 수 있습니다:

  • 역할에 부여된 권한을 봅니다.
client.describe_role(
    role_name='roleA'
)

# output:
# {'role': 'roleA',
#  'privileges': [{'object_type': 'User',
#    'object_name': 'user_1',
#    'db_name': 'default',
#    'role_name': 'roleA',
#    'privilege': 'SelectUser',
#    'grantor_name': 'root'}]}

5. 사용자에게 역할 부여하기

사용자에게 역할을 부여하여 이 사용자가 역할의 모든 권한을 상속받을 수 있도록 합니다.

# grant a role to a user

client.grant_role(
    user_name='user_1',
    role_name='roleA'
)

역할을 부여한 후 역할이 부여되었는지 확인합니다:

client.describe_user(
    user_name='user_1'
)

# output:
# {'user_name': 'user_1', 'roles': ('roleA')}

6. 권한 취소하기

다음 작업은 되돌릴 수 없으므로 수행할 때 주의하세요.

  • 역할에서 권한 제거하기. 역할에 부여되지 않은 권한을 취소하면 오류가 발생합니다.
client.revoke_privilege(
    role_name='roleA',
    object_type='User',  # value here can be Global, Collection or User, object type also depends on the API defined in privilegeName
    object_name='user_1',  # value here can be * or a specific user name if object type is 'User'
    privilege='SelectUser'
)
  • 역할에서 사용자를 제거합니다. 사용자에게 부여되지 않은 역할을 취소하면 오류가 발생합니다.
client.revoke_role(
    user_name='user_1',
    role_name='roleA'
)
  • 역할을 삭제합니다.
client.drop_role(role_name='roleA')
  • 사용자를 삭제합니다.
client.drop_user(user_name='user_1')

다음 단계

번역DeepL

Try Managed Milvus for Free

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

Get Started
피드백

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