PowerShell – Exchange Onlineに証明書を使用して接続する –

こんにちは。サイオステクノロジーの木村です。

今後、Exchange Online の基本認証が廃止されます。
スクリプトなどで、以下のようにNew-PSSession コマンドなどを使用して資格情報を渡す方法にて非対話的に接続を行うことがあると思いますが、基本認証が廃止されるとこの方法は使用できなくなります。

(例)基本認証での接続

基本認証廃止後は先進認証での接続が必要になります。
今回は、Exchange Onlineへの非対話的接続を、Exchange Online PowerShell V2 モジュールで証明書を使用して行う方法について記載します。

Exchange Online PowerShell V2 モジュールのインストール

先進認証で接続するために、Exchange Online PowerShell V2 モジュールを使用します。
PowerShellを管理者で起動し、以下のコマンドを実行してインストールします。

 

アプリケーションの登録

Exchange Online PowerShell V2 モジュールのバージョン2.0.3以降では、ユーザー権限ではなくアプリケーションの権限を使用して Exchange Online へ接続できるようになりました。
アプリケーションの権限を使用して接続するため、以下の手順でAzureADアプリケーションを登録します。

1. Azureポータル(https://portal.azure.com/)にログインします。

2. メニューより「Azure Active Directory」をクリックします。

3. 「アプリの登録」をクリックし「+新規登録」をクリックします。

4. アプリケーションの登録ページで、以下を入力し「登録」をクリックします。

  • 名前:任意の名称
  • サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
  • リダイレクトURI(省略可能):Web、任意のURI


5. 表示された [アプリケーション (クライアント) ID] の値をメモしておきます。
「管理」の配下に表示されている「マニフェスト」をクリックします。

6. マニフェスト内の “requiredResourceAccess” を以下の値に書き換え、「保存」をクリックします。


7. 「管理」の配下に表示されている「APIのアクセス許可」をクリックします。

8. 「構成されたアクセス許可」に「Exchange.ManageAsApp」が表示されていることを確認します。
状態は、「<テナント名>に付与されていません。」と表示されます。
「+アクセス許可の追加」の右側に表示されている「<テナント名> に管理者の同意を与えます」をクリックします。

9. 「はい」をクリックします。

10. 状態が「<テナント名>に付与されました」と表示されます。
以上でアプリケーションの登録は完了です。

 

自己署名証明書の作成

Windows PowerShellにて自己署名証明書を作成します。PowerShellを起動し、以下のコマンドを実行します。

(例)

 

証明書をアプリケーションに登録

作成した証明書をAzureADアプリケーションに登録します。以下の手順で行います。

1. Azureポータルにて、上記『アプリケーションの登録』で登録したアプリケーションを表示します。
「管理」の配下に表示されている「証明書とシークレット」をクリックします。

2. 「証明書のアップロード」をクリックします。

3. 上記『自己署名証明書の作成』にてPowerShellで作成したCERファイルを選択して「追加」をクリックします。

4. 証明書が追加されます。

 

AzureADの役割のアプリケーションへの割り当て

アプリケーションに役割を割り当てます。以下の手順で行います。

1. 管理ポータルにて、メニューより「Azure Active Directory」をクリックします。

2. 「管理」の配下に表示されている「ロールと管理者」をクリックします。

3. 「Exchange管理者」をクリックします。

4. 「+割り当ての追加」をクリックします。

5. 上記『アプリケーションの登録』で作成したアプリケーションを名前で検索し、クリックします。

6. アプリケーションが選択されていることを確認し、「追加」をクリックします。

7. Exchange管理者の役割がアプリケーションに割り当てられます。

 

Exchange Onlineへの接続

現在、Exchange Onlineへ証明書を使用して接続する方法には、以下の3つがあります。

  • ローカル証明書(PFXファイル)を使用する方法
  • 証明書の拇印を使用する方法
  • 証明書オブジェクトを使用する方法

ローカル証明書(PFXファイル)を使用する方法

PFXファイルを読み込んで接続します。

PowerShellを起動し、以下のコマンドを実行します。
(<登録したアプリのアプリケーション (クライアント) ID> は、上記『アプリケーションの登録』の 5. の手順でメモした値です。)

(例)

証明書の拇印を使用する方法

証明書の拇印を指定して証明書ストアから読み込んで接続します。コマンドを実行しているコンピューターに証明書がインストールされている必要があります。

PowerShellを起動し、以下のコマンドを実行します。

(例)

証明書オブジェクトを使用する方法

証明書オブジェクトを指定して接続します。
以下の例では、証明書ストアから証明書を読み込んでいますが、証明書オブジェクトを使用する方法の場合、必ずしもコマンドを実行しているコンピューターに証明書をインストールする必要はありません。証明書オブジェクトがリモートに保存されている場合にも使用できます。
例えば、Azure Key Vault を使用する時などにこちらの方法を使用します。

PowerShellを起動し、以下のコマンドを実行します。

(例)

 

PowerShell セッションの切断

Exchange Onlineへの接続を行った後、リモート PowerShell セッションを切断するには以下のコマンドを実行します。

確認プロンプトや通知テキストなしでセッションを切断するには、以下のようにオプションをつけて実行します。

 

最後に

基本認証で Exchange Online に接続しているという方は、是非証明書での接続方法をお試しください!





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*