(前回)Cocoaの日々: Keychain Services 調査 (5) ドキュメントを読む #3 - ACL続き
ドキュメントは続く...
Mac Dev Center: Keychain Services Programming Guide: Keychain Services Concepts
Keeping Your Mac OS X Keychain Data Secure
セキュリティを保つために...
- 使わない時にはロックをかける
- ログインパスワードと異なるパスワードを設定する
Keychains Services は使い易いAPIを用意している...
- パスワード追加
SecKeychainAddInternetPassword
SecKeychainAddGenericPassword - Keychain がロックされている場合は、自動的にロック解除用のダイアログが表示される
- access object が自動的に作成され、呼び出したアプリが信頼されたアプリとして登録される
- パスワード取得
SecKeychainFindInternetPassword
SecKeychainFindGenericPassword - keychain が指定されない場合(NULL)は、"default keychain search list" 内の keychain が検索対象となる。"default keychain search list" は キーチェーンアクセス.app の「キーチェーンリスト」で設定できる。
- パスワードを格納する時に、keychainがまったく存在しない場合、ダイアログが表示される。このダイアログで "Reset To Defaults" を選択すると、login.keychain が自動的に作成される。keychain のパスワードは、ログインパスワードと同じものが設定される。
- keychain がロックされた状態で、パスワードを保存または取得する時には、Keychain Services はロック解除用のダイアログを表示する。
- パスワードの保存や取得以外にもアプリが必要とするいくつかの関数が操作が用意されている:
・ダイアログ表示を無効化する(例:サーバではダイアログ表示を省略して自分でロックを解除する)
・ユーザがロックを解除できない状況で、ロックを解除する(例:無人稼働のサーバなど...ここは想像で書いている...訳がいまいち自信がない)
・信頼されたアプリを追加する(例:サーバアプリが、管理用アプリにパスワードへのアクセスを許可する)
- Keychain Services は keychains, keychain item, attributes, access objects, ACLs を操作する為の関数を多数用意している。
- keychain event によって呼び出されるコールバック関数を登録することもできる(例:ロック解除のイベント)。ただ通常これは管理用アプリ(キーチェーン.app)でのみ使われる。