YubiKey 5 Nano を試してみた

ハードウェアトークンが面白そうだったなぁとおもっていたのと、ちょうど YubiKey 5 Nano がリリースされたので、はじめてのハードウェアトークンを買ってみました。

何ができるの?

OAuthの時間ベースのワンタイムパスワードの生成、静的パスワードの入力、FIDO2認証ができます。

何ができるのかこちらの記事が参考になります。
medium.com


GitHub でログインするときはこんな感じ。
Insert your security key のところで待っている状態になるので、キーに触れるだけでサインインが進みます。

f:id:mitsuki0820:20190117231949g:plain

OTPの生成は、Yubico Authenticator をインストールして使います。こんな感じ。
f:id:mitsuki0820:20190117232228p:plain

どんなハードウェア?

こんな感じでパッケージングされています。

f:id:mitsuki0820:20190117232828p:plain

大きさはキーボートの幅くらい。
f:id:mitsuki0820:20190117232939p:plain

USB ポートに指すとこんな感じ。持ち運ぶ時もそのまま挿しておけます。ただノートPCだとUSBポート1つ潰れてしまうのは痛いところです。あとストラップをつけないと取るのが厳しい。。
f:id:mitsuki0820:20190117233005p:plain

どこで買えるの?

まだ Amazon にもなさそうだったので、yubico のオンラインショップで買いました。

www.yubico.com

$50 とありますが、配送料が $5 掛かります。また、UPS にすると、+$75もされるので、よっぽど急ぎでなければ $5 で十分です。通常の配送でも、5日くらいできたと思います。
f:id:mitsuki0820:20190117225234p:plain

使えるサイトは?

自分が普段使っているサイトをまとめてみました。

サイト FIDO2対応 複数デバイス登録可 対応しているブラウザ
GitHub Chromeのみ
1Password ×(TOTPのみ) × -
Azure AD(Not MSA) ×(TOTPのみ) -
Microsoft Account Edgeのみ
twitter Chromeのみ
facebook Chromeのみ
Google Chromeのみ
bitFlyer ×(TOTPのみ) × -
Adobe ×(TOTPのみ) × -

複数デバイス登録ができないサイトは、一度既存の MFA 設定を削除し、再度登録する必要があります。
その時、iPhone の Authenticator と Yubico Authenticator に両方登録すると、同じ OTP が生成されます

ブラウザは、ほとんど Chrome です。対応していないブラウザでログインしようとすると、OTP を求められることになります。
これを機に Chrome に乗り換えようと思います。。早く各ブラウザで対応してくれないかなぁ。。。
あとは、Azure AD 早めに対応してほしいところ。

まとめ

普段、会社の環境も Windows Hello for Business でシングルサインオンできるのと、そもそもどのサイトもサインインしてしまえば、ほとんどサインインを求められることがないので、そこまで便利になった感じはしないのですが、たまに必要になったときに地味に便利かなぁと思いました。
あとは、iPhone に依存しなくなるとか、YubiKey を持ち歩いて、他のPCに挿せば( Authenticator のインストールは必要ですが)ログインが簡単になるかなというところでしょうか。PC 入れ替えの時とかは早そうです。

ということで、QOL が 5 % くらい上がった感じのするデバイスでした。

Azure Policy で監査した結果を Azure Monitor で通知する

上限付きのサブスクリプションで使っていると地味に SSD のディスクってコミットから削られていきます。
ということで、Azure Policy を使って、SSD ディスクを見つけるポリシーを書いてみました。

また、検知するだけだとダッシュボードを見に行く必要があるので、Log Analytics を使って、アラートも作ってみます。

Azure Policyの定義

下の JSON を見てもらえれば分ると思いますが、type が Microsoft.Compute/disks のもので、SKU の名前が SSD の場合、アクティビティログに出すようにしました。

{
  "if": {
    "allof": [
      {
        "field": "type",
        "equals": "Microsoft.Compute/disks"
      },
      {
        "field": "Microsoft.Compute/disks/sku.name",
        "in": [
          "Premium_LRS",
          "StandardSSD_LRS",
          "UltraSSD_LRS"
        ]
      }
    ]
  },
  "then": {
    "effect": "audit"
  }
}

