ーーーーーーーーーーーーーーーーーーーーーーー
本記事は #CloudGarage Advent Calendar 2017 Day15 の記事です。
#CloudGarage Advent Calendar 2017 についてはこちらをご確認ください。
昨日は @ryosms さんの CloudGarage上にJIRA(とConfluence)を構築した話(その4 罠編)でした。
ーーーーーーーーーーーーーーーーーーーーーーー

Clomです
今回は CloudGarage のインスタンスで GitLabを作成し AzureAD と連携してSSOの実現を行います。

Untitled(2) (1)

AzureAD とは?
Azure Active Directory(以下 Azure AD)は、クラウド ベースのディレクトリと ID の管理サービスのことで、Active Directory のクラウド版だと考えるとすごく分かりやすいかと思います。
ちなみに 50000 オブジェクトまでは無料で利用することも可能ですので、社内でSSOサービスを組むとなるとやりやすいのかなと思います(無料の範囲だと利用できる物も限られますが・・・)

今回ちょっとしたことで CloudGarage 上に Gitlab を作ることがあったかつ、自前でアカウント管理するのがとても面倒だった為、SSO実装をしていこうと思い、行っていました。
# 実は Google OAuth認証に関しては日本語の記事はありますが、 Azure AD 認証に関しては日本語の記事が無いのです。。。もしあれば、教えて頂きたいなと・・・

今回の構成について
Untitled(4)

今回の作戦は次の構成です。CloudGarage 上の GitLab と AzureAD 間で OAuth認証を行うような形になっています。分かりやすい構成にはなっています。

Azure ADの準備
まずAzure AD 側の準備を行います。
59
まずAzureAD を作成していない場合はサービスの追加から Azure Active Directory を選択して追加を行います。
43
作成して一旦画面を更新するとAzureActiveDirectory から管理画面にアクセスできるようになります。
そこからアプリの登録を選択し、新しいアプリケーションの登録を行います。

15


必要事項を入力して作成を行います。ここの種類は "Webアプリ/API"を選択する形になります。

00


作成を行うと設定が可能となります。OAuth認証を行った際の コールバックURLの設定を行う必要がありますので、応答URLから設定をおこないます。
その際のURLは http://(host)/
users/auth/azure_oauth2/callback になります。
host は各自の物に置き換えを行ってください。

15

次に APIのシークレットキーを取得します。キーの設定から取得を行い設定を進めます。
こちらはページを遷移すると今後表示できなくなりますのでメモを取ることをオススメします。

ここまでで Azure AD 側の設定は終了です。

インスタンスの構築

次にCloudGarage 側でインスタンスの構築を行います。

48

今回も事前にCloudGarage で用意されていますテンプレートを用いてインスタンスを作成します。
これにより、普通に構築するよりもはるかに時間の短縮が可能です。
04
構築が完了すると Web ページから root のパスワードを設定できるようになりますが、速やかに設定を行う必要があります。(誰からでも見られるため)
また、初期設定では誰でもアカウントの作成が可能ですので、無効化することをオススメします。

2017年12月現在の CloudGarageで用意されてます、GitLabのテンプレートは GitLabのバージョンが古いため、アップデートを行う必要があります。
コンソールに接続を行い、 apt-get update && apt-get upgrade で最新版に更新をおこないます。
その後、AzureAD認証を行うために設定ファイルの編集を行います。設定ファイルは以下の場所に格納されています。

/etc/gitlab/gitlab.rb

設定ファイルを開き次の項目の設定を行います。


ここで external_url の設定を行わないと、OAuthの認証がうまく行えませんので設定を行います。
また、AzureADの設定部分がありますが次のように置き換えます。

Application ID → 作成したアプリケーションのアプリケーションID
Key → 作成したアプリケーションのシークレットキー(設定のキーで生成したもの)
Directory ID → AzureAD側のディレクトリID (プロパティで確認可能)

設定後は gitlab-ctl reconfigure で設定したファイルをもとに再構成を行います。
その後 systemctl 等で gitlab の再起動を行うことで設定が反映されます。
24
再起動後接続を行うと Sign in with のところに Windows のマークが表示されます。
これを選択することで AzureADによる認証が行うことが出来、各種サービスを利用する事が可能になります。

以上 CloudGarage で GitLabと AzureADを連携する手法でした。
明日は
@tsukaman さんです。よろしくお願いいたします。