GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)する

2020.09.23

こんにちは、CX事業本部の若槻です。

GitHubをCI/CDツールなどの3rd-Party Appと連携させる場合は、GitHubから対象のAppへアクセス許可を付与する必要があります。

今回は、GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)する方法を確認してみました。

やってみた

ここでは特定の3rd-Party Appの例としてCircleCIを使用して確認していきます。

アクセス許可を一括で無効化(Revoke)する

複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括でRevokeしてみます。

注意点として、本方法の場合はOrganizationだけでなく操作を行ったGitHubユーザーアカウントの3rd-Party Appへのアクセス許可もRevokeされます。ユーザーのRevokeをしたくない場合は後述の「アクセス許可を個別に無効化(Revoke)する」方法を全てのOrganizationに対して行ってください。

アクセス許可をRevokeしたいGitHub OrganizationのOwner権限を持つGitHubユーザーアカウントで、[Personal settings] - [Applications] - [Authorized OAuth Apps]を開き(ここからも直接開けます)、アクセス許可をRevokeしたい3rd-Party Appを選択します。 image

[Organization access]を見ると現在CircleCIへアクセス許可が付与されているGitHub Organization(ユーザーが参加済み)の一覧が確認できます。であれば許可済み、であればRevoke済みとなります。現在はすべてのOrganizationが付与済みとなっています。これらのOrganizationへのアクセス許可を一括でRevokeする場合は[Revoke access]をクリックします。 image

確認ダイアログで[I understand, revoke access]をクリックします。 image

Authorized OAuth Appsの一覧からCircleCIが削除されました。 image

これで複数のGitHub Organizationから特定の3rd-Party Appへ付与したアクセス許可を一括でRevokeできました。

Revokeしたアクセス許可を一括で再付与(Re-Grant)する

先ほど一括でRevokeした複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を、一括でRe-Grantすることもできます。

そのためにはCircleCIに再度GitHubユーザーアカウントでサインアップします。

CircleCIのログインページを開き、[Log in with GitHub]をクリックします。 image

アクセス許可をRe-GrantしたいGitHub OrganizationのOwner権限を持つGitHubユーザーアカウントでサインインしたら、次のような画面が表示されます。[Organization access]を見るとCircleCIへアクセス許可がRe-Grant可能なGitHub Organization(ユーザーが参加済み)の一覧が確認できます。過去にアクセス許可がRevokeされたOrganizationであれば既定でが付いてRe-Grantされるようになります。[Authorize circleci]をクリックします。 image

GitHubのどのユーザーまたはOrganizationアカウントをCircleCIで開くか聞かれるので選択します。 image

CircleCIにサインアップできました。アクセス許可をRe-GrantしたOrganizationのPipeline一覧を見ると、Revoke前に実施されたCIの履歴もちゃんと残っています。 image

これで先ほど一括でRevokeした複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を、一括でRe-Grantできました。

アクセス許可を個別に無効化(Revoke)する

次に、特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRevokeしてみます。

アクセス許可を個別にRevokeしたいOrganizationのアカウントページを開き、[Settings] - [Third-party access]より過去にアクセス許可をGrantしたことのある3rd-Party App一覧が確認できます。Approvedとなっていれば現在Grant済みです。今回はCircleCIへのアクセス許可をRevokeしてみます。鉛筆マークをクリックします。 image

[Access]の[Deny Access]をクリックします。 image

CircleCIへのアクセス許可がRevokeされ、現在のアクセス許可がNo private accessとなりました。 image

確認のため、GitHubユーザーアカウントで[Personal settings] - [Applications] - [Authorized OAuth Apps] - [CircleCI]を開くと、個別にRevoke操作をしたOrganizationのアクセス許可のみとなりRevokeされています。 image

個別にRevoke操作をしたOrganizationのCircleCIのPipeline一覧をURL(https://app.circleci.com/pipelines/github/<Organization Account>)から開いてみると、No Pipelines hereとなりアクセスできなくなっています。 image

これで特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRevokeできました。

Revokeしたアクセス許可を個別に再付与(Re-Grant)する

最後に、先ほど個別にRevokeした特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRe-Grantしてみます。

アクセス許可を個別にRe-GrantしたいOrganizationのアカウントページを開き、[Settings] - [Third-party access]よりRe-Grantしたい3rd-Party Appの鉛筆マークをクリックします。今回はCircleCIへのアクセス許可をRe-Grantしてみます。[Access]で現在のアクセス許可がNo private accessとなっているのを確認し、[Grant Access]をクリックします。 image

CircleCIへのアクセス許可がRe-Grantされ、現在のアクセス許可がApprovedとなりました。 image

確認のため、GitHubユーザーアカウントで[Personal settings] - [Applications] - [Authorized OAuth Apps] - [CircleCI]を開くと、個別にRe-Grant操作をしたOrganizationのアクセス許可がとなりRe-Grantされています。 image

個別にRevoke操作をしたOrganizationのCircleCIのPipeline一覧をURL(https://app.circleci.com/pipelines/github/<Organization Account>)から開いてみると、Revoke前に実施されたCIの履歴もちゃんと残っています。 image

これで個別にRevokeした特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRe-Grantできました。

おわりに

GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)してみました。

過去に次のような記事も投稿していましたが、今回その完全版のような記事を書くことができました。

以上