G1BS.0N

Tech Memo

CloudStackへのログインをLDAP認証する

| Comments

ClousStackのログインをLDAPにするには、APIからコマンドを実行しなければいけないようです。

APIのURL生成がかなりめんどくさいので、生成用のスクリプトを使わせてもらうことにします。
ここのスクリプトを使おうと思ったんですが、エンコード処理がうまくいかなかったので、 ここのを使わせてもらうことにしました。

まず、

my $site = "http://*.*.*.*/client/api?";

の”*”を自分のサイトのIPアドレスに変更しておきます。

使い方はこんな感じです。

generate-url.pl -f 3 -u (コマンド) -a (APIキー) -s (Secretキー)

コマンドの作り方は、Administrator Guideに書いてあります。

組み合わせるとこんな感じになります。

generate-url.pl -a (APIキー) -s (Secretキー) -f 3 -u "command=ldapConfig&port=389&queryfilter=%28%26%28uid%3D%25u%29%29&searchbase=dc%3Dexample%2Cdc%3Dcom&hostname=(LDAPサーバのIPアドレス)&response=json"

成功すると、こんな応答が返ってきます。

{
   "ldapconfigresponse" : {
      "ldapconfig" : {
         "queryfilter" : "(&(uid=%u))",
         "hostname" : "LDAPサーバのIPアドレス",
         "port" : "false",
         "searchbase" : "dc=example,dc=com"
      }
   }
}

あと、MD5 hashに関するバグがあるようで、 Cloudstack 3.x LDAP Authentication - Disabling MD5 hashの設定変更が必要になります。

/usr/share/cloud/management/webapps/client/scripts/sharedFunctions.js を

var md5HashedLogin = false;

に変更し、 CloudStackの再起動が必要になります。

service cloud-management restart

あらかじめローカルにユーザを作っておかないといけないようですし、LDAPサーバ障害時を考慮して、adminとか特定のユーザのみローカル認証にするとかもできないようです。

また、なんかトラブルの後、ログインできなくなることが多々あります。 その場合は、cloud-setup-managementコマンドを実行し、インストールし直すともとのローカル認証でログインできるようになります。(これが問題ないかどうかは分かりません・・・)

Comments