MFA用デバイス初期化によりOracle Cloudにログインできなくなり、サポートIDが無効で問い合わせもできなかった件の対応

Oracle Cloudにログインできなくなり、さらに解決のためにサポートを利用しようにもそれもできないという事象が発生しましたが、何とか解決することができました。
似たような事象が発生した方の参考になれば幸いです。
※随時経過を追記していた時からタイトルを変えています

# 前提
Oracle Cloud（正式にはOracle Cloud Infrastructure、以下OCI）をAlways Freeではなく、
有償プランで使用しています。仕事ではなく個人の趣味で使用しているものです。
クレジットカード番号を登録し
`Your Oracle Cloud free account has been upgraded to a paid account.`
というメールを受け取っています。
（なお、有償プラン(paid account)であるとここでわざわざ明示している理由ですが、Always Freeではサポートが受けれないのではないか？という気がしているからです。実際に受けれるのか受けれないのかは不明です。）
余談ですがAWSなどではなくOCIを使っている理由は無料枠が非常に大きいからで、有償プランにはしていますが無料枠の範囲で使っており実際には課金は発生していません。

# 不注意でMFA用デバイスを初期化してしまいログインできない状態になった
OCIに関しては以前[謎のアカウント停止](https://zenn.dev/shinshin86/scraps/022e44712274fd)も話題になりましたが、今回私の場合は単なる不注意です。
OCIではMFA（多要素認証）の二段階目にFIDO2が使えますが、私はWindows Helloを使ってこれを設定していました。これはそのPCに鍵が保存されますので、別のMFAを設定していない限りそのPCを使ってしかログインできなくなることを意味しています。（MFAの手段は複数登録でき、ログイン時に選択できます）
以前はAuthy（認証アプリ）を使ったOTPでのMFAも設定していたのですが、FIDO2が使えるようになって設定したときに、この設定を解除してしまっているようでした。（解除した記憶は無いですが、ログイン時にFIDO2しか選択肢が出てこないので結果的にそれしか考えられない）※後々これは間違いであることがわかります
最近、新しいPCを購入し、上記のことを失念したまま古いPCを初期化してしまいました。これにて、めでたくOCIにログインできない状態となってしまいました。ログインできない状態になったことに気付いた瞬間は、変な汗が出ました。
ちなみに、OCIのWebコンソールへのログインができないだけであり、アカウントは生きていてクラウド上のリソースも生きているため、サーバーへは普通にsshでログインできます。なので、当面は困りごとは無い状態です。

# 復旧手段を調査
これに関しては以下の記事が非常に参考になりました。

https://qiita.com/ogacloud/items/2c8a387d35df5d37ea82

今回の私のケースでは問題となっているアカウントがIAMユーザーではないので管理者からのリセットもできず、バイパスコードも取得していませんでした。
結果、今回の私の場合はサポートに連絡して(SR=Service Requestを起票して)対処するしかないことがわかりました。

# Supportの利用（SRの起票）
サポートの利用方法についても上記の記事内にOracle公式のPDFへのリンクがあります。
[Oracle Cloud Support ご利用ガイド ｖ2.4](https://www.oracle.com/jp/a/ocom/docs/cloud-1stguide-sr-2765641-ja.pdf)
サポートのアカウントはOCI自体のアカウントとは別になるようで、まずは[サポートサイト](https://support.oracle.com/)からアカウントを登録しました。
登録してログインすると、自動的にそのメールアドレスと紐づいているサポートIDが表示されるようでした。Oracleでサポートを受ける権利はサポートID（またはCSI番号）と呼ぶようなのですが、これが肝になってきます。

# SRが起票できない（サポートIDが無効）…
さてこれでめでたくSRが起票できるようになったと思ったのですが、ログインすると以下のような画面になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149348/2df122bb-40df-c886-92fb-9e488e3fcae7.png)
なにやらサポートIDが無効というような表示になっていて、上記のサポートマニュアルに記載されているようなSRを起票するボタンもありません。これでは問い合わせをすることができないのでログインできない問題も解決できません。

# サポートIDが無効な問題を電話問い合わせ
さてどうするか？
電話でのサポートが利用できるのではないかと考え調べてみたところ、電話サポートの連絡先が判明しました。しかも幸いにもフリーダイヤル。
https://www.oracle.com/jp/support/support-services-list/
ここから先は時系列付きで経緯を記載していきます。
ここから先、海外の番号から電話の折り返しがあった旨の記載がありますが、すべてサポートは日本語です。

## 2024/06/23(日) 07:30
電話番号が記載されている上記のサイトには受付時間が記載されておらず、この時点で休日・朝でしたがダメもとでとりあえず電話してみたところつながりました。
まずは音声ガイダンスに従ってサポートIDを入力する必要があります。画面上で無効のような扱いになっているサポートIDでも大丈夫なのか疑問でしたが、入力したところ無事オペレーターにつながりました。
「二段階認証できなくなったので解決したい」「しかしSRが起票できない」旨を伝えて確認してもらいました。
その結果
- やはり今のサポートIDはSRが起票できない無効状態
- メールアドレスで検索してもほかの登録やサポートIDは存在しない
- この状態からとりあえずサポート側で強制的にSRを起票してもらうことはできないのか→できない

とのことでした。
とはいってもこのままログインできない状態なのは困るので何とかならないか、こちらの不注意なので最悪アカウントを失うのは仕方ないと思うがサーバーが残るのは困るのでそれだけでもなんとかならないかという旨を伝えました。
それに対して、「休日・朝の時間帯でありマネージャーへの確認なども行えない状態であるが、可能な限りの調査をして30分程度で折り返す」とのことでした。

## 2024/06/23(日) 08:15
折り返しがありました。折り返しの番号は+1の国番号からで、この時間帯はアメリカでサポートをしているようです。
折り返しの結果「やはり現時点ではSRが起票できない状態のサポートIDであることしか言えない」とのことでした。
解決していないのでこの先どうしていけばいいのか確認したところ
- サポートID（つまり契約状態に関すること）なのでセールス（営業窓口）のほうに電話してみたほうが良いかもしれない（セールスの電話番号はOracleのサイトに記載されている）
- サポートへの電話も平日営業時間帯に確認できる人員が多い時間のほうが良いかもしれない（「サポートIDが無効状態という結論自体は変わらないはずだが」という補足あり）

 とのことでした。
 ちなみに余談ですが「ダメもとで電話したらこんな時間でもつながりましたけど、サポート時間ってどうなってるんですか？サイトにも記載されてませんけど」と聞いてみたところ、24時間サポートととのことでした。

 ## 2024/06/23(日) 日中（調査）
 翌日月曜日にセールスorサポートに電話することを決めつつ、情報収集をしてみました。
 そうすると、以下のケースが非常に類似していることがわかりました。
 
 https://var-log-chimiy.netlify.app/post/oci-deactivated/

 ログインできなくなった理由とCloudのアカウント自体が生きているか否かという点は違うものの、サポートIDが無効でSRが起票できないというサポートサイトの画面が全く同じです。（この方の場合はCloudのアカウント自体が無効化されている、私の場合はただ単に自分がログインできないだけでアカウントは生きているという違いがある）
 サポートIDが無効であることの調査を行ってもらい、その結果解決したとのことでした。これが解決されている事例が存在することが分かったので私も「SRを起票したいがサポートIDが無効状態であるので何とかしたい。過去同じ事例が解決されていることは確認済み。」という主張で再度問い合わせをすることを決めました。
この方も書かれていますがOralce Cloudを有償プラン化したときに新しいサポートIDが発行されたがうまく紐づいていない状態なのかと想像していました。（無償プランの時のサポートIDのみがSupportサイトに紐づいている）
 しかし、Twitterで直接この方に確認したところ、最終的に解決したとき新しいIDが紐づけされたわけではなく無効状態になっていたIDが有効化されたとのことでした。
 
https://x.com/chi_mi_y/status/1804795297190842468

https://x.com/chi_mi_y/status/1804820554312306935
 
 このことからも「（別のサポートIDが存在するのではないかという確認ではなく）サポートIDの無効状態を対処したい」という問い合わせ内容が一番サポートに伝わりやすく対処の方向性も決めやすいのではないかと考えました。
 
 ## 2024/06/24(月) 09:30
 日本時間で平日・営業時間帯になったのでサポートに電話し、上記の内容を伝えました。
 その結果「サポートIDの状態を確認・今後できる解決までの対応を検討し、午前中には折り返しする」とのことでした。

 ## 2024/06/24(月) 10:25
 折り返しがありました。+61（オーストラリア）の国番号からの折り返しでした。この時間帯はオーストラリアでサポートを行っているようです。
 結果
 - サポートサイトの情報のリフレッシュという対応を行ったが解消しなかった（サポートの権限で行える範囲の対応では解決しなかった）
 - 次にとる対応は、Cloudのチームに依頼してCloudのアカウント状態とサポートのアカウント状態を再同期する
 - これはアメリカ業務時間での対応になるので、結果の連絡は速くても翌日になる

とのことでした。
また、ログインできない状態は何としても最終的に解決したいので、万が一ほったらかしにされたときに備えて「進展が見られない場合に、こちらからサポートに電話すればこの問い合わせ内容・対応記録は参照できる状態になっているか？」と確認したところ、確認用のトラッキング番号を教えてもらえました。
電話問い合わせ時に起票済みのSRに関する電話の場合はSR番号を入力できるメニューに行けるのですが、そこで入力できる番号とのことで、サポートサイトの画面上はSR起票できない状態ではありますが内部的にはSRを作っているようです。

## 2024/06/26(水) 13:30
この時点で対応状況の折り返しはなし。
ただ、前述のとおり内部的にはSR番号が採番されているのでもしかしたらこの状態でも電話でSRを起票することができるのではと考え、サポートIDの調査とは別に今回の問題の本質である二段階認証ができずログインできない件のSRを起票できないか電話してみました。
結果…
- サポートIDの件は現時点でまだ社内の複数の部門で調査中
- このSRは非技術的なサポートに関するSRとして起票しており、サポートID無効でも起票できている
- ログインに関する技術的なSRはやはりサポートIDの状態を明確にしてからでないとNG

とのことでした。
ちなみに、先方も本日現時点の状況報告をする予定だったとのことです。

ところで、6/24以降はサポート担当がずっと同じ方が担当で折り返しの番号から推測するにオーストラリアと電話しているのですが、国際電話で若干遅延があるのか発話が被ることが非常に多くなんとも会話しづらい感じがあります…。（途中音声が途切れることも一度あり）

## 2024/06/28(金) 朝（確認）
問題の対応はアメリカの業務時間帯で行われるとのことなので、つまり日本人が寝ている間に対処がされているということで、毎朝サポートサイトにログインして問題が解決しているか自分でも確認していました。
そうすると、この日、朝4時半（たまたま朝早く目が覚めた）にサポートサイトが正常な状態になっていることが確認できました！
おそらく日中にサポートからの電話連絡もあると思われます。
SRが起票できる状態になったので早速起票することにしました。（SRの経過は次のセクションにまとめます）

## 2024/0628(金) 09:40
サポートから電話。
- My Oracle Support（サポートサイト）チームの対応により問題が解消した（サポートIDが有効になった）
- よければこの電話でそのまま引き続きMFAができなくなっている問題のSRを起票する

とのことでしたが、前述のとおり既に自分でSRを起票しているのでその旨を伝えて
このSR（サポートIDが無効という問題）はクローズになりました。
ちなみに、アカウント状態の動機ではなかなか解消せず
My Oracle Supportのチームで個別にバッチを実行して解消した
というようなことを言っていました。
また、このSRも、有効になったサポートIDに紐づけておくとのことでした。
後で確認したらMy Oracle Supportに表示されていました。

# MFAができない問題のSR起票
## 起票（2024/06/28(金) 07:00）
OracleのSR起票は初めてですが入力項目が色々あり、
どのサービスか（Oracle Cloudなどという単位ではなく、Cloudのどのサービスかというレベル）、サービス別の追加の質問などがありました。「重大度」は「ビジネスへの影響」と「システムのライフサイクル」の入力から自動で決まるようでした。（本番環境で回避策がない場合などに重大度が上がると思われる）
一部、選択肢が正しいのかいまいち自信がありませんが以下のような内容で起票しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149348/36af7538-715b-5cd2-dcd9-9a62db0aa668.png)

```
Customer Problem Description
---------------------------------------------------

Problem Summary
---------------------------------------------------
デバイス初期化によりMFAが不可になった

Problem Description
---------------------------------------------------
SR作成時に選択する「サービス名」「問題タイプ」が正しいか自信がないため、正しくない場合はご容赦ください。
Oracle Cloudへのログインについてです。
FIDO2(Windows Hello)によるMFAを設定していましたが、当該PCを初期化してしまいMFAができなくなってしまいました。
ほかのMFA手段も設定しておらず、バイパスコードも取得していなかったため、Oracle CloudのWebコンソールにログインする手段がなくなりました。対応方法をご教示ください。

Error Codes
---------------------------------------------------


Problem Category/Subcategory
---------------------------------------------------
11. Multi-Factor Authentication/Reset

Uploaded Files
---------------------------------------------------


Template Question Responses
---------------------------------------------------
1) List the URL of the service you are trying to access
https://xxxxxxxxxx.identity.oraclecloud.com/ui/v1/signin

2) ###Operation being performed###
「FIDOオーセンティケータの確認」の画面で「検証」ボタンを押すが、Windows Helloを設定したPCを初期化してしまっているので、認証できない。

3) ###Error Message/Screenshot###
認証できないので認証をキャンセルすると以下のエラーが出る。NotAllowedError: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.

4) Please detail any information that may help us in assisting to resolve your issue.
```

## 起票後
起票後1時間ぐらいでサポート担当がアサインされた連絡が来ました。
が、My Oracle SupportでSRに使用する言語を英語に設定してしまっていた影響で、英語での返信だったため、日本語でサポートを受けたい旨を英語で返信（DeepL翻訳で文を作りました）。そうすると、すぐに日本語でのアサイン担当者からの連絡が来ました。
それ以後、当日中は連絡がなく、土日（クリティカル以外は対応していないと思われる）も連絡はありませんでした。
ちなみに、以前仕事でOracleのサポートを利用してた時も複数回そうだったのですが、担当者は日本語は使えますが日本人ではないようでした。（担当者名からの判断＆日本語からの判断）

## 返信（2024/07/01(月) 09:30）
明けて月曜日の朝いちばんで返信がありました。返信は以下のとおりです。
```
いつもお世話になっております。

確認したところ、お客様のテナンシには二つのドメインが存在します。
MFAはどちらのドメインに対して設定されましたか。
設定はされていないドメインがあればそちらにログインをしてMFAを再設定することはお願い出来ますでしょうか。

よろしくお願いします。
```

（原文ママです。サポートの担当者が日本語ネイティブではないのがわかるかと思います。）
最初この返信の意味が全然分からなかったのですが、最終的に意味を理解した結果、自分自身で問題となっているMFAをリセット（一旦無効化）することができ、OCIにログインできない問題は解決しました。サポートとのやり取りは解決したのでクローズでお願いしますという旨を返信して終わりです。
次の項でこの返信の意味と、そこから導き出された解決方法を解説したいと思います。

# ドメインとは？～そして解決へ
サポートからの返信の意味がよくわからなかったで、まずはここで言っているドメインが何を指しているのか調べたところ、どうやら「アイデンティティ・ドメイン」のことだろうということがわかりました。正直、これをサポートが省略して「ドメイン」と書くのはどうかと思いますが。

https://docs.oracle.com/ja-jp/iaas/Content/Identity/domains/overview.htm

アイデンティティ・ドメインが何なのかということですが、（間違っていたらすいませんが）すごく大雑把に言うと認証基盤がコンテナ化されていてそれを切り替えて使うことができる仕組みのようです。それぞれのコンテナ内でアカウントの管理などを行うことができます。
ここでOCIへのログインプロセスを振り返ってみると以下のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149348/aa60001a-8f0e-5445-2bc2-82d3fb28c084.png)
①クラウドアカウント名の入力
②アイデンティティ・ドメインの選択
③ユーザー名・パスワードの入力
④MFA
この②の画面で選択するのがアイデンティティ・ドメインです。
私がOCIにログインするときはいつもDefaultとOracleIdentityCloudServiceが出てきて、後者を選択していました。これは正直意味も分からずやっていました。

