GitHub Enterpriseは無料トライアルが14日間できるようなのでSSO有効時の挙動を確認してみました。
GitHub Enterprise Cloud 評価契約 - GitHub ヘルプ
環境
- GitHub Enterprise Cloud
- OrganizationにはGitHub個人アカウントで参加
- OneLogin (Developer Account)
GitHub Enterprise Cloud 無料トライアルの開始
アカウント作成とOrganization作成
無料トライアル -> Enterprise Cloud -> アカウント作成 -> Organization作成
ここで作るアカウントは一般のGitHubアカウントと同等のものだと思われます(無料トライアルだからかもしれないがGitHub Freeの状態でした)
続けてOrganizationの設定をしますが、ここで作ったアカウントがOrganizationのOwnerになります(後で変更可能)
アカウント作成時に注意すべきはUsernameをOrganizationで使いたい名前にしないこと!
同じ名前空間(https://github.com/organizationname
)を利用するため、次にOrganization作るときにすでに使われている旨のエラーがでます。
どちらも名前を変更する機能はありますので、間違えてしまった場合は変更すれば名前が開放されます。
個人をOrganizationに変換することもできます。
Enterpriseアカウント
Enterprise アカウントについて - GitHub ヘルプ
上記で作ったアカウントがEnterpriseアカウントになるかと思ってたんだがそうではありませんでした。
GitHub Enterprise Cloudの一機能としてEnterpriseアカウントがあるようです。
Enterpriseアカウントを使うにはGitHub側に依頼して作成してもらう必要があります。
- 複数Organization内でのみPublicなInternal Repositoryを利用可能となる
- 複数Organizationの請求一括支払いが可能となる
- 一括だからといって請求書払いだけでなくクレカ払いでもOK
OneLogin Developer Account の作成
Free Developer Account | OneLogin
普通にアカウントを作成。
GitHubのSSO設定
Configuring SAML for GitHub.com
OneLogin側、GitHub側どちらも上記ドキュメントに手順書いてあるので割愛。
OneLoginアカウントとGitHubアカウントの紐付け
先程作ったOneLoginのAppからGitHubにログインします。
GitHubのサインアップ画面に遷移しますが今回は個人アカウントを紐付けたいので、Already have an account? Sign in
をクリック。
サインインページにて個人アカウントでログインするとSSO設定が完了します。
これでOrganizationから見るとユーザーが増えているのを確認できます。
SSOの挙動を確認
GitHubに直接ログインしてみる
- OneLogin未ログイン
- GitHub未ログイン
個人アカウントなので普通にログインできる。
GitHubに個人アカウントでログイン状態でOrganizationのプライベートリポジトリを参照
- OneLogin未ログイン
- GitHub個人アカウントログイン済み
GitHubのSSO画面に遷移する。
Continueを押下するとOneLoginのログイン画面に遷移する。
OneLoginにログインするとSSO認証状態になるためOrganizationのプライベートリポジトリが参照できる。
GitHubのSAMLセッション期限切れ
- OneLoginログイン済み
- GitHubログイン済み
- GitHub SAML SSOセッション期限切れ
GitHubにはログイン状態なので個人アカウントのリポジトリは問題なく利用できる。
SAMLセッションは切れているのでOrganizationのプライベートリポジトリにアクセスするとGitHubのSSO画面に遷移する。
ContinueでOneLoginにリダイレクトされるがOneLoginログイン済みなので、そのままGitHubに戻されOrganizationプライベートリポジトリが参照できる。
GitHubに未ログイン状態でOneLoginからGitHub Appを選択
- OneLoginログイン済み
- GitHub未ログイン
個人アカウントのSSO紐付けログイン画面が表示される。
OneLoginログイン済みなのでAppを選択しただけで即GitHubにログイン状態になるかと思ったらならなかった。
OneLogin側に
個人アカウント利用ではなくGitHub Enterprise側にprovisioningでアカウントを作っているならSSOで普通にログインできるのかな。
OneLoginだけログアウトする
- OneLogin未ログイン
- GitHubログイン済み
- GitHub SAML SSO認証済み
SSOログアウトに対応していないため、SAMLセッションが生きている間はOrganizationのリポジトリにもアクセスできる。
SSHキーの挙動を確認
SSOを有効化しているとSSHキーもSSO認証済みかどうかの設定が増えます。
これを有効化していないSSHキーはOrganizationのリポジトリにアクセスできません。
SSO認証前のSSHキーでOrganizationのプライベートリポジトリを参照
- SSHキー SSO未認証
SSHキーのSAML SSOを有効化していないためアクセスできません。
$ git clone git@github.com:mycompany-org/mycompany-readme.git
Cloning into 'mycompany-readme'...
ERROR: The `mycompany-org' organization has enabled or enforced SAML SSO. To access
this repository, you must use the HTTPS remote with a personal access token
or SSH with an SSH key and passphrase
that has been whitelisted for this organization. Visit
https://help.github.com/articles/authenticating-to-a-github-organization-with-saml-single-sign-on/ for more information.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
OneLogin未ログイン状態でSSHキーのSAML SSOを有効化する
- OneLogin未ログイン
- GitHubログイン済み
- SSHキー SSO未認証
SSH Keys -> Enable SSO -> Authorize
GitHubのSSO画面に遷移する。
今回の対象はSSHキーなのでアクセス元の名前がSSHキー名になっている。