前回SSOまでやりましたがユーザー管理がこのままだと手動で行わないといけない部分があるため、SCIMを使ったプロビジョニングも有効にしてみました。
前回:GitHub Enterprise CloudをOneLoginでSSOできるようにして挙動を確認する | いちよんこーど
SCIMで自動化できる運用
GitHub利用ユーザーの追加
- OneLoginでGitHub利用できるRoleにユーザーを追加
- (自動化可能)GitHubでユーザーを招待する
GitHub利用ユーザーの削除
- OneLoginでGitHub利用できるRoleにユーザーを削除
- (自動化可能)GitHubでユーザーをメンバーから削除
- (自動化可能)削除したユーザーの認証済みトークンを削除
SAML single sign-on
Configuring SAML for GitHub.com - OneLogin
前回割愛してしまいましたが、OneLoginのドキュメントリンクななぜか定期的にリンク切れ起こしたりするので予防のため設定を書いておきます。
設定方法
OrganizationのトップページからOwnerアカウントで、Settings > Organization security
に遷移し、Enable SAML authentication
にチェック。
OneLogin | GitHub |
---|---|
SAML 2.0 Endpoint (HTTP) | Sign on URL |
Issuer URL | Issuer |
X.509 Certificate | Public certificate |
証明書はRSA-SHA256くらいにはしておこう
Test SAML Configuration
でOwnerと紐付けたいOneLoginアカウントでログインして接続確認。
問題なければSaveして終了。
メンバーの全員がSAML SSOを行っている状態であれば、
Require SAML SSO authentication for all members of the your-organization.
にチェックを入れればSSO必須化ができる。
OneLogin側の設定
Introduction to User Provisioning - OneLogin
Configuration
SSOのために作ったGitHubアプリの Configuration の Scim Base URL を設定。
https://api.github.com/scim/v2/organizations/[your-organization]/
ここで一旦Saveします。
次にAPI Connectionの項目でGitHubのOAuth認証を行います。
完了すると、GitHub の Third-party accplication に OneLogin の SCIM Provisioning が登録されます。
Provisioning
Provisioning の項目に移動して、Provisiongの有効化と各種設定を行います。
プロビジョニングのアクションが起こる前にアプリ管理者の手動承認が必要な場合は、Create/Delete/Update userの項目にチェックを入れる。
今回は自動化が目的なのですべてオフ。
OneLoginからユーザーが削除またはアプリの利用権限をなくした場合、そのユーザーをGitHub側でも削除するかの項目を選択。
これを Delete にしておかないと、Roleでユーザーを管理しているせいなのかGitHub側でユーザーをOrganizationメンバーから外すことはできなかったです。
忘れずにSaveして設定は完了です。
検証
GitHubのメンバー追加
- OneLoginにてGitHubアプリ利用権限のあるRoleにユーザーを追加
- 追加されたユーザーのメールアドレスにGitHubのOrganizationへの招待メールが来る
GitHubのメンバー削除
- OneLoginにてGitHubアプリ利用権限のあるRoleからユーザーを削除
- GitHubのOrganizationにて紐付いているメンバーが削除される
Roleからの削除では問題なくプロビジョニングが働く。
まだ招待している状態でもその招待が削除される。
- OneLoginにてGitHub使えるユーザーを無効化
- Reapply entitlement mappingsを実行
- 削除されたユーザーのProvisioning StateがFailedになる
- GitHubのOrganizationにて紐付いているメンバーが削除される
OneLoginユーザーの無効化だけではプロビジョニングが働かなかった。
定期的に再mappingしてくれるものではないはずなので、無効化するときは再mappingかRoleからの削除をセットで行う必要がありそう。
- OneLoginにてGitHub使えるユーザーを削除
- GitHubのOrganizationにて紐付いているメンバーが削除される
OneLoginユーザーの削除なら問題なくプロビジョニングが働く。
無効化したユーザーの復帰
- OneLoginで無効化したユーザーを再度有効化(Roleには追加しっぱなし)
- Sync loginsを実行
- 復帰したユーザーのメールアドレスにGitHubのOrganizationへの招待メールが来る
Sync loginsの代わりに、 User > 復帰したいユーザー > Applications > GitHub Enterprise > Reset login
でも可能だと思われる。