[TIPS]GitHub AppsのPermissionを更新したらちゃんとAcceptしようね

[TIPS]GitHub AppsのPermissionを更新したらちゃんとAcceptしようね

Clock Icon2025.02.21

こんにちは!クラウド事業本部の吉田です。

GitHub Apps使っていますか?

現在、Terraform+CSV+GitHub ActionsによってGitHub Organizationのメンバー管理をする仕組みを構築しているのですが(後日記事執筆予定です)、
GitHub Actionsワークフロー上で必要なトークンの生成にGitHub Appsを利用しています。
そのGitHub AppsのPermissionの棚卸しをした際にトラブルが発生しましたので、TIPSとして残しておきます。

結論

タイトル通りですが、GitHub AppsのPermissionを更新しても、その更新を承認しないと更新内容が反映されません。
承認した後にGitHub Appsトークンを利用するようにしましょう。

背景

※ 今回のGitHub AppsはOrganization上で作成しております。適宜読み替えてください。

GitHub Actionsのワークフロー上でGitHub Appsトークンを利用する箇所は、Organizationのチームメンバーの管理の処理をするterraform plan/applyのステップです。
(GITHUB_TOKENシークレットではOrganizationのPermissionが設定できないため)
GITHUB_TOKEN のアクセス許可
それ以外にもトークンが必要なステップはあるのですが、GitHub Appsのトークンを利用する所はterraform plan/applyのステップのみにし、その他のステップはGITHUB_TOKENシークレットを利用する方針にしました。

そのため、GitHub Appsに許可していたリポジトリのPermissionを棚卸しすることにしました。
(「Organizationのsettings」→「Developers settings」→「GitHub Apps」→「作成したGitHub AppsのEdit」→「Permissions & events」で、
GitHub AppsのPermissionを編集できます。)
その際、OrganizationのMembersのRead and write権限だけにしてもワークフローが動くかどうか確認するために、リポジトリのPermissionを一旦全て外してみました。
結果、ワークフロー上でterraform planを実行した際に「401 Bad credentials」が発生し、足りない権限があることがわかりました。
スクリーンショット 2025-02-21 10.16.17.png
リポジトリのPermissionも必要であることがわかりましたので、リポジトリのPermissionを元の状態に戻した後にワークフローを再実行しました。

ここで問題が発生しました。
GitHub AppsのPermissionの設定を元に戻したはずなのに、「401 Bad credentials」が発生したのです。
元の設定より許可するPermissionを増やしても、結果は変わりませんでした。

解決方法

Permissionをいくら編集しても問題は解決しません。
どうしようかと途方に暮れていたところ、「そういえばGitHub Appsを作成した後インストールしたよな」とふと思い出しました。

GitHub Appsの設定画面の「Install App」からOrganizationの歯車をクリックしてみました。
スクリーンショット 2025-02-21 10.25.51.png

すると、「{GitHub Apps名} is requesting an update to its permissions」という文言と共に「Review request」というボタンが表示されていることに気づきました。
(この画面は「Organizationのsettings」→「Third-party AccessのGitHub Apps」と同じです)
スクリーンショット 2025-02-21 10.27.18.png

「Review request」というボタンをクリックしますと、更新したPermissionのリクエストを確認する画面が表示されます。
内容を確認した上で「Accept new permissions」をクリックします。
スクリーンショット 2025-02-21 10.27.46.png

更新したいPermissionが反映されているように見えます。
スクリーンショット 2025-02-21 10.53.08.png

この後、GitHub Actionsをワークフローを実行しますと、無事ワークフローを完了することができました。
そうです。承認をしない限り、GitHub AppsのPermissionの更新は反映されなかったのです。

後ほどメールを確認したら、GitHub AppsのPermission更新のリクエストに関するメールが届いていました。。。
スクリーンショット 2025-02-21 9.37.20.png

最後に

GitHub Appsを使いこなしている方にとっては当たり前のことだと思うのですが、GitHub Apps初心者だったために痛い目を見ました。
GitHub AppsのPermissionを更新した後に「401 Bad credentials」が発生しましたら、その更新がちゃんと承認されているか確認しましょう。

GitHub Appsトークンに関しては、下記の記事が大変参考になりました。
後日執筆予定のGitHub Organizationのメンバー管理をする仕組みについての記事でも、改めて紹介させていただきます。
GitHub Appsトークン解体新書:GitHub ActionsからPATを駆逐する技術

以上、クラウド事業本部の吉田でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.