ポリシーを作ったら、ログをひっかけるときに使う、定義 ID をコピーしておきます。
f:id:mitsuki0820:20190113054221p:plain

Log Analytics のクエリと Azure Monitor の設定

続いて、Log Analytics のクエリです。
アクティビティログを見ると、OperationNameは、"Microsoft.Authorization/policies/audit/action" の様です。
また、ログの Properties から、policies 要素を取ってます。この部分もうちょっと改善したいところですが。。

また、policies を展開した 変数 a には、ポリシーのプロパティが入っているので文字列として扱って、ポリシーの 定義 ID(policyDefinitionId) をひっかけてます。

AzureActivity
| where OperationName == "Microsoft.Authorization/policies/audit/action"
| extend a = extractjson("$", Properties)
| where a contains "8630d37b-2d65-44ff-be11-a0763c3c31ea"

Azure Policy のチェック間隔は、24 時間に1回なので、アラートは設定できる最大の 1 時間に 1 回チェックするようにしました。

f:id:mitsuki0820:20190113054552p:plain

ポリシーと組み合わせるといろいろできそうなので積極的に使ってみようと思います。

mackerel + その他ツールで Zikka Reliability Engineering(ZRE) に取り組んでみた

IT のお仕事をしている方々は恐らく避けられない、帰省時のパソコンメンテナンス。
twitter を眺めていても、そういうツイートを多く見かけました。プリンタを設定してほしい、なんかエラーが出てくる、ウイルスに感染した、等々。
かく言う私もエンジニアとして働いているということもあり、帰省するとちょっと見てくれるかなというところから始まって年賀状の印刷までサポートすることがあります。それなりに楽しいのは楽しいので何だかんだやってしまうんですが。

で、ちょっと思ったのがこれ毎年まとめてやるのって無駄だなぁということ。年賀状の印刷とかそういう個別の対応は仕方がないとして、ディスクが少なくなってきたとかウイルスに感染したとか、その時にわからないものかなと思いました。
普段お仕事では、監視は運用の要ですよー、監視は定期的に見直しましょうねー、とか言っている割にこの辺出来てないなぁとふと思ったので、今年の帰省を機に Zikka Reliability Engineering(ZRE) に取り組むことにしました。

ZRE で必要なこと

監視

ZRE を始めるにあたり、まず必要なものとしては、何はともあれ監視です。ユーザーは基本的にコンピューターの仕組みを知りません。なので、エンジニアからはとても考えられない使い方をしているケースがよくあります。例えば、アプリをガンガンインストールしてスタートアップに大量に登録されているとか、ディスクサイズを気にせずガンガン写真を取り込んでみるとか。全てをカバーするにはそれなりに作りこみが必要ですが、まずは基本的なメトリック監視をするだけでも様々なトラブルを未然に防ぐことができます。
また、今後のことを考えて拡張性があった方がよいと考えました。

リモート接続

異常を検知したらそこから回復する必要があります。ZREにおいては、手軽にリモート接続ができることは必須と考えました。
また、リモート接続をするにあたり、ユーザーのオペレーションが必要になってしまうと、接続するところに至るまでにサポートが必要になるので、オンライン状態であればそのまま接続できる仕組みが必要と考えました。通常のお仕事ではプライバシー面で認証の仕組み等を考える必要がありますが、ZRE ならではの自分のみが管理者ということもあり、その辺は考えないことにしました。

構成管理・ポリシー

ユーザーの意図したもの、意図しないもの含め、必要以上のアプリケーションがインストールされたり、動作に影響のある設定変更がされたりするのは好ましくありません。
従って、インストールされているアプリケーションのリストやポリシー管理ができる仕組みが必要と考えました。

安い

これ重要です。ZRE では基本的にユーザーに課金は出来ないので、基本的にポケットマネーになります。なので、基本無料できる限り安く、を目指しました。

採用したツール

mackerel

