Drone 提供了一个官方扩展,用于基于 GitHub 组织和团队成员资格来限制系统访问。你可以使用此扩展来配置访问策略,例如:
- 如果用户是组织成员,则授予访问权限
- 如果用户是组织管理员,则授予管理员访问权限
- 如果用户是指定团队的成员,则授予管理员访问权限(可选)
- 否则拒绝访问
配置
-
- DRONE_GITHUB_ENDPOINT
- GitHub API 基础 URL。仅在与 GitHub Enterprise 集成时需要。URL 格式应为
http(s)://[hostname]/api/v3
-
- DRONE_GITHUB_TOKEN
- GitHub API 个人访问令牌。此令牌必须具有足够的权限来访问组织和团队端点。
-
- DRONE_GITHUB_ORG
- 以逗号分隔的组织列表。如果定义了此参数,用户必须是列表中至少一个组织的成员。
-
- DRONE_GITHUB_TEAM
- 以逗号分隔的团队列表。如果定义了此参数,属于此团队的成员将被授予管理员访问权限。
安装
-
创建一个共享密钥。
$ openssl rand -hex 16 bea26a2221fd8090ea38720fc445eca6 -
下载并运行扩展。
$ docker run -d \ --publish=3000:3000 \ --env=DRONE_DEBUG=true \ --env=DRONE_SECRET=bea26a2221fd8090ea38720fc445eca6 \ --env=DRONE_GITHUB_TOKEN=3da541559918a808c2402bba5012f6c6 \ --env=DRONE_GITHUB_ORG=acme \ --env=DRONE_GITHUB_TEAM=admins \ --restart=always \ --name=admitter drone/drone-admit-members -
更新 Drone Server 配置以包含扩展地址和共享密钥。
DRONE_ADMISSION_PLUGIN_ENDPOINT=http://1.2.3.4:3000 DRONE_ADMISSION_PLUGIN_SECRET=bea26a2221fd8090ea38720fc445eca6
验证安装结果
你可以使用命令行工具验证扩展是否已配置并正在处理请求。
-
为命令行工具提供扩展端点和密钥。
export DRONE_ADMISSION_ENDPOINT=http://localhost:3000 export DRONE_ADMISSION_SECRET=bea26a2221fd8090ea38720fc445eca6 -
使用命令行工具检查用户是否被接纳:
drone plugins admit octocat
自定义
此扩展被认为是访问准入控制器的参考实现,功能范围有限。鼓励你根据需要 fork 并自定义此扩展。你可以在 drone/drone-admit-members 找到源代码。