OCI に 1Password を利用したパスキー認証を設定してみた

# はじめに

ウェブサービスにおける認証の安全性を強化するために、[多要素認証](https://www.nri-secure.co.jp/blog/multi-factor-authentication)は欠かせません。

今回、Oracle Cloud Infrastructure（以下、OCI）において、認証方法の一つであるパスキー認証を試してみました。

# OCI における IAM 認証について

OCI の 認証・認可の仕組みである Identity and Access Management（以下、IAM）は、長らく [Time-based One-time Password](https://ja.wikipedia.org/wiki/Time-based_One-time_Password)（以下、TOTP） 形式の多要素認証だけに対応してきました。TOTP 形式は手軽に利用できる反面、[フィッシング](https://www.antiphishing.jp/consumer/abt_phishing.html)への弱さなど、いくつかの問題点を抱えています。

OCI では、2021 年 11 月に、同社が提供していた IDCS という認証サービスを IAM に取り込む形で、IAM の機能を大幅に強化しました。それに伴い、OCI は TOTP 以外の形式の多要素認証にも対応するようになりました。

# パスキー認証とは

## パスキーと FIDO について

パスキー（Passkeys）は、パスキーは、ユーザーが認証システムにアクセスするためのデジタルキーです。**パスキーは通常、PC や USB デバイスなどの機器に保存**されており、ユーザーがサービスにログインする際に自動的に認証が行われます。

パスキーを用いた認証技術を総じて「パスキー認証」と呼びます[^2]。FIDO アライアンスという非営利団体が仕様を制定し標準化したことによって、世界中で広く使われるようになりました。

## TOTP との違い

TOTP は、時間の経過（多くは 30 秒ごと）で変化する一時期的な認証情報（多くは 6 桁の数字）を入力させる認証方法です。

大変広く利用されている方法ですが、「ソーシャルエンジニアリング」と呼ばれる、**相手(人)をだまして秘密情報を入力させる**いう手法により不正アクセスを許してしまう弱点がありました。コンピューターのハッキングよりも、人間をだます方がずっと簡単であることから、不正アクセスの被害が後を絶たない状況となってしまいました [^3]。

一方、パスキー認証では、保管された秘密情報には利用者本人でさえもアクセスできません。また、サーバー（本記事ではOCI）と秘密情報を直接やりとりすることもありません。この仕組みのため、相手をだまして秘密情報を窃取する手法がきわめて成立しにくくなっています。

## 1Password でパスキーを利用することについて

パスワード管理ツールである 1Password をパスキーとして利用することの是非については諸説あります。

メインの認証情報であるパスワードと、多要素認証の情報であるパスキーを、両方とも同じサービスに保管することになるからです。1Password 自体や、自身の利用方法が適切でない場合、問題が起こる可能性が指摘されています。

しかし、この問題は本記事とは異なる論点であるため割愛します。気になる方は、[Yubikey](https://amzn.asia/d/4yE10mi) などの物理デバイスをご利用になるとよいでしょう。

# 設定方法

まずは OCI コンソールにサインインします。

OCI コンソールの画面右上から、`My profile` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/ffac2176-5065-c7c9-e827-125fdcc255fb.png)

`Security` ボタンを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/fcffd985-8699-97a7-0813-1253f579db5b.png)

`Fast ID Online (FIDO) passkey authenticator` の `configure` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/4d54fa87-1ce0-39b5-40b8-f8fcffd7caab.png)

いいですか？と出るので、`Continue` を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/3fbd08cb-a89d-e193-40ef-ca7c6f79a6bf.png)

唐突に OCI ではない設定画面にリダイレクトされますが、これは前述した IDCS（IAM に統合された認証基盤）の設定画面ですのでご安心ください。`FIDO Passkey Authenticator` の `Configure` を選択しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/0810e47e-23f2-c064-db63-9741d8190c3a.png)

私の場合は、パスワード管理ツールの 1Password をデフォルトのパスキー管理ツールとしているため、1password の設定画面が自動的に開きます。違う種類のパスキーを利用したい場合は、画像右上の USB メモリのようなマークをクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/e96520da-ab87-18c0-20db-89ead0acf68c.png)

IDCS から、OCI の設定画面に戻ってきました。設定できたようですね。デバイス名がよくわからない表記になっていますが、利用上の支障はありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/9aa5128c-0584-94fa-0ad1-2867d7692d30.png)

既に TOTP を設定済みである場合は、デフォルトの多要素認証の方法を変更しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/9a385eb3-2691-c05c-9780-6902771c6f0d.png)

`Fast ID Online (FIDO) passkey authenticator` を選択して `Save` を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/47bdd479-2449-33b2-7b4f-2307b4f22f28.png)

ばっちりですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/0b0898c6-2098-ca8e-19b5-a40ad0a59144.png)

# 動作確認

さっそくサインインを試してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/5c322cdc-0f6b-76af-4a4d-7d26fb853e8b.png)

FIDO で認証するかどうかを尋ねられますので、`検証` を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/e48f6ef6-fed8-0fb3-d7e6-34f582abb885.png)

パスキー用のツールである 1Password が自動的に起動しますので、`Sign in` を選択します。これは、選択するデバイスによって異なりますので、適宜読み替えてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/160b0903-4246-699b-245b-3a50064eed9a.png)

サインインできました。ばっちりですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734734/ee69f256-ded0-f556-1b39-e5a2010afbb6.png)

# おわりに

OCI でも簡単にパスキーが設定できて感動しました。

ぜひ皆さんも利用してみてください。従来の認証における管理の煩雑さや弱点を解決できるパスキーがもっと普及し、より安全にクラウドサービスが利用できる未来を楽しみにしています。


[^2]: 慣例的な名称であり、正式には「FIDO」と呼びます
[^3]: 設定しないよりもした方がずっと安全ですので、多要素認証の方法が TOTP だけである場合は積極的に利用しましょう。