사용자 인증 (Authenticate User Access)
이 가이드에서는 Milvus에서 사용자 인증을 관리하는 방법을 설명해요. 인증 활성화, 사용자로 연결, 사용자 자격 증명 수정까지 다뤄요.
- TLS와 사용자 인증은 서로 다른 두 가지 보안 방식이에요. Milvus 시스템에서 사용자 인증과 TLS를 모두 활성화했다면 사용자 이름, 비밀번호, 인증서 파일 경로를 모두 제공해야 해요. TLS 활성화 방법은 Encryption in Transit을 참고하세요.
- 이 페이지의 코드 예시는 새 MilvusClient(Python)를 사용해 Milvus와 상호작용해요. 다른 언어의 새 MilvusClient SDK는 향후 업데이트에서 공개될 예정이에요.
출처: Milvus 문서
본문
사용자 인증 활성화 (Enable user authentication)
Docker Compose 배포에서는 Milvus 설정 파일 milvus.yaml에서 common.security.authorizationEnabled를 true로 설정해 사용자 인증을 활성화해요. 설정에 관한 자세한 내용은 Configure Milvus with Docker Compose를 참고하세요.
...
common:
...
security:
authorizationEnabled: true
...
Helm 배포에서는 Milvus 설정 파일 values.yaml에서 authorizationEnabled를 true로 설정해 사용자 인증을 활성화해요. 설정에 관한 자세한 내용은 Configure Milvus with Helm Charts를 참고하세요.
...
extraConfigFiles:
user.yaml: |+
common:
security:
authorizationEnabled: true
...
Milvus Operator 배포에서는 Milvus CRD에서 spec.config.common.security.authorizationEnabled를 true로 설정해 인증을 활성화해요. Milvus CRD에 관한 자세한 내용은 Configure Milvus with Milvus Operator를 참고하세요.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
# Omit other fields ...
config:
common:
security:
authorizationEnabled: true
인증과 함께 Milvus에 연결하기 (Connect to Milvus with authentication)
인증을 활성화한 뒤에는 사용자 이름과 비밀번호로 Milvus에 연결해야 해요. 기본적으로 Milvus가 초기화될 때 root 사용자가 비밀번호 Milvus로 생성돼요. 다음은 기본 root 사용자로 인증이 활성화된 Milvus에 연결하는 예시예요.
# use default `root` user to connect to Milvus
from pymilvus import MilvusClient
client = MilvusClient(
uri='http://localhost:19530', # replace with your own Milvus server address
token="root:Milvus"
)
인증이 활성화된 Milvus에 연결할 때 유효한 토큰을 제공하지 않으면 gRPC 오류가 발생해요.
새 사용자 만들기 (Create a new user)
기본 root 사용자로 연결한 다음에는 다음과 같이 새 사용자를 만들고 인증할 수 있어요.
# create a user
client.create_user(
user_name="user_1",
password="P@ssw0rd",
)
# verify the user has been created
client.describe_user("user_1")
# output
# {'user_name': 'user_1', 'roles': ()}
사용자 생성에 관한 자세한 내용은 create_user()를 참고하세요.
새 사용자로 Milvus에 연결하기 (Connect to Milvus with a new user)
새로 만든 사용자의 자격 증명으로 연결해요.
# connect to milvus with the newly created user
client = MilvusClient(
uri="http://localhost:19530",
token="user_1:P@ssw0rd"
)
사용자 비밀번호 변경 (Update user password)
다음 코드로 기존 사용자의 비밀번호를 변경해요.
# update password
client.update_password(
user_name="user_1",
old_password="P@ssw0rd",
new_password="P@ssw0rd123"
)
사용자 비밀번호 변경에 관한 자세한 내용은 update_password()를 참고하세요.
만약 예전 비밀번호를 잊었다면, Milvus는 특정 사용자를 슈퍼 사용자(super user)로 지정할 수 있는 설정 항목을 제공해요. 이렇게 하면 비밀번호를 재설정할 때 예전 비밀번호가 필요 없어져요.
기본적으로 Milvus 설정 파일의 common.security.superUsers 필드는 비어 있어서 모든 사용자가 비밀번호를 재설정할 때 예전 비밀번호를 제공해야 해요. 하지만 특정 사용자를 슈퍼 사용자로 지정하면 그 사용자는 예전 비밀번호를 제공하지 않아도 돼요. 아래 예시에서는 root와 foo가 슈퍼 사용자로 지정돼요.
Milvus 인스턴스 실행을 관장하는 Milvus 설정 파일에 아래 설정 항목을 추가해야 해요.
common:
security:
superUsers: root, foo
사용자 삭제 (Drop a user)
사용자를 삭제하려면 drop_user() 메서드를 사용해요.
client.drop_user(user_name="user_1")
사용자를 삭제할 때는 삭제 대상인 사용자 본인이면 안 돼요. 아니면 오류가 발생해요.
모든 사용자 나열 (List all users)
모든 사용자를 나열해요.
# list all users
client.list_users()
제한 사항 (Limitations)
- 사용자 이름은 비어 있으면 안 되고 32자를 넘으면 안 돼요. 문자로 시작해야 하며 밑줄, 문자, 숫자만 포함할 수 있어요.
- 비밀번호는 최소 6자 이상이어야 하고 256자를 넘으면 안 돼요.
더 알아보기 (Learn more)
- 다음 내용도 함께 배울 수 있어요. Milvus 클러스터 확장
- 클라우드에 클러스터를 배포할 준비가 되었다면 다음을 살펴보세요. Amazon EKS에 Terraform으로 Milvus 배포
- GCP에 Kubernetes로 Milvus 클러스터 배포
- Microsoft Azure에 Kubernetes로 Milvus 배포