GitHubチーム
Droneは、GitHubの組織とチームメンバーシップに基づいてシステムアクセスを制限するための公式の拡張機能を提供します。この拡張機能を使用して、次のようなアクセスポリシーを設定できます。
- ユーザーが組織のメンバーである場合は、アクセスを許可します
- ユーザーが組織管理者の場合、管理者アクセスを許可します
- ユーザーが指定されたチームのメンバーである場合は、管理者アクセスを許可します(オプション)
- それ以外の場合はアクセスを拒否します
構成
- DRONE_GITHUB_ENDPOINT
Github APIベースURL。これは、GitHub Enterpriseと統合する場合にのみ必要です。 URL形式はhttp(s)://[hostname]/api/v3である必要があります
- DRONE_GITHUB_TOKEN
GitHub APIパーソナルアクセストークン。このトークンには、組織とチームのエンドポイントにアクセスするための適切な権限が必要です。
- DRONE_GITHUB_ORG
組織のコンマ区切りのリスト。定義されている場合、ユーザーはリスト内の少なくとも1つの組織のメンバーである必要があります。
- 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サーバの構成を更新して、拡張アドレスと共有シークレットを含めます。
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
カスタマイズ
この拡張機能は、アドミッションコントローラのリファレンス実装と見なされ、範囲が制限されています。必要に応じて、この拡張機能をフォークしてカスタマイズすることをお勧めします。ソースコードはdrone / drone-admit-membersにあります。