saml-ghe

こんにちは、吉岡です。
私は弊社で様々なITツールの導入・管理を行うといった業務も行っております。
導入するツールの数が増えてくると、それぞれのツールにおけるアカウント管理が煩雑になっていきます。
この問題を解決するための方法が幾つかあるのですが、弊社ではSSOツールの導入で複数ツールのアカウント管理を統合管理しています。

SSOツールとITサービスを連携する際、必要になるのがSAML認証というSSOの仕組みで、各ツールの認証方法をSAML認証に変更しなければなりません。ツール側がSAML認証に対応していない場合は、基本的に連携ができません。

SAML認証について詳しくはこちらをご覧ください。

GUIベースでログインするツールのSAML認証

例えば、G Suite(旧GoogleApps for work)などのツールがこちらの部類に属します。SSOツールとSAML認証で接続すると、以下のようなログインのフローになります。

  • 1, ログアウト状態でG Suiteのツール(例えばGmail)にアクセス
  • 2, googleを利用する際のID(メールアドレス)を聞かれるので入力
  • 3, ssoツールにリダイレクト
  • 4, ssoツールのID/PWDを入力
  • 5, G Suiteにログインできる

このような動作になります。
つまり、SAML認証移行すると、そのツール単体のID/PWD認証はできなくなり、SSOツール経由でしかアクセスできなくなるのです。

CUIベースでログインするツールのSAML認証

さて、ここで困ったことがおきます。GUIベースでのアクセスは画面がリダイレクトするので、さほど違和感なく利用継続できますが、CUIでID/PWD認証する際、どういったことが起きるのでしょうか?

Github Enterprise(以下GHE)を例に見ていきましょう。SAML認証有効にした状態で、CUIでID/PWD認証しようとすると、以下のようなメッセージが返ってきて、ログインできなくなってしまいます。

$ curl -s --user 'username:password' https://[hostname]/api/v3/user/repos
{
  "message": "Bad credentials",
  "documentation_url": "https://developer.github.com/enterprise/2.5/v3"
}

2つの回避策

ID/PWD認証ではアクセスできない状態になってしまうので、別の認証でアクセスする方法をGHEは用意しています。

  • 1, GHE>リポジトリ>Settings>Deploykeysに発行した公開鍵を設定して、SSHでアクセスする方法

Deploykeysを登録したリポジトリには、以下のようなコマンドでGitにアクセス可能となります。

git clone git@[hostname]:[org]/[repo].git`

こちらに詳しく記載されています。

  • 2, アクセストークンを使ってアクセスする方法

本記事ではこちらの方法を以下まとめていきます。

アクセストークン認証でSAML認証の影響を回避

  • 1, まず、アクセストークンを取得します。 GHE>ユーザーアイコンのsettings>Personal access tokens の画面でGenerate new tokenボタンを押します。
    このキーは二度と取得できないので、コピーしてテキストファイルに貼り付けて保存しておくと良いと思います。

  • 2, 通常Gitにアクセスする際は、https経由でパスワードの代わりにアクセストークンを使用すればアクセスできるようになります。

git clone https://[username]:[personal access token]@[hostname]/[org]/[repo].git

GHEのAPIにアクセスする場合は以下のようなコマンドでアクセスできるようになります。

curl -s -H 'Authorization: token [personal access token]' 

https://[hostname]/api/v3/user/repos

なお、毎回アクセストークンの入力を省きたい場合、osxkeychain helperを利用する方法があります。

また、SourceTreeを利用されてる場合は、アクセストークンを設定することで毎回の入力を省くことができます。

アクセストークン利用上の注意

個人が発行したアクセストークンは、その個人ユーザーをGHE管理画面で停止(サスペンド)するまで有効となります。特にCIなどの処理で利用している場合は、注意が必要です。

おわりに

大企業においては、ツール管理とツール利用の両立が大切だと考えます。SAML認証はその中核技術だと思います。
様々なツールがSAMLに対応していただけると導入検討しやすくなりますので、まだ未対応のサービス運営者の方は御一考お願いしたいと思います。