😽

条件付きアクセスでAzure環境へのアクセスを保護する

2021/04/26に公開

はじめに

先日「Azure環境作ったら最初にやるべきこと」という記事の中でサラッと触れた「条件付きアクセス」についてです。
https://zenn.dev/tomot/articles/7ddeb902e8f426
条件付きアクセスをゴリゴリ書けば色々と制御は出来るのですが、コツを知らないとうまく使いこなせないので、ベースとなる使い方を書いてみます。

条件付きアクセスとは

条件付きアクセスポリシーという、If-Thenのルールを書くことで実現する、AzureADによるアクセス制御の仕組みです。
組織の持つアプリケーションに対して、誰が・どこから・何を使って…などを条件にして、アクセスの許可/不許可を制御することができます。
https://docs.microsoft.com/ja-jp/azure/active-directory/conditional-access/overview

使う人

いやいや、Azure上のアプリケーションなんて、AzureADの認証では使わないよ?と言う方も、最低限Azure Portalは使いますよね。Azure Portalもアプリケーションの1つですし、ココを攻撃されるとデータ含めて全滅してしまうリスクもありますので、一番に守るべきところです。
つまり、みんな使いますよねー?というお話。P1ライセンス必要なのでお金はかかっちゃいますが、650円/(月・ユーザー)で安心を買うと思えば、そんなに高くないんじゃないでしょうか。

設定のコツ

条件付きアクセスでは、全ての条件付きアクセスポリシー(各ルール)に対し、以下のようなチャートを元に判定を行います。

引用元:条件付きアクセスの基本的な考え方

一般的なFWのルールをイメージしてしまって誤解されがちなのですが、条件付きアクセスポリシーに優先順位はありません。

FWでいうと、「allow rule 1」「allow rule 2」「allow rule 3」というホワイトリスト的ルールの最後に、「all deny」を書いて残りはNGとする書き方をすることで、「いずれかのallow ruleに合致する通信は許可」「残りは拒否」とするのが普通だと思いますが、
条件付きアクセスポリシーでは、上記の通り「全てのルールが評価される」ため、FW的な発想だと「all deny」が効いてしまいアクセスできなくなってしまうことに注意が必要です。

一般的な設定方法

よく使われるであろう条件付きアクセスポリシーを記載してみます。公式ドキュメントの中にも、「一般的な条件付きアクセスポリシー」の紹介ページがあるのですが、日本で普通使いそうなポリシーが抜けてるんですよね~…

https://docs.microsoft.com/ja-jp/azure/active-directory/conditional-access/concept-conditional-access-policy-common

条件1:すべてのユーザーに対して MFA を必須にする

こちらは上記のリンクにも記載がある通りですが、全てのユーザーに対してのMFA有効化です。この目的だけでしたら無償で使える「セキュリティデフォルト」で十分なわけですから、他のルールと組み合わせて使うことが大前提になります。
一番ベーシックなルールとして、必ず設定する事になると思います。

具体的な設定

特に難しいことはありません。
(設定画面のイメージはコチラ)

「割り当て」から対象をすべてのユーザーとし、

「アクセス制御」から「アクセス権の付与」と「多要素認証を要求する」を選択します。

必要に応じて、制御の「対象外」となるユーザーを追加します。例えば、「参照権限だけだったらMFA無しでもよい」といった考え方があり得ます。

条件2:特定の場所からのアクセスを許可する

先ほどのドキュメントには「特定の場所からのアクセスをブロックする」というルールが書かれており、特定の国やリージョンからのアクセスを防ぐために使うと紹介されています。
ただ少なくとも日本では、特定の企業のネットワークからのアクセスや特定のシステムからのアクセスのみを許可する設定がまだまだ主流だと思います。
ゼロトラストの時代、IPアドレスさえ特定の範囲だったらOK!と信用するのは既に間違ってると思いますが、IPアドレスを1つの条件として使うこと自体を否定するものではありません。

設定方針

ここで気になるのが、「Azureの条件付きアクセスポリシーでは全てのルールが評価される」と言うことです。なので、許可ルールでは要件を満たすことができないため、「特定の場所からのアクセスを許可する」は「特定の場所”以外から”のアクセスをブロックする」と置き替えなければいけません。

具体的な設定

「割り当て」の中からすべてのユーザーを対象にするのは先ほどと同じですが、ポイントは2つ。
①「条件」の中から「場所」で「すべての場所」を選択したうえで、

アクセス可能にしたい場所を「対象外」に登録します
(場所名が個人情報だったので、隠してます!)

②「アクセス制御」で「アクセスのブロック」を選択します

これにより『全ての場所からのアクセスを拒否するけど、例外的に「対象外の場所」に選択したところだけは拒否しないよ』というポリシーができあがります。

場所の指定

なお、「場所」の定義はAzureAD>セキュリティ>ネームドロケーション、から指定します。

よくあり得るのは、企業の「○○拠点」ごとにグローバルIPアドレスのレンジを指定しておく設定でしょうか。
個人では、ISPからグローバルIPを固定でもらうことは多くは無いと思いますので、あまり使うことはないかなという印象です。

ポイント

もう1工夫して「ユーザー」に「例外」を設定することで、
・通常のアクセスは社内からしか許可しないけど、
・障害対応用に、ログを参照できるユーザーだけは、どこからでもアクセスできる
なんていう設定もできますね。
権限を絞って、アクセス条件を緩めるという考え方はどこでも使えますので、ぜひ使いこなしましょう。

補足情報

公式のブログで、ドキュメントに記載されていない内容まで踏み込んでFAQが書かれています。こちらも参考になることが多いです。
https://jpazureid.github.io/blog/azure-active-directory/qanda-conditional-access/

おわりに

条件付きアクセスについて、解説記事を書いてみました。
「Azure環境作ったら最初にやるべきこと」の一つとして参考にしてただければと思います。

Discussion