ソフト技研 AdventCalendar 18日目の記事です。
YubiKey には様々な機能があることはご紹介した通りですが、その機能をカスタマイズするために様々なツールを Yubico社が開発しています。しかし多くの機能があるが故、古くからのツールから新しいツールまで、いろいろとあり正直わかりづらいです。
そこで、今回は開発者向けの記事として、 Yubico社が開発している各種ツールについてご紹介したいと思います。
本シリーズの目次
・part1: YubiKey の種類
・part2: YubiKey 5 の機能
・part3: 開発者向けツール(本記事)
本記事のコンテンツ
・YubiKey Manager
・YubiKey Personalization Tool
・YubiKey PIV Manager
・Yubico Authenticator
・CLI Tool たち
・おまけ
おさらい
前回、前々回のエントリで、YubiKey には、大きく分けて 2種類 が存在すると書きました。
つまり Security Key by Yubicoと YubiKey 5 シリーズです。
Security Key by Yubico で利用できるプロトコルは FIDO のみとなっており、ゆえに利用できるツールも YubiKey Manager 一つだけです。(当然 FIDO の機能のみ設定可能です)
YubiKey Manager
YubiKey Manager の起動画面
YubiKey Manager は YubiKey に関する様々な設定を行える Python 製のツールです。
Security Key by Yubico の設定を行う
Security Key by Yubico(2 の刻印があるもの!)を挿入すると、Applications タブから PIN の設定や、キーのリセットを行うことができます。
YubiKey Manager で Security Key by Yubico の設定を行う
ただし、キーのリセットを行ってしまうと、今までに登録した資格情報がすべて削除されてしまいますのでお気を付けください。
※U2Fのみ利用可能な旧製品を挿入してもなにも設定できません。
U2F のみ利用可能な旧製品では設定不可
YubiKey 5 の設定を行う
YubiKey 5 を挿入すると、上記FIDOプロトコルに関する設定に加えて、Interface の設定、各Slotの設定が行えます。
YubiKey 5C Nano を挿入した状態
Interface の設定
Interface 設定は、YubiKeyのどの機能を有効にするかという設定です。 たとえば、YubiKey 5 の FIDO と PIV 機能は使うけれども、OTPは使わないので一時的に無効にしたいといった場合に利用できます。
Interface の設定
無効にしても設定は保存されており、再度有効にすることで元通りになりますので安心してください。
Slot の設定
Slot の設定は YubiKey の OTP 機能を切り替えます。 okta などのサービスに独自の secret で OTPを登録する、あるいは自社で OTP の認証サーバーを立てる場合、もしくは Yubico OTP 以外の OATH-HOTP などを設定する場合などに利用します。
OTP Slot 1, 2 の設定
通常利用の利用では、あまり利用することはないかと思いますので、詳細な説明は割愛しますが、機会があればご紹介いたします。
YubiKey Personalization Tool
YubiKey Manager の Slot 設定をさらに詳細に行えるのが YubiKey Personalization Tool です。
YubiKey Personalization Tool の起動画面
こちらのツールでは YubiKey の OTP 出力に関する詳細な設定が行えます。
具体的には YubiKey Manager 同様、 YubiKey の Slot1, 2 の 2つのスロットに対し、Yubico OTP/OATH-HOTP/Static Password/Challenge-Response などを設定することが可能です。また、ほかにも
・YubiKey Neo の NDEF 機能を設定する
・金属部分のタップのふるまいを設定する
・OTPの入力前後に tab や Enter キーを挿入する
・YubiKey の金属部分のLEDに関する設定…etc
といった細かい設定も可能です。
YubiKey Personalization Tool オプション設定画面
また、YubiKey Manager と大きく異なる点として、複数の YubiKey に対して連続で設定を行える機能があり、大量の YubiKey にOTPを設定しなければいけないようなインテグレーションの際に便利です。
YubiKey PIV Manager
YubiKey の PIV 機能を利用するときに利用するのが PIV Manager です。
PIN・PUK・Management Key の設定、証明書のインポート、自己発行証明書の作成、CSRへの証明書発行要求等、一通りの証明書に関する操作が可能です。
PIV Manager 起動画面
Linux や Mac 環境で利用するにはこのツールを使っておけば間違いないのですが、Windows 環境で Windows の CNG 経由で利用を考えている際は、ご注意ください。本ツールで Management Key を変更してしまうと CNG 経由での証明書書き込み等ができなくなります。
Yubico Authenticator
Yubico Authenticator (Android版)
Yubico Authenticator は Google Authenticator などと同様に、 TOTP の登録や表示ができるアプリケーションです。 TOTP の Seed(OTPを生成する秘密情報)は通常、TOTP を表示するデバイスに保存されますが、Yubico Authenticator アプリでは YubiKey に Seed を保存することにより、複数のデバイスで TOTP の表示が可能です。
Yubico Authenticator(Windows版)
CLI Tool たち
ここまで GUI のツールをご紹介しましたが、各種ツールには CLI のツールもあり、YubiKey のインテグレーションを助けてくれます。
以前までは、各ツールの CLI ツールを一つ一つご紹介しなければならなかったのですが、最近は YubiKey Manager に統合していく方針のようで、活発に開発が進められています。
インストール方法
Windows であれば、YubiKey Manager GUI に同梱されているのでパスを通します。Mac で あればbrew install ykman, あるいは、pip経由でpip install ykmanでインストールが可能です。
利用方法
ykman コマンドを利用すれば、インテグレーションの自動化や、GUIツールで変更できないパラメータの変更が可能です。
たとえば、モードの変更を効率的に行うことや
# FIDO + CCID モードに変更
$ ykman mode -f f+c
PIV モードの PIN, PUK の試行回数を変更するといった GUI では変更不可なパラメータも変更可能です。
# PIN の試行回数の変更
$ ykman ykman piv set-pin-retries -P 123456 10 5
WARNING: This will reset the PIN and PUK to the factory defaults!
Set PIN and PUK retry counters to: 10 5? [y/N]: y
Default PINs are set.
詳しくは、YubiKey Manager CLI (ykman) User Manual : Yubico Support をご覧ください。まだ見ぬ YubiKey の機能を発見できるかもしれません。
おまけ
私は Windows 環境で YubiKey の各種ツールをインストールする場合、scoop を利用しています。基本的なツール一式はこちらから落とせば一発ですのでよろしければ利用してみてください。
# extras bucket の追加
$ scoop bucket add extras
# YubiKey 関連ツールの検索
$ scoop search yubi
'main' bucket:
yubico-piv-tool (1.6.2)
yubikey-personalization (1.19.0)
'extras' bucket:
yubikey-manager-qt (0.5.2)
yubikey-personalization-gui (3.1.25)
yubikey-piv-manager (1.4.2)
# yubikey manager qt のインストール
$ scoop install yubikey-manager-qt
# ykman.exe へのパスも通ります
$ ykman --help
Usage: ykman.exe [OPTIONS] COMMAND [ARGS]...
Configure your YubiKey via the command line.
Options:
-v, --version
-d, --device SERIAL
-l, --log-level [DEBUG|INFO|WARNING|ERROR|CRITICAL]
Enable logging at given verbosity level
--log-file FILE Write logs to the given FILE instead of standard error; ignored unless
--log-level is also set
-h, --help Show this message and exit.
Commands:
config Enable/Disable applications.
fido Manage FIDO applications.
info Show general information.
list List connected YubiKeys.
mode Manage connection modes (USB Interfaces).
oath Manage OATH application.
openpgp Manage OpenPGP application.
otp Manage OTP Application.
piv Manage PIV application.
最後に
今回は、YubiKey の資格情報の書き込みや変更を行える便利なツールをご紹介しました。
ただし YubiKey の資格情報を上書きすることで、現在利用している資格情報が消去され二度と復元できなくなる場合もあります。くれぐれも書き換えは自己責任で行ってください。
なお、YubiKey に関するサポートやコンサルタントが必要な場合は、問い合わせページよりお問い合わせください。