PowerShell の多要素認証について


先日、Azure AD PowerShell モジュールの多要素認証対応についてご紹介しました。

Azure AD PowerShell モジュール群がフェデレーションとMFA対応に(Preview)
http://blogs.technet.com/b/junichia/archive/2015/11/06/3656755.aspx

ここで、「あれ?Azure PowerShell ってどうだっけ?」と混乱される方もいらっしゃると思うので、Azure 系 PowerShell の多要素認証についてまとめておきたいと思います。

より細かな解説とデモを以下に動画で用意しましたので以下もご覧ください。

 

上記ビデオで使用している資料はここからダウンロードできます。

Azure に関するモジュールというのは2種類あります。

Azure PowerShell モジュールと Azure AD PowerShell モジュールです。前者は、Azure サブスクリプションを管理するためのコマンドレット群です。仮想マシン作ったり、起動したりするためのものですね。後者は、Azure AD のテナントを管理するためのものです。ユーザーを作成したり、Office 365 のライセンスを与えたりといった用途で使用します。

それぞれの最新版と多要素認証の対応状況についてまとめると以下の通りです。

Azure PowerShell モジュール

  • V 0.9.8(2015/11/9 現在)
  • V 1.0 Preview 版公開中
    • ここからダウンロード
  • 既に MFA 対応済
  • Add-AzureAccount でログオンする

Azure AD PowerShell モジュール

  • 1.0.8362.1(2015/11/09 現在)
  • MFA に対応した V 1.0.8808.1 Preview が公開中
    • ここからダウンロード
  • Connect-MSOLService でログオンする

多要素認証がオンプレミスの MFA Server で制御されていても OK です。問題なく動作します。

ただし、AD FS で「証明書認証」を選択している場合、証明書の選択画面が表示されないという障害?が確認されています。

Azure PowerShell モジュールの場合、現在のバージョン情報を調べるには以下のように「プログラムと機能の追加」画面をみればOKです。

image

が、Azure AD PowerShell の場合、上の画面では 1.0.0 としか表示されず正確なバージョンは確認できません。そこで、少々不便なのですが、以下のPowerShell コマンドレットで調べることができます。以下は1行で入力してください。

何をやっているかと言えば、Microsoft.Online.Administration.Automation.PSModule.dll ファイルの FileVersionプロパティを見ているだけです。

(get-item  C:\Windows\System32\WindowsPowerShell\v1.0\Modules\MSOnline\
Microsoft.Online.Administration.Automation.PSModule.dll).VersionInfo.FileVersion

多要素認証を使用する場合の注意点は、Add-AzureAccount と Connect-MSOLService の両方でサポートされている –Credential パラメタです。このパラメタを使用すると、ユーザーIDとパスワードのペアを引数として使用することができます。

例えば、以下のように使用します。

PS C:\> $Cred = Get-Credential

image

PS C:\> Connect-MSOLService  -Credential  $Cred

こうすることで、認証用のダイアログボックスを表示させることなく認証を自動化することができます。フェデレーションが構成されていても問題ありません。

ただし、多要素認証が有効である場合は「Multi-Factor Authentication is Required」というエラーが表示されます。

これは、-Credential パラメタが多要素認証に対応していないためです。

なので、Azure Automation 等でアセットに資格情報を保存していても、そのアカウントに多要素認証をセットしてしまうと、スクリプトの冒頭で認証エラーが発生してしまうので注意してください。

これを回避する方法の1つとして考えられるのは、スクリプトを実行するネットワークを多要素認証の対象外に設定する方法なのです。AD FS ではクライアントのIPアドレスを取得することができますから、クレームルールを記述して多要素認証を回避してあげればよいわけです。

が、実際のところ、ちょっと面倒ではあります。。。

なので、自動化に使用するアカウントには「時限的」で「必要最小限」の管理権限を与えておき、多要素認証は使用しない。。。というのが現実的なところかと思います。

この「必要最小限の管理権限」については、以下に JIT Administration という方法が詳解されています。これについては別の機会に改めて解説します。

Weekend Scripter: Use PowerShell for JIT Administration and PAM – Part 1
http://blogs.technet.com/b/heyscriptingguy/archive/2015/05/23/weekend-scripter-use-powershell-for-jit-administration-and-pam-part-1.aspx


Comments (0)

Skip to main content