Translate

2015年8月20日木曜日

Subversion + Apache HTTP Server + WebDav で FreeIPA を認証に使用する




最近の若い人たちは UNIX をさわろうとしない。

なのでSubversionをWebDAV経由で使用させるときの
ユーザID、パスワード管理をhtpasswdコマンドでやらせようとしたら、
結構な力で拒否られそう..

そうならないようにユーザID、パスワードを管理する
Web UI を提供してやらなきゃならないのだけど..



で、考えた挙句 FreeIPA のWeb UIを使わせて
パスワード管理させ、
Subversion+WebDAV側はBASIC認証をやめて
FreeIPA側の認証機能を使わせようと考えた。

FreeIPAは認証にKerberos、認可にLDAP(OpenLDAP)を使っているので、
最初にApacheのモジュールとしてmod_ldapを追加する必要がある。

CentOS7なら、yum -y mod_ldapしておく。

/etc/httpd/conf.modules.d/10-subversion.conf (CentOS7でyumをつかってmod_dav_svnを入れた場合) を

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so
##
#Alias   /svn                    /var/www/svn
<Location /svn>
        DAV                     svn
        SVNParentPath           /var/www/svn/

        AuthType        Kerberos
        AuthName        "Kerberos Login"
        KrbMethodNegotiate      on
        KrbMethodK5Passwd on
        KrbServiceName HTTP
        KrbAuthRealms HARA2.LOCAL
        Krb5KeyTab /etc/httpd/conf/ipa.keytab
        KrbSaveCredentials on
        AuthLDAPUrl     ldap://tower.hara2.local/dc=hara2,dc=local?krbPrincipalName
        Require valid-user
</Location>



と書き換えてsystem restart httpd.serviceすればOK。

ちなみにKerberos認証ではなくすべてBASIC(LDAP)認証したい場合は、Location要素内を以下のようにすればよい。

2015/09/18追記:<注意>
以下の設定ではFreeIPA側で無効化したアカウントでもSubversionにアクセスできてしまうことがわかりました。Kerberos側(上)の方を使用してください。

<Location /svn>
        DAV                     svn
        SVNParentPath           /var/www/svn
        AuthType        Basic
        AuthName        "WebPot Collaboration Login(LDAP)"
        AuthBasicProvider       ldap
        AuthLDAPURL     ldap://tower3.webpot.local/cn=users,cn=compat,dc=webpot,dc=local?uid?sub?(objectClass=*)
        Require         ldap-filter objectClass=posixAccount

</Location>


もしDNSにtower.hara2.localが入っていないSubversionクライアントPCの場合はWindows\System32\drivers\etc\hoststower.hara2.localのエントリを追加してやればよい。



というわけでめでたくFreeIPAのUIで管理するようになったのだけど、
FreeIPAの画面って結構リッチというか使っていない属性が結構あるから
まようかもなあ..


2015年8月18日火曜日

CentOS7にFreeIPAをインストール中pkispawnコマンドでエラーになる



CentOS7上にFreeIPAをインストールしようとして

[CentOS 7][FreeIPA]IPAサーバーをインストールする。
http://itarc1.blog.fc2.com/blog-entry-15.html

を参考に作業していたところ
ipa-server-install --setup-dns --mkhomedir
を実行して間もないところで、以下のメッセージが表示され先に進めなくなってしまった。


Configuring certificate server (pki-tomcatd): Estimated time 3 minutes 30 seconds
  [1/20]: creating certificate server user
  [2/20]: configuring certificate server instance
ipa         : CRITICAL failed to configure ca instance Command '/usr/sbin/pkispawn -s CA -f /tmp/tmpxxxxxx' returned non-zero exit status 1
Configuration of CA failed


パスワード文字列に%が入ってるとダメとかいう記事もみかけたが、どうしても見つからない..

でさらにイロイロ検索していたところ、

Bug 953488 - CRITICAL failed to configure ca instance Command '/usr/sbin/pkispawn ...
https://bugzilla.redhat.com/show_bug.cgi?id=953488

をみつけた。

このなかに環境変数HTTP_PROXYHTTPS_PROXYを指定していると動かないという記述をみつけ、unset HTTP_PROXYunset HTTPS_PROXYしてやり直してみたら..うまく行った..

あとあと使うからと思って.bashrcに書いていたのが仇となった..


も~見つけるまで3時間かかったよ..

2015年8月11日火曜日

Arduino YUN mini を初期設定してWiFiルータにつなぐ

スイッチサイエンスのページを見ていたら、Arduino YUN miniというボードが販売されていた。

スイッチサイエンス:Arduino YUN mini


https://www.switch-science.com/catalog/2307/

どうもEthernetコネクタがなくなり、ボディも小型になったようだ。



Arduino社純正のボードでは、IoTのゲートウェイとして最有力候補は
これまではArduino YUN だったが、
もしこのminiが簡単に動くようならこっちのほうがいい。

なんたって小さいし..

で早速購入してみたが..
あれ?YUNと同じ値段だ..

コストパフォーマンスはないのね..


しかもこの値段だとIntel Edison単体とどっこいどっこいか..



YUNの場合はEtherコネクタがあったので、最初こっちをルータにつないでWeb UIを開いてWiFi設定ができたが、このYUN miniはmicro USB以外のコネクタがない。

電源もおそらくこのmicroUSBかVin給電になるのだとはおもうが..

で、調べてみたら。


1. Arduino YUN miniとPCをmicroUSBでつなぐ
最新の開発環境を入れていれば、その中に入っている最新ドライバでちゃんと認識する。
2. PCのWiFi設定を開いて Lininoから始まるアクセス先が出てくる

3. WiFiでLinino~とつなぐ

4. ブラウザを起動し「http://192.168.240.1/」を開く
するとLininoのWeb UIが表示される

5. 初期パスワード「doghunter」を入力する

6. CONFIGUREボタンを押す

7. WIRELESS PARAMETERSのDETECTED WIRELESS NETWORKSから接続したいSSIDを選択する

8. PASSWORD欄にSSIDのパスフレーズを入力し、CONFIGURE & RESTART ボタンを押す

9. プログレスバーが100%になったらPCのWiFi設定をYUN miniと同じSSIDで設定し直し、接続する

10. YUN miniのアドレスへssh接続する(rootのパスワードはdoghunterもしくは変更したパスワード文字列)


あとはYUNと同じでWiFiドライバではなくBridgeドライバでSketchをかけばOK。

もしSSIDやパスフレーズを誤って設定した場合は、本体のタイトルロゴのついた銀色の板右下にある2つのリセットスイッチのうち「32U4 RST」とかいてあるほうのリセットボタンを押して再度micro USBケーブルを繋ぎ直せば、Linino~のアクセスポイントが有効になり、再チャレンジできるようになっている、



ピンがむき出しなので、結局ブレッドボードにかませて使うことになると思うが、スイッチサイエンス社の普通のブレッドボードに乗せると、YUNより大きくなってしまう..

使い道、考えてみるか..

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...