用户与工作空间管理
用户与工作空间管理
相关源文件
本 Wiki 页面的生成参考了以下文件:
argilla-frontend/CHANGELOG.mdargilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vueargilla-frontend/components/features/annotation/settings/Validation.vueargilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vueargilla-frontend/package.jsonargilla-frontend/translation/de.jsargilla-frontend/translation/en.jsargilla-frontend/translation/es.jsargilla-frontend/v1/domain/entities/hub/DatasetCreation.test.tsargilla-frontend/v1/domain/entities/hub/QuestionCreation.tsargilla-frontend/v1/domain/entities/hub/Subset.tsargilla-server/CHANGELOG.mdargilla-server/src/argilla_server/_version.pyargilla-server/src/argilla_server/api/handlers/v1/users.pyargilla-server/src/argilla_server/api/policies/v1/user_policy.pyargilla-server/src/argilla_server/api/schemas/v1/users.pyargilla-server/src/argilla_server/api/schemas/v1/workspaces.pyargilla-server/src/argilla_server/contexts/accounts.pyargilla-server/tests/unit/api/handlers/v1/users/test_create_user.pyargilla-server/tests/unit/api/handlers/v1/users/test_update_user.pyargilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.pyargilla-v1/src/argilla_v1/_version.pyargilla/CHANGELOG.mdargilla/docs/how_to_guides/migrate_from_legacy_datasets.mdargilla/pdm.lockargilla/pyproject.tomlargilla/src/argilla/__init__.pyargilla/src/argilla/_api/_workspaces.pyargilla/src/argilla/_version.pyargilla/src/argilla/records/_mapping/_mapper.pyargilla/src/argilla/records/_mapping/_routes.pyargilla/src/argilla/users/_resource.pyargilla/src/argilla/v1/__init__.pyargilla/src/argilla/workspaces/_resource.pyargilla/tests/integration/test_manage_users.pyargilla/tests/integration/test_manage_workspaces.pyargilla/tests/unit/test_record_ingestion.pydocs/_source/_common/tabs/argilla_install_python.mddocs/_source/community/contributing.mddocs/_source/community/developer_docs.mddocs/_source/community/migration-rubrix.mddocs/_source/getting_started/installation/deployments/docker.mddocs/_source/getting_started/installation/deployments/docker_compose.mddocs/_source/getting_started/installation/deployments/python.mddocs/_source/reference/cli.mddocs/_source/reference/notebooks.rstdocs/migration-rubrix.mddocs/template.ipynb
本文档介绍如何在 Argilla 中管理用户和工作空间,涵盖用户创建、工作空间分配、认证和基于角色的访问控制。有关数据集访问控制的信息,请参阅创建和管理数据集。
概述
Argilla 通过工作空间实现了多租户架构。工作空间作为隔离环境,可以在其中创建和管理数据集。一个用户可以属于多个工作空间,其对数据集的访问权限由角色和工作空间成员关系共同决定。
来源: argilla-server/src/argilla_server/contexts/accounts.py argilla/src/argilla/users/_resource.py argilla/src/argilla/workspaces/_resource.py argilla/CHANGELOG.md:22-25
用户管理
用户角色与权限
Argilla 支持三种用户角色,每种角色拥有不同的权限:
| 角色 | 描述 | 权限 |
|---|---|---|
owner(所有者) | 对系统拥有完全控制权 | 创建/删除用户、工作空间和数据集;在工作空间中添加/移除用户 |
admin(管理员) | 拥有管理能力 | 创建数据集,管理其工作空间内的数据集 |
annotator(标注员) | 拥有基本的标注能力 | 对其有访问权限的数据集提交标注 |
来源: argilla-server/src/argilla_server/api/schemas/v1/users.py argilla/tests/integration/test_manage_users.py
创建用户
您可以使用 Python SDK 以编程方式创建用户:
import argilla as rg
client = rg.Argilla()
# 创建一个新用户
user = rg.User(
username="john_doe",
first_name="John",
last_name="Doe",
role="annotator",
password="secure_password"
)
client.users.add(user)
# 创建一个具有预定义 ID 的用户
import uuid
user_id = uuid.uuid4()
user = rg.User(
id=user_id,
username="jane_doe",
first_name="Jane",
last_name="Doe",
role="admin",
password="secure_password"
)
client.users.add(user)
来源: argilla/src/argilla/__init__.py:16-18 argilla/tests/integration/test_manage_users.py:24-34 argilla/CHANGELOG.md:22-25
更新用户
可以使用 SDK 更新用户属性:
import argilla as rg
client = rg.Argilla()
# 获取一个现有用户
user = client.users(username="john_doe")
# 更新用户属性
user.first_name = "Johnny"
user.last_name = "Doe Jr."
user.role = "admin"
user.update()
来源: argilla/tests/integration/test_manage_users.py:57-72 argilla/CHANGELOG.md:62
删除用户
可以使用 SDK 删除用户:
import argilla as rg
client = rg.Argilla()
# 获取并删除一个用户
user = client.users(username="john_doe")
user.delete()
来源: argilla/tests/integration/test_manage_users.py:41-45
工作空间管理
工作空间是数据集的容器,为不同项目或团队提供隔离。每个数据集只属于一个工作空间。
工作空间结构
来源: argilla-server/src/argilla_server/contexts/accounts.py argilla/src/argilla/workspaces/_resource.py
创建工作空间
可以以编程方式创建工作空间:
import argilla as rg
import uuid
client = rg.Argilla()
# 创建一个新的工作空间
workspace = rg.Workspace(name="research-team")
client.workspaces.add(workspace)
# 创建一个具有预定义 ID 的工作空间
workspace_id = uuid.uuid4()
workspace = rg.Workspace(id=workspace_id, name="product-team")
client.workspaces.add(workspace)
来源: argilla/src/argilla/__init__.py:17 argilla-server/src/argilla_server/contexts/accounts.py:66-78 argilla/CHANGELOG.md:22-25
管理工作空间中的用户
可以将用户添加到工作空间或从中移除:
import argilla as rg
client = rg.Argilla()
# 获取一个用户和工作空间
user = client.users(username="john_doe")
workspace = client.workspaces(name="research-team")
# 将用户添加到工作空间
user.add_to_workspace(workspace)
# 检查用户是否在工作空间中
assert user in workspace.users
# 将用户从工作空间中移除
user.remove_from_workspace(workspace)
来源: argilla/tests/integration/test_manage_users.py:47-55 argilla-server/src/argilla_server/contexts/accounts.py:32-48
认证与授权
Argilla 支持通过 JWT(JSON Web 令牌)和 API 密钥进行认证。系统使用 bcrypt 进行安全的密码哈希处理。
认证流程
来源: argilla-server/src/argilla_server/contexts/accounts.py:186-219
API 密钥认证
Argilla 中的每个用户都有一个可用于认证的 API 密钥。这对于通过 Python SDK 进行程序化访问特别有用。
import argilla as rg
# 使用 API 密钥进行认证
client = rg.Argilla(api_key="user_api_key")
# 从用户设置中获取您的 API 密钥
user = client.me()
api_key = user.api_key
来源: argilla-frontend/translation/en.js:93-96
用户管理界面
Argilla 提供了一个用户界面,用于管理您自己的用户设置和查看 API 密钥:
来源: argilla-frontend/translation/en.js:85-99 argilla-frontend/translation/de.js:82-96 argilla-frontend/translation/es.js:79-93
服务端实现
用户和工作空间管理功能在服务端通过一组 API 端点和数据库模型实现:
来源: argilla-server/src/argilla_server/contexts/accounts.py argilla-server/CHANGELOG.md:207-215
最佳实践与建议
- 角色分配:为每个用户分配所需的最小权限角色(最小权限原则)。
- 工作空间组织:根据团队或项目创建工作空间,以维护清晰的访问边界。
- API 密钥安全:将 API 密钥视为密码对待——不要将其硬编码在脚本中或提交到版本控制系统。
- 密码安全:使用强密码,并考虑实施密码轮换策略。
结论
正确的用户和工作空间管理对于 Argilla 的安全运行至关重要,尤其是在多用户环境中。通过理解角色、权限以及用户与工作空间之间的关系,您可以为标注项目创建一个安全且组织良好的环境。
来源:
docs/community/developer_docs.md:318-321docs/_source/community/contributing.md