Azure Portal の アイドルタイムアウト を設定する

# ユーザーが一定時間アイドル状態だったら Azure Portal からサインアウトさせたい

ときどき、セキュリティ対策として、
　「ユーザーが一定時間アイドル状態だったら Azure Portal からサインアウトさせたい」
という話を聞きます。

こちらは、Azure Portal の設定に関しての公開ドキュメントがあり、実現ができます。
実際に設定したことがなく、どんな感じなのか動作がわかっていなかったので、確認してみました。

https://learn.microsoft.com/ja-jp/azure/azure-portal/set-preferences#signing-out

> 非アクティブ タイムアウト設定は、ワークステーションのセキュリティ保護を忘れた場合にリソースを未承認のアクセスから保護するのに役立ちます。 ユーザーはしばらくの間アイドル状態であった後、Azure portal セッションから自動的にサインアウトされます。 

# 設定する
Azure Portal 上部の [歯車マーク]　から設定ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/a05cf3cc-1658-8c18-65bb-0ab212c97073.png)

[サインアウトと通知] に、非アクティブのときのサインアウトに関する設定があります。

- グローバル管理者であれば、テナント全員に強制する形での設定ができます。
- その他のユーザーであれば、自分のサインアウトについてのコントロールができます。
なお、グローバル管理者から、非アクティブのときのサインアウトを強制されている場合は、その時間を超えない範囲での設定になります。


まずはグローバル管理者で、テナント全員に強制する場合を見ていきます。

|| グローバル管理者 |
|:-:|:-:|
|設定画面| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/cf602d3b-c0d7-3a5a-a403-1ccfa10e02ae.png) |
|設定できる時間| 最短、5分～、最長23時間59分 で設定できました。 <br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/1ea72db9-b068-af63-144d-a45221285322.png) <br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/a3c00b08-f57b-27aa-f2a4-0ebbd8ba2114.png) <br> 5分より短いなど、設定不可の値を入れた場合はエラーがでて設定ができません。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/c5896e34-0e4c-75bf-7abc-c8ddf0882f18.png) |



さて、続けてユーザー側を見ていきます。
ユーザーは、グローバル管理者から、非アクティタイムアウトが適用されているかどうかで、表示や設定内容が変わります。


|| 強制されていない場合<br>一般ユーザー | 強制がある<br>一般ユーザー  |
|:-:|:-:|:-:|
|設定画面| 強制されていない場合には、非アクティブ時のサインアウトが　プルダウンで　"なし"　となっています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/31bc94f6-1e28-7b26-9651-684af260698a.png)  | 以下の例は 23時間59分 (1439分)　をグローバル管理者が設定した場合です。<br> ユーザーには "非アクティブ状態 1439分続くと、サインアウトとします。" が表示されています。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/bd3812b4-f35e-4339-4247-4dd206a4e53b.png) |
|設定できる時間| 設定できる時間の粒度は以下の通りでした。<br>プルダウンでは、15分～2時間が選択できました。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/518b29aa-33c8-9b16-176d-0eec901444fe.png) <br> プルダウンの一番下、ユーザー設定の期間　を選んだ場合でも15分刻みで設定する形です。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/7289ec99-2d68-33e5-0dd9-3274cd53472c.png) |ユーザーは、管理者から設定された時間よりも短い時間であれば、設定が可能です。<br>極端な値として 1分 も設定が可能で、動作します。 <br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/3e094a11-ab5b-2f41-48e0-9095a9bd9caa.png) |




# 動作を確認する
それでは、動作を確認してみます。
グローバル管理者から 15分 アイドル状態のときにサインアウトするように設定してあります。
ユーザーでは何も設定をしていませんので、 15分でサインアウトされる動きが想定です。


まずは Azure Portal へサインインしました。
放置をして様子を見ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/149570db-b96e-b60e-d4af-556bc3933db9.png)

放置を開始して、おおむね14分ほどたったところで　”間もなくサインアウトだよ”　というお知らせが来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/88809178-89ae-d2a5-de4e-cc463246410b.png)

そのまま放置を継続していると、およそ1分ほどで、画面が遷移し、サインアウトされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/2d723252-cfb6-738c-3f0a-46e080d1d3b2.png)

サインアウトされた表示の後、数秒後には、アカウントを選択する画面に戻りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/a8572c5b-0012-3880-a2cd-333ed3d42d37.png)


例えば、しばらく離籍していた場合などは、上記のようにサインアウトされた状況になっているはずですね。
再度サインインしようと操作をした場合には、再度認証が必要になりますし、設定されていれば MFA の認証なども必要になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/d487e203-4d5a-cec4-4835-13367156366e.png)


# 例外
なお、 Edge のプロファイルなどと連携をして、Azure Portal へのログイン時にそもそもパスワードなどの認証が求められない構成においては、時間を経過してもサインアウトされませんでした。
そのような場合は、時間経過にて　”間もなくサインアウト” のお知らせは来るのですが、サインアウトはされず、「サインアウトしない」の選択肢を選ぶことで継続利用が可能です。　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/88809178-89ae-d2a5-de4e-cc463246410b.png)


# 参考
https://learn.microsoft.com/ja-jp/azure/azure-portal/set-preferences

https://qiita.com/aktsmm/items/ca0af599c5554d4d1b64?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share