手軽な監視、というところで初めに浮かんだのが mackerel です。エージェントを入れさえすればとりあえず基本的なメトリック監視ができる、SaaS 型の監視ソリューションです。
当然、アラートを出すこともできます。また、拡張性という面でも、監視用のツールを好きなように作れるので、十分です。

難点があるとすれば、せっかくエージェントがあるのに、それを介してツールの配布ができないことです。また、価格の面でも、5台までは無料なのですが、6台以上になると料金が発生し、その料金も個人運用するには安くないという点です。さらに、無料版では、1日間しかデータが保持されないということです。(サービスを無料で使えるというだけで十分ありがたいのですが)

このあたり、もう一つのツールとして、Azure の Log Aanalytics と比較した時に、Negative なポイントでした。
ちなみに、Log Analytics では、とりあえずエージェントを入れれば、ソリューションを足していくだけで必要なツールを適宜ダウンロードしてくれます。
また、課金体系もノード数に対する課金ではなく、1日のデータ量になり、1日500 MB までであれば課金されることもなく、また過去のデータも残すことができます。

最終的に、好きなツールを動かせるという拡張性という面と、6台以上を対象とすることは今のところなくとりあえず1日分のデータさえ見れれば十分というところで meckerel を選択しました。

TeamViewer

リモート接続では定番ツールです。1回限りのサポートとして、クライアント権限で単一バイナリで動かすこともできますし、サービスとしてインストールすると、ユーザーのオペレーション無くリモート接続が可能になります。

TeamViewer も、個人利用の場合は、無料で使用ができます。
また、アカウントを作成すると、複数台の PC 管理ができます。

こんな感じ。
f:id:mitsuki0820:20190106025135p:plain

ファイル転送もできるのがいいですね。

Office 365

ログインのアカウントとデバイス、アプリケーションの紐づけができると、デバイスやアカウント の管理がとても簡単になります。この点、ZRE でも例外ではありません。

例えば、久しく実家 PC に触れてまずうーんと思うのがサービスを利用するアカウントがどんどん増えていくこと。アカウントだけであればいいものの、アカウント管理がされていないので、サービスによって Gmail しか出てこないものとかもあり、それに誘導されて、メールアドレスが増えていきます。当然、以前に作ったアカウントやパスワードは忘れ去られています。

この原因の一つとして、PCにログインするアカウントと、サービスを使うときのアカウント、メールアドレスがバラバラになっており、どれか一つに統一されていないということです。
この辺りはシステマチックに解決するというよりは、今後このアカウント(メールアドレス)を使っていこうね、という決めの問題ではあるのですが、アカウントの統一以外にも解決できることがあったので、O365 の Business Essentialsを使うことにしました。

Windows 10 では、O365(正確には Azure AD)にアカウントを作ると、そのアカウントで PC にログインすることができるようになります。また、O365 を使うとメールアドレスも用意されるので、PC へのログイン、メールの利用を含め、アカウントの統一ができるようになります。

また、O365 Business Essentials では、OneDrive for Business を使うことができ、さらに容量が 1 TB と十分あります。そして、ドキュメントフォルダーやデスクトップも含め、自動的に O365 に同期をかけることもでき、よくありがちな、「どこかは分からないけど保存はしている」状態であってもとりあえず同期できます。

難点は、価格です。1ユーザー年間で6,480円します。我が家では4ユーザーいるので、合計 25,920 円。なかなか辛いものがありますね。。

Intune

いわゆる MDM です。Intune を使うことで、ドメイン参加していなくてもポリシーでクライアント管理が可能になります。
できることとしては、例えば、BitLocker をかけるとか、Windows Defender の設定とか、アプリケーションの自動インストールとか、なんでもと言っていいくらいいろんなことができます。ZRE においては十分過ぎます。

しかしこちらも価格に難点あり。 1 ユーザー 650 円(しかも月額)ということで、さすがに個人で払うにはちょっと厳しいお値段です。ひとまず検証目的として、無料試用版を使ってみています。

まとめ

監視対象の強化や、O365 の活用等まだまだやりたいことはあるのですが、ひとまず現状はこんな感じです。
皆さんもぜひ、ZRE をやってみてはいかがでしょうか。