Rancher のWeb UI へのアクセスコントロール設定

# はじめに
Rancher のWebUI は，Github アカウントによって認証する機能があります．
この機能は，Rancher v0.9 で追加されました．
この記事では，現在の最新バージョンである Rancher v0.12 での設定方法を紹介します．

# 設定方法

以下の画像は，Rancher の管理サーバーv0.12 を起動した直後のWeb UI です．
![010.png](https://qiita-image-store.s3.amazonaws.com/0/51342/da367210-4b44-9fd7-af6d-9bb3decd5d87.png)

この時，左上に表示されている "Access Control is not configured Settings" というところからアクセスコントロールの設定ができます．
![020.png](https://qiita-image-store.s3.amazonaws.com/0/51342/23c26fab-4c02-2dff-6f2d-a49eb628265d.png)

アクセスコントロールの設定画面です．
設定画面にアクセスコントロールの設定方法が書かれています．
以下では，この設定画面に表示されている方法に沿って，Rancher アクセスコントロールの設定していきます．
![030.png](https://qiita-image-store.s3.amazonaws.com/0/51342/4f3e628b-01c1-1068-e00c-0a54bcb5cdf2.png)

手順としては
1. Github の自分のアカウントに連携アプリケーションとして Rancher を登録する．
2. 登録して得られたクライアントID とクライアントシークレットを Rancher のフォームに入力する．
という流れになります．

## Github アカウントに連携アプリケーションを登録する
先ほどの設定画面の中で "Setup a GitHub Application" という項のところに "Click here" というリンクがあるので，これをクリックします．
すると， Github 連携アプリケーションの設定ページが開きます．
![040.png](https://qiita-image-store.s3.amazonaws.com/0/51342/3168514c-91e8-7153-3dc7-ad2835f23300.png)

以下が Github 連携アプリケーションの設定ページです．
![050.png](https://qiita-image-store.s3.amazonaws.com/0/51342/6a8ccf44-963d-4203-2dc4-c1e396ad564e.png)

連携アプリケーションを登録するために，ページ右上にある "Register new application" というボタンをクリックします．
![060.png](https://qiita-image-store.s3.amazonaws.com/0/51342/7335f952-85f5-6931-9b68-43b68bb79b80.png)

以下が， Github の連携アプリケーションの登録ページです．
このページに登録に必要な項目を入力していきます．
![070.png](https://qiita-image-store.s3.amazonaws.com/0/51342/f3ab6e35-2be7-e9df-3d5d-8ddf449889cf.png)

Rancher を登録するために何を入力すればよいかは，先の Rancher のページに書かれています．

![080.png](https://qiita-image-store.s3.amazonaws.com/0/51342/5a7f6211-9b9f-bc4b-7055-76ccb329f092.png)

* Application name: アプリケーションの名前です．"Rancher" など任意の文字列を入力をします．
* Homepage URL: Rancher の管理Web UI のURL を入力します．先のページに表示されていますのでコピー&ペーストすると間違いないと思います．
* Application description: アプリケーションの説明を書きます．入力しなくても大丈夫です．
* Authorization callback URL: 認証のコールバックURLです．先のRancher のページに表示されていますのでそれをコピー&ペーストします．




以下の画像のように入力したら，"Register application" ボタンを押します．
![090.png](https://qiita-image-store.s3.amazonaws.com/0/51342/ecc038e7-fd23-0002-71ad-16faf5669a79.png)

すると以下のような画面が表示されます．
ページ右上にクライアントID (CLIENT ID) とクライアントシークレット(CLIENT SECRET) が表示されています．
これらを先のRancher のページに入力します．
![100.png](https://qiita-image-store.s3.amazonaws.com/0/51342/46a9b595-63bb-f238-b42f-a41f11788d25.png)

先のRancher のページの"2. Configure Rancher to use your Application for Authentication" 項にある入力フォームにクライアントID とクライアントシークレットを入力します．
入力したら，"3. Test and enable Authentication" の "Authenticate with GitHub" ボタンをクリックします．
![110.png](https://qiita-image-store.s3.amazonaws.com/0/51342/b5ea20bb-6acc-2b53-73fa-154e819c6969.png)

以下のようなウィンドウが表示されますので，"Authorize application"  をクリックします．

![120.png](https://qiita-image-store.s3.amazonaws.com/0/51342/d645f20d-597e-0dd0-5597-b0fd66f8e059.png)

そうすると，Rancher で以下のようが画面がでてきます．
"Access Control is enabled" と書いている通り，これでアクセスコントロールが有効になりました．
また，この画面の "Configure Authorization" の部分から，ログインを許可したい Github ユーザーや開発グループを追加できるようです．
![130.png](https://qiita-image-store.s3.amazonaws.com/0/51342/5b31c3c3-5eb7-6b81-aeab-27f52ced8d7c.png)

このアクセスコントロールの画面は，Rancher のWebUI 右上に表示されるようになるアイコン(Github で使っているものが表示される) をクリック-> "Access Control" をクリック で表示できます．
![135.png](https://qiita-image-store.s3.amazonaws.com/0/51342/8af50b22-f0fc-a310-6bbf-076314f07662.png)

## 動作確認
最後に，ちゃんと認証の機能が有効になったかどうか確かめるます．
一度Rancher のページを閉じ，再度ブラウザで開いてみます．
認証の機能がちゃんと動いていれば，以下のようなログイン画面が表示され，"Authenticate with Github" のボタンをクリックすればログインができます．
![140.png](https://qiita-image-store.s3.amazonaws.com/0/51342/3a0ab826-a7ab-232c-bad0-af0ffaa2777a.png)


# おわりに
Rancher でも認証により，利用可能なユーザを制限することができることと，そのための設定を見てみました．
現在，Github アカウントでしか認証できないのがすこし使いづらい点かもしれません．