5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JenkinsでAzure AD認証を設定する手順(Azure AD Plugin利用)

Last updated at Posted at 2018-02-28

Jenkinsの認証にAzure ADを使う場合の設定方法を調べてみました。

検索するとSAMLやOpenID Connectで連携する手順も出てきますが、今回は こちらのAzure AD Plugin を使用しました。以下が設定手順となります。

Jenkinsのバージョンは 2.108, Azure AD Pluginのバージョンは 0.3.0で確認しました。

認証設定のバックアップ

設定後すぐAzure AD認証に切り替わるので、念のため設定のバックアップを取得しておきます。
ファイルは /var/lib/jenkins/config.xml です。

# cp /var/lib/jenkins/config.xml /var/lib/jenkins/config.xml.bak

何かあったらファイルを戻してJenkinsを再起動すれば元のユーザ(セキュリティ設定)でログインできます。

Ubuntuの場合
# service jenkins restart

Azure ADの設定

まず、Azure ADの設定を行います。

Azureポータルから Azure Active Directory -> アプリの登録 -> 新しいアプリケーションの登録 を選択します。

image.png

名前(何でもいいです)を入力して、アプリケーションの種類は「Webアプリ/API」を選択します。
サインオンURLには {JenkinsのURL}/securityRealm/finishLogin を入力して「作成」を押します。

image.png

作成されるとプロパティが表示されるので、アプリケーションID をコピーしておきます。
後述するように、これをJenkinsの設定画面で Client ID として入力します。

image.png

引き続き、作成されたアプリケーションのメニューから「設定」->「キー」を選択してパスワードを発行します。これをJenkinsの設定画面で Client Secret として入力するので、コピーしておきます。
警告メッセージが出ているように、パスワードは発行時にコピーしないと再取得できないので注意して下さい。

image.png

次に、作成されたアプリケーションのメニューから「必要なアクセス許可」を選択します。
Read directory data(2ヶ所)に追加のチェックを入れて、保存します。

image.png

保存後に戻る設定画面で、アクセス許可の付与をおこないます。(ただし、ここで付与するとAzure AD上の全ユーザに付与されるので、一部のユーザに付与したい場合はAzure ADの「ユーザー」メニューから個別に付与して下さい。)

image.png

次に、アプリケーションのメニューから「応答URL」を選択します。
作成時に設定した{JenkinsのURL}/securityRealm/finishLoginパスが設定されていることを確認します。

image.png

最後に、Azure Active Directoryのプロパティに戻り、ディレクトリID をコピーしておきます。
これをJenkinsの設定画面で Tenant として入力します。

image.png

以上でADの設定は完了です。

Jenkinsの設定と動作確認

Jenkinsの管理 -> プラグインの管理 -> 利用可能タブ から、Azure ADプラグインを追加します。

image.png

追加後、Jenkinsの管理 -> グローバルセキュリティの設定 に Azure Active Directory が追加されているので、保存しておいた

  • Client IDアプリケーションID
  • Client Secretパスワードの値
  • TenantディレクトリID

を設定して、"Verify Application"を押します。"Successfully verified"と表示されればOKです。

image.png

問題なければ、その下の設定で "Azure Active Directory Matrix-based security" を選択します。

image.png

上記はログイン済みユーザ全員に権限設定する設定ですが、ユーザごとに権限付与することも可能です。
ユーザの名前を入力すればサジェスト表示されます。

image.png

設定を保存後Jenkinsにログインし、Azure ADユーザでログインできることを確認します。

image.png

以上で設定は完了です。

その他

アクセス権が不足している場合、以下のエラーメッセージが表示されました。403なので権限まわりだとは分かりますが...最初はちょっとびっくりしますね。


com.microsoft.azure.management.graphrbac.GraphErrorException: Status code 403, 
{"odata.error":{"code":"Authorization_RequestDenied","message":
{"lang":"en","value":"Insufficient privileges to complete the operation."}}}

image.png

参考資料

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?