GitHub の変数とシークレットは、リポジトリの Write 権限があれば読み取り/書き込みができる
こんにちは、CX 事業本部 Delivery 部の若槻です。
GitHub Actions では、ワークフロー実行から参照できるカスタムの変数を Variables(変数)および Secrets(シークレット)で定義することができます。
上記を Configuration variables(構成変数)とも呼び、以下のようなものがあります。
- Repository Variables
- Repository Secrets
- Organization Variables
- Organization Secrets
- Environment Variables
- Environment Secrets
そしてこれらの構成変数の管理を GitHub.com から行う画面(https://github.com/<Org>/<Repo>/settings/secrets/actions
)にアクセスするためには、ユーザーは Admin 権限を持っている必要があります。
しかし今回、組織やリポジトリの Write 権限のみのユーザーでも構成変数の読み取り/書き込みが可能となる方法を確認してみたのでご紹介します。
はじめに結論
GitHub Actions for VS Code または GitHub CLI を使うことにより、リポジトリの Write 権限があるユーザーであれば構成変数の読み取り/書き込みが可能となります。
試してみる
GitHub におけるユーザーのリポジトリに対する権限ロールには次の 5 つがあります。
ロール | 説明 |
---|---|
Read | リポジトリの読み取り |
Triage | リポジトリの読み取り、Issue と PR の管理 |
Write | リポジトリの読み取り、書き込み |
Maintain | リポジトリの読み取り、書き込み、いくつかの設定の管理 |
Admin | リポジトリの読み取り、書き込み、すべての設定の管理 |
詳細な権限は次のドキュメントに記載があります。
ここでは Write 権限と Read 権限のユーザーで試してみます。
環境
# VS Code $ code --version 1.85.1 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 arm64 # GitHub Actions for VS Code $ code --list-extensions --show-versions | grep github.vscode-github-actions@ github.vscode-github-actions@0.26.2 # GitHub CLI $ gh --version gh version 2.40.1 (2023-12-13) https://github.com/cli/cli/releases/tag/v2.40.1
VS Code および GitHub CLI で、検証をしたいユーザーでログインしておきます。
Write 権限のユーザーなら読み取り/書き込みができる
まず、リポジトリに対する Write 権限を持つユーザーで試してみます。
VS Code 拡張の場合
VS Code でサイドバーから拡張機能の Settings メニューを開くと、各種構成変数の名前や値が参照できるようになっています。
[+]ボタンから新しい構成変数を、名前と値を指定して追加することができます。
変数名の指定。
値の指定。
新しい変数が追加されました。
既存の構成変数の更新や削除を行うこともできます。
VS Code 拡張で構成変数の読み取り/書き込みをすることが確認できました。
ちなみに Environment 自体の作成や削除はできません。
GitHub CLI の場合
構成変数を取得することができます。
$ gh variable list NAME VALUE UPDATED FFF rrr about 7 hours ago HOGE_GHA_VAR hoge-var about 21 hours ago $ gh variable list --env development NAME VALUE UPDATED HOGE_VAR dev-hoge-var about 22 hours ago HOGE_VAR_2 dev-hoge-var-2 about 8 hours ago $ gh secret list NAME UPDATED HOGE_GHA_SECRET about 22 hours ago
構成変数を更新することもできます。
$ gh variable set FFF --body FUGA ✓ Created variable FFF for <Org>/wakatsuki-test $ gh variable list NAME VALUE UPDATED FFF FUGA less than a minute ago HOGE_GHA_VAR hoge-var about 22 hours ago
GitHub CLI で構成変数の読み取り/書き込みをすることが確認できました。
Read 権限のユーザーなら、Environment 名の読み取りのみできる
リポジトリに対する Read 権限を持つユーザーで試してみます。
VS Code 拡張の場合
すると Environment の名前のみ取得されました。構成変数は取得さえできませんでした。
VS Code 拡張では Environment 名の読み取りのみできるようです。
GitHub CLI の場合
構成変数の取得はできませんでした。
$ gh variable list failed to get variables: HTTP 404: Not Found (https://api.github.com/repos/<Org>/wakatsuki-test/actions/variables?per_page=100) $ gh variable list --env development failed to get variables: HTTP 404: Not Found (https://api.github.com/repos/<Org>/wakatsuki-test/actions/variables?per_page=100) $ gh secret list failed to get variables: HTTP 404: Not Found (https://api.github.com/repos/<Org>/wakatsuki-test/actions/variables?per_page=100)
おわりに
GitHub Actions for VS Code または GitHub CLI を使うことにより、リポジトリの Write 権限があるユーザーであれば構成変数の読み取り/書き込みが可能となることを確認しました。
プロジェクトによっては GitHub リポジトリの Write 権限のみしか開発者ユーザーに付与されない場合もあると思います。そのような場合に Admin 権限を持つユーザーに構成変数の管理を依頼することなく、開発者ユーザー自身で構成変数の読み取り/書き込みを行うことができるようになります。
参考
以上