複数組織へのSSO認可を自動化
GitHub Enterprise CloudでSSOが必要な組織へAPIやGitでアクセスする際は、利用するクラシックPATやSSHキーを組織ごとに認可する必要がある。今回の機能では、エンタープライズにインストールされたGitHub Appが、既存の認証情報に対する認可を複数組織へ付与できる。
対象となるのは、既存のクラシックPATと、検証済みでユーザーが所有するSSH認証キーだ。APIエンドポイントはPOST /enterprises/{enterprise}/credential-authorizationsで、1回のリクエストにつき最大50組織を指定できる。すでに有効な認可がある組織は安全にスキップされる。
秘密値をAppへ渡さずに識別
APIリクエストでは、PATの秘密値ではなく非秘密のトークンIDを指定する。SSHキーはSHA-256フィンガープリントで指定する仕組みだ。GitHubによると、認証情報の秘密値がGitHub Appへ渡されることはない。
このため、認可処理を自動化する際も、PATやSSHキーそのものの秘密値をAppに扱わせずに対象を指定できる。認証情報を複数組織へ展開する運用で、管理者が考慮すべき情報の範囲を抑えられる点が特徴となる。
利用に必要な条件
この機能は既定では無効になっている。利用するには、エンタープライズのAuthentication security設定で「Allow GitHub Apps to authorize credentials」を有効にする必要がある。
また、エンタープライズがエンタープライズレベルSSOを使用していること、認証情報の所有者が対象となるすべての組織のメンバーであることも条件となる。GitHub Appはエンタープライズ、またはエンタープライズ内の組織が所有し、Enterprise credentialsの書き込み権限を持たなければならない。操作主体はEnterprise owner、またはManage enterprise credentials権限を持つユーザーに限られる。
認可APIの呼び出しにはエンタープライズインストール用アクセストークンが必要だ。組織インストール用トークン、ユーザーアクセストークン、PATはこのAPIの認証には使えない。エンタープライズインストール用アクセストークンの有効期限は1時間とされている。
設定を無効にしても既存認可は残る
APIが成功するとHTTP 201を返し、認証情報のIDや種類、認可された組織の一覧を返す。指定した組織数が上限を超えた場合などは422、同時変更時は409となる。
運用上は、認可の削除条件にも注意が必要だ。GitHub Appによる認可機能を無効にしても、既存の委任による認可は直ちには削除されない。明示的に取り消すか、認証情報が失効・削除されるか、所有者が組織のメンバーでなくなるまで有効なままとされる。GitHub Appのアンインストールや権限喪失後も認可が残る場合があるため、自動化の導入時には付与と取り消しの両方を管理する必要がある。
今回の追加は、GitHub Enterprise Cloudで複数組織をまたいで認証情報を運用する企業にとって、手動のSSO認可作業を減らす選択肢となる。一方で、対象組織の範囲、Appの権限、認可の取り消し方針をあらかじめ整理しておくことが重要だ。