サポートが2つあるうちのもう片方のドメインでMFAを再設定できないのかと言っているので、とりあえずDefaultに切り替えてログインを進めていくと、MFAが今回デバイスを初期化してしまったFIDO2ではなく認証アプリのコードを入力する画面になりました！
これが、この記事の最初に書いたFIDO2を設定したときに解除してしまっていると思っていたOTPでのMFAだったのです。これは今でも認証アプリ（Authy）に設定したままの状態ですので、通過することができました！！
これで、めでたくOCIへログインすることができました。

つまりこれをまとめると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149348/75f18bcb-340f-51bd-1436-c1fa416eb04c.png)
なぜかアイデンティティ・ドメインがDefaultとOracleIdentityCloudServiceと2つあり、その両方にアカウントを作っており、それぞれOTPとFIDO2でMFAを設定していたというわけです。今回はたまたま、両者で同じユーザ名・パスワードを設定していたのでアイデンティティ・ドメインの意味を理解していない状態でも先に進むことができました。本来は、別々の認証基盤ですので、まったく別々のユーザ名・パスワードを設定することや、同じユーザ名でパスワードを別にすることもできます。
ログインしてしまえば、別のアイデンティティ・ドメインのアカウントの操作もできますので、MFAできなくなっているアイデンティティ・ドメインOracleIdentityCloudService側のアカウントのMFAリセットを実施しました。
これにてすべて解決、大団円(?)となります。
アイデンティティ・ドメインが2つある状態がわかりづらいのでこれも解消したいですが、まだ対応していません。

なぜアカウントの状態がこのようになっていたかというところですが、ひとえにアイデンティティ・ドメインを理解していなかったのが大きいのですが、確か最初MFAはOTPのみ設定していて途中からFIDO2が使えるようになったということで追加設定したので、その時元々理解していない状態だったのでわけのわからない設定操作をしてしまったのだと思います。

# まとめ
- 機能の意味を理解せずに使うのはやめよう（今回の場合、アイデンティティ・ドメイン）
- サポートが必要になる前にサポートサイトが使えることを確認しておこう
- MFAは複数の手段を登録しておこう
- MFAができなくなった時に備えてバックアップコード（OCIではバイパスコード）を取得しておこう