2016年2月9日火曜日

Horizon for Linuxでシングルサインオン

昨年に引き続き、今年もvExpert2016を受賞させて頂きました。


http://blogs.vmware.com/vmtn/2016/02/vexpert-2016-award-announcement.html

# 本ブログをご覧頂きました皆様へ #
この場をお借りしましてお礼申し上げます。また、少しでも皆さんのHorizonライフにお役立て出来ているようであれば尚幸いです。今後ともどうぞよろしくお願い致します。

さて、今回の投稿はこれまで推しに推してきたRDSHではなく、Horizon for Linuxです。(笑

Horizon 6.2.1より、Linuxの仮想デスクトップでもシングルサインオンがサポートされたことをご存知でしょうか? # 逆にサポートされていなかったことを知らない方が多いかもしれませんが。。

Horizon 6.2.1のリリースノートはこちら(今日現在の最新バージョンは6.2.2です。)
https://pubs.vmware.com/Release_Notes/jp/horizon-6-view/horizon-621-view-release-notes.html

シングルサインオンはWindowsの仮想デスクトップでは当たり前ですし、ドメイン参加するくらいで特段何も設定しなくても実現可能ですが、Linuxとなるとそう簡単にはいきません。。

まず、現在シングルサインオンがサポートされるディストリビューションは以下となります。
RHEL 6.6 Workstation x64
CentOS 6.6 x64

次にActive Directoryと統合するための方法としては、以下がサポートされているようです。
OpenLDAPパススルー認証
Winbind

以下、公式ドキュメントへのリンクですが、詳細な手順については触れられておらず、統合方法についても「動作することが分かっています。」という表現に留まっています。
さあ、皆さんの力の見せ所です。(笑

Linux と Active Directory の統合
http://pubs.vmware.com/horizon-62-view/index.jsp#com.vmware.horizon-view.linuxdesktops.doc/GUID-D8E3A4AA-83E9-46A4-8BBA-824027146E93.html

ただ、Winbindを使って統合する場合、Linuxデスクトップをクローンから複数台展開する場合にドメイン参加に失敗するようで、OpenLDAPによる統合が推奨されるとのことです。。

統合方法についても「お任せ」ということなので、、今回は「SSSD」を使ってみました。

検証した結果としては・・・
問題なくシングルサインオンでLinux仮想デスクトップにログイン出来ました!

せっかくですので、細かい設定方法などをご紹介したいと思います。
例によって長文となりますので、、ご興味のある方は続きをどうぞ。

今回は、CentOS6.6(x64) でLinux仮想デスクトップを構成しました。

1. CentOSのセットアップ
vSphere Web Clientより、仮想マシン(今回は1vCPU/2GBRAM/20GBHDD)を作成します。

CentOSは"Desktop"でインストールしました。

2.DNSの設定
Active Directoryとの統合に欠かせないのがDNS周りの設定となります。

まず、DNSサーバーにLinuxVMのAレコード、PTRレコードを登録しました。

"hostname --fqdn"できちんと名前解決出来る必要があるようなので、「/etc/hosts」、
「/etc/sysconfig/network」にもFQDNを登録します。

/etc/hosts
127.0.0.1 ssocentos.test.local ssocentos
192.168.34.40 ssocentos.test.local ssocentos

/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ssocentos.test.local

3. パッケージのインストール
以下のコマンドを実行し、必要なパッケージをインストールします。
# yum install ntp ntpdate sssd krb5-workstation oddjob-mkhomedir

パッケージ名 用途
ntp/ntpdate 時刻同期用のパッケージモジュール
sssd sssdのベースパッケージ
sssd-ad sssdをADに対応させるためのパッケージ
krb5-workstation Kerberos認証用のパッケージ
oddjob-mkhomedir ホームディレクトリ自動作成用パッケージ

4. 時刻同期
Kerberos認証は時刻のズレが大きいと認証が失敗してしまうため、ntpdateコマンドで時刻を同期します。
# ntpdate ntp.test.local

今回は検証のため現時点での時刻を合わせただけですが、実際にはきちんとNTPを立てて時刻同期を構成されることをオススメします。

5. Kerberosの設定
Kerberos認証を行うための設定を行います。

/etc/krb5.conf
[libdefaults]
 default_realm = TEST.LOCAL
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_ccache_name = KEYRING:persistent:%{uid}

6. Sambaの設定
ドメイン参加を行うため、Sambaの設定を行います。

/etc/samba/smb.conf

[global]
   workgroup = TEST
   client signing = yes
   client use spnego = yes
   kerberos method = secrets and keytab
   log file = /var/log/samba/%m.log
   password server = dc00.TEST.LOCAL
   realm = TEST.LOCAL
   security = ads

7. ドメイン参加
以下のコマンドを実行し、ドメインに参加します。
# kinit Administrator
# net ads join -k -U Administrator
# klist -k

8. SSSDの設定
いよいよSSSDの設定を行います。

/etc/sssd/sssd.conf
[sssd]
config_file_version = 2
domains = TEST.LOCAL
services = nss, pam, pac

[domain/TEST.LOCAL]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
cache_credentials = false
ldap_id_mapping = true
override_homedir = /home/%d/%u
default_shell = /bin/bash
case_sensitive = false

SSSDを起動する際にパーミッションがチェックされますので、以下のコマンドで変更します。
# chown roo:root /etc/sssd/sssd.conf
# chmod 600 /etc/sssd/sssd.conf

以下のコマンドを実行し、SSSDを起動します。
# service sssd start

以下のコマンドを実行し、SSSDによる認証を有効化します。
# authconfig --update --enablesssd --enablesssdauth --enablemkhomedir

9. VMware tools インストール
vSphere Web Clientより、[ゲストOS]-[VMware Toolsのインストール]を選択します。

以下の画面が表示されますので、[マウント]ボタンをクリックします。

マウントされた"VMware Tools"をダブルクリックで開きます。

"VMwareTools-9.10.0-2476743.tar.gz"を選択し、右クリックメニューより"展開"を実行します。

展開先としてデスクトップを指定し、[展開(E)]ボタンをクリックします。

デスクトップに"vmware-tools-distrib"フォルダが展開されますので、以下のコマンドを実行し、VMware Toolsをインストールします。
# cd /root/デスクトップ/vmware-tools-distrib
# sudo ./vmware-install.pl -d

View用のテンポラリ領域をクーロンの対象ディレクトリに追加します。
/etc/cron.daily/tmpwatch
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' -X '/tmp/view*' 10d /tmp

一時的なネットワーク停止からリカバリ出来るよう、nsswith.confのhosts項を修正します。
/etc/nsswitch.conf
hosts: cache db files dns

10. View Agent インストール
ここまできたら、後はView用の仮想デスクトップとして構成するだけです。

My VMwareよりView Agentをダウンロードし、右クリックメニューより展開を実行します。

展開先としてデスクトップを指定し、[展開(E)]ボタンをクリックします。

以下のコマンドを実行し、View Agentをインストールします。
# cd /root/デスクトップ/vmware-tools-distrib
# sudo ./install_viewagent.sh -b Connection Server FQDN -d Domain -u View Administrator Usename -p Password -A yes

以上でLinux仮想デスクトップ側の設定は完了です。

11. 再起動
View Agentを有効化するため、再起動します。
# reboot

12. デスクトッププールの作成
View Administratorにログインし、[View構成]-[登録済みのマシン]の"その他"タブにLinux仮想デスクトップが表示され、ステータスが"使用可能"となっていればセットアップは完了です。

動作確認用のデスクトッププールを作成します。

[カタログ]-[デスクトッププール]の順にクリックし、[追加]ボタンをクリックします。

タイプは"手動デスクトッププール"を選択し、[次へ]ボタンをクリックします。

ユーザー割り当てを選択し、[次へ]ボタンをクリックします。

マシンソースは"その他のソース"を選択し、[次へ]ボタンをクリックします。

デスクトッププールIDを入力し、[次へ]ボタンをクリックします。

デスクトッププールの設定を行い、[次へ]ボタンをクリックします。

プールに追加するマシン(Linux仮想デスクトップ)を選択し、[次へ]ボタンをクリックします。

設定内容を確認し、"このウィザード~"にチェックを入れ、[終了]ボタンをクリックします。

プールに資格情報を追加する画面が表示されますので、[追加]ボタンより、動作確認を行うユーザーもしくはグループを追加し、[閉じる]ボタンをクリックします。

以上で設定はすべて完了です。
Horizon Clientからシングルサインオンでログオン可能かどうかを見てみたいと思います。

13. 動作確認
Horizon Clientを起動し、接続先のConnection Serverをダブルクリックします。

ユーザー名/パスワードを入力します。

先ほど作成したLinuxデスクトッププールにアクセスします。

通常だと認証画面で止まってしまいますが、、一気にデスクトップまでログオン出来ました!!

Linuxもようやくシングルサインオンに対応したということで、何よりですね。

コスト面からLinuxの仮想デスクトップを選択されるお客様がにわかに増えてきている気がしますし、昨今流行り(?)のインターネット(ブラウザ)を分離するにはLinuxでも十分だと思います。

残る課題は、大規模展開時のスクリプト開発ですかね。。(Composer非対応のため。)
こちらはまたの機会にご紹介出来ればと思いますが、、機能追加、待ってます!!

0 件のコメント:

コメントを投稿