EXO V2 モジュールの無人スクリプト用のアプリ専用の認証

Note

この機能と、2.0.3EXO V2 モジュールの必要なバージョンが通常使用できるようになりました。モジュールのこのバージョンをインストールまたは更新する方法の詳細については、「EXO V2 モジュールをインストールして管理する」を参照してください。

Exchange Online の監査とレポートのシナリオには、多くの場合、無人で実行するスクリプトが含まれます。ほとんどの場合、これらの無人スクリプトは、ベーシック認証 (ユーザー名とパスワード) を使用して Exchange Online PowerShell にアクセスします。Exchange Online PowerShell への接続で先進認証を使用している場合でも、資格情報は実行時にアクセスされるローカルファイルまたはシークレット ボルトに格納されます。

ユーザーの資格情報をローカルに保存するのは安全な方法ではないため、AzureAD アプリケーションと自己署名証明書を使用した無人スクリプト (自動化) シナリオの認証をサポートする機能をリリースいたします。

次の例では、アプリ専用の認証により Exchange Online PowerShell V2 モジュールを使用する方法を示します:

  • ローカルの証明書を使用して接続する:

    Connect-ExchangeOnline -CertificateFilePath "C:\Users\johndoe\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<My Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    
  • 証明書の拇印を使用して接続する:

    Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    

    CertificateThumbPrint パラメーターを使用する場合、コマンドを実行しているコンピューターに証明書をインストールする必要があります。証明書はユーザーの証明書ストアにインストールされます。

  • 証明書オブジェクトを使用して接続する:

    Connect-ExchangeOnline -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    

    証明書 の パラメーターを使用する場合、そのコマンドを実行しているコンピューターに証明書をインストールする必要はありません。このパラメーターは、スクリプトの実行時に証明書オブジェクトがリモートに保存され、実行時にフェッチされるシナリオに適用されます。

どのような仕組みですか?

EXO V2 モジュールは、Active Directory の認証ライブラリを使用して、アプリケーション ID、テナントID (組織)、および証明書の拇印を使用して、アプリのみのトークンを取得します。Azure AD 内にプロビジョニングされたアプリケーション オブジェクトには、アクセス トークンで返されるディレクトリの役割が割り当てられています。Exchange Online は、トークンで使用可能なディレクトリの役割情報を使用して、セッション RBAC を構成します。

アプリ専用の認証をセットアップする

初期のオンボードは、アプリケーション オブジェクトを使用する認証に必要です。アプリケーションとサービス プリンシパルは同義に使用されますが、アプリケーションはクラスオ ブジェクトに似ています。一方サービス プリンシパルはクラスのインスタンスと似ています。詳細については、「Azure Active Directory の アプリケーションとサービス プリンシパル オブジェクト」を参照してください。

Azure AD でのアプリケーションの作成に関する詳しい視覚的なフローは、https://aka.ms/azuread-app を参照してください。

  1. https://portal.azure.com で Azure AD にアプリケーションを登録します。

  2. Exchange Online にアクセスするためのアクセス許可を割り当てます。

    アプリケーション オブジェクトは規定のアクセス許可User.Readを持っています。アプリケーション オブジェクトが Exchange Online のリソースにアクセスするには、アプリケーション アクセス許可Exchange.ManageAsAppが必要です。

  3. 証明書を添付します。

    • Azure AD でのアプリ専用認証として、典型的にはアクセスを要求する証明書を使用します。証明書とそのプライベート キーを持っている人は誰でも、アプリを使用でき、そのアプリのアクセス許可も与えられています。

    • 自己署名された X.509 の証明書を作成して設定します。この証明書は、アプリ専用アクセス トークンを要求しながら Azure AD に対してアプリケーションを認証するために使用されます。

    • これは、ユーザー アカウントのパスワードを生成するのと似ています。証明書も自己署名できます。PowerShell で証明書を生成する手順については、このトピックの後半の「付録 」セクションを参照してください。

      Note

      暗号化: 次世代 (CNG) 証明書は、Exchange でのアプリのみの認証用にサポートされていません。CNG 証明書は、既定では、最新の Windows バージョンで作成されます。CSP キー プロバイダーからの証明書を使用する必要があります。CSP 証明書を作成するための 2 つのサポートされた方法については、[付録 ] セクションを参照してください。

  4. RBAC の役割を割り当てる

    アプリケーションには、適切な RBAC の役割が割り当てられている必要があります。アプリは Azure AD でプロビジョニングされるので、組み込みの役割のいずれかを使用できます。サポートされる役割は次のとおりです。

    • 全体管理者
    • コンプライアンス管理者
    • セキュリティ閲覧者
    • セキュリティ管理者
    • ヘルプデスク管理者
    • Exchange 管理者
    • グローバル閲覧者

付録

手順 1: Azure AD でのアプリケーション登録

問題が発生した場合は、必要なアクセス許可 を確認して、アカウントが ID を作成できることを確認します。

  1. https://portal.azure.com/で Azure AD ポータルに移動し、Azure AD アカウントでサインインします。

  2. [Azure Active Directory の管理] で、 [表示] をクリックします。

  3. [管理] の下で、 [アプリの登録] を選択し [新規登録] をクリックします。

  4. [アプリケーションの登録] ページが表示されたら、次の設定を構成します:

    • 名前 : 分かりやすい名前を入力します。

    • サポートされているアカウントの種類 : この組織のディレクトリ内のアカウントのみ (<YourOrganizationName> のみ - シングル テナント)

    • リダイレクト URI (省略可能) : 最初のボックスで、[ Web ] を選びます。2番目のボックスに、アクセストークンの送信先 URI を入力します。

      ネイティブ アプリケーション の資格情報を作成できないのは、自動化されたアプリケーションにはそのタイプを使用できないためです。

    アプリケーションを登録する

    完了したら、 [登録] をクリックします。

    表示されるページは開いたままにします。次の手順で使用します。

手順 2: アプリケーションに API アクセス許可を割り当てる

アプリケーションが Exchange Online を管理できるように、API アクセス許可Exchange.ManageAsAppを割り当てる必要があります。API アクセス許可が必要なのは、 同意フローが有効になり、それによって監査が許可されるからです(ディレクトリーの役割には同意フローがありません)。

  1. [API アクセス許可] を選択します。

  2. 表示された [構成されたアクセス許可] ページで、 [アクセス許可の追加] をクリックします。

  3. 表示されたポップアップで、 [Exchange] を選択します。

    Exchange API アクセス許可を選択する

  4. 表示されたポップアップで、 [アプリケーションのアクセス許可] をクリックします。

  5. ページに表示される [アクセス許可の選択] セクションで、 [Exchange] を展開し、 [Exchange.ManageAsApp] を選択します

    Exchange.ManageAsApp permssions を選択する

    完了したら、 [アクセス許可の追加] をクリックします。

  6. 表示された [構成されたアクセス許可] ページに戻り、 [管理者の同意を<tenant name>に与える] をクリックして、表示されるダイアログ ボックスで [はい] を選択します。

  7. 完了したら、ポップアップを閉じます。

手順 3: 自己署名証明書を生成する

次のいずれかの方法で、自己署名 x.509 証明書を作成します:

# Create certificate
$mycert = New-SelfSignedCertificate -DnsName "example.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange

# Export certificate to .pfx file
$mycert | Export-PfxCertificate -FilePath mycert.pfx -Password $(ConvertTo-SecureString -String "1234" -Force -AsPlainText)

# Export certificate to .cer file
$mycert | Export-Certificate -FilePath mycert.cer
  • Create-SelfSignedCertificate scriptを使用します。このスクリプトは SHA1 証明書を生成します。

    .\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2020-04-01 -EndDate 2022-04-01
    

手順 4: Azure AD アプリケーションに証明書を添付する

アプリケーションに証明書を登録したら、認証のために公開鍵 (.pfx ファイル) または拇印を使用できます。

  1. Azure AD ポータルの [Azure Active Directory の管理] で、 [表示] をクリックします。

  2. [管理] の下で [アプリの登録] を選択します。

  3. [アプリの登録] ページが表示されたら、アプリケーションを選択します。

  4. [管理] の下で [証明書とシークレット] を選択します。

  5. 表示された [証明書とシークレット] ページで、 [証明書のアップロード] をクリックします。

    [証明書のアップロード] をクリックする

  6. 表示されるダイアログボックスで、前の手順で作成した自己署名証明書 (.cer ファイル) を参照し、 [追加] をクリックします。

手順 5: アプリケーションに役割を割り当てる

Azure AD では、50 以上もの管理者の役割が利用可能です。Exchange Online でのアプリ専用認証については、現在では以前述べた役割をサポートします:

  • 全体管理者
  • コンプライアンス管理者
  • セキュリティ閲覧者
  • セキュリティ管理者
  • ヘルプデスク管理者
  • Exchange 管理者
  • グローバル閲覧者
  1. Azure AD ポータルの [Azure Active Directory の管理] で、 [表示] をクリックします。

  2. [管理] の下で [ロールと管理者] を選択します。

  3. サポートされている役割のうち 1 つを選択します。表示された[ 割り当て ]ページで、[ 割り当ての追加 ] をクリックします。

  4. 表示される [割り当ての追加] ポップアップで、アプリケーションを見つけて選択し、 [追加] をクリックします。

    役割の割り当てを追加する