証明書ベースの認証またはアプリ専用の認証の設定
アプリケーションオブジェクトを使用した認証には、初期オンボーディングが必要です。アプリケーションとサービスのプリンシパルは相互に代替できます。ただし、アプリケーションはクラスオブジェクトのようなものですが、サービスのプリンシパルはクラスのインスタンスのようなものです。
Azure Active Directory におけるアプリケーションとサービスプリンシパルのオブジェクトの詳細については、「Application and service principal objects in Azure Active Directory (Azure Active Directory のアプリケーションとサービスプリンシパルのオブジェクト)」を参照してください。Azure AD でのアプリケーション作成に関する詳細な視覚的フローについては、「Create an Azure Active Directory application and service principal that can acess resources (リソースにアクセスできる Azure Active Directory アプリケーションとサービスプリンシパルの作成)」を参照してください。
- Azure AD でアプリケーションを登録します。
- アプリケーションに API 権限を割り当てます。
アプリケーションオブジェクトがリソースにアクセスするには、アプリケーション権限
Exchange.ManageAsAppとMail.ReadWriteが必要です。 - 自己署名証明書を生成し、秘密キーへのアクセス権を付与します。
自己署名 X.509 証明書を作成して構成します。これは、アプリ専用アクセストークンを要求するときに、Azure AD に対してアプリケーションを認証するために使用します。次世代 (CNG) 証明書は、Exchange を使用したアプリ専用の認証ではサポートされていません。CNG 証明書は、最新の Windows バージョンではデフォルトで作成されます。CSP キープロバイダーからの証明書を使用する必要があります。
(-Provider = 'Microsoft Strong Cryptographic Provider')。 - 証明書を Azure AD アプリケーションに添付します。
- アプリケーションに Azure AD ロールを割り当てます。
アプリケーションには、
コンプライアンス管理者Azure AD のロールが割り当てられている必要があります。 - 新しいサービスプリンシパルを作成します。
ステップ 1:Azure AD でアプリケーションを登録する
- Azure AD ポータルを開きます。
- ページの上部にある [検索] ボックスに、「アプリの登録」と入力します。
- [サービス] セクションの結果から [アプリの登録] を選択します。
または、https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade を使用して [アプリの登録] ページに移動することもできます。
- [アプリの登録] ページで、[新規登録] を選択します。
- [アプリケーションの登録] ページで、次の設定を構成します。
フィールド 説明 名前 わかりやすい名前を入力します。例:ExO PowerShell CBA。 サポートされているアカウントの種類 [この組織のディレクトリ内のアカウントのみ (<自分の組織名> のみ - シングルテナント) (Accounts in this organizational directory only (<YourOrganizationName> only - Single tenant))] が選択されていることを確認します。 Exchange Online の委任されたシナリオでアプリケーションをマルチテナントにするには、[任意の組織ディレクトリ (任意の Azure AD ディレクトリ - マルチテナント)(any organizational directory (Any Azure AD directory - Multitenant))] 内の [アカウント] 値を選択します。
- アプリの登録が完了したら、[登録] を選択し、アプリのページを閉じます。
ステップ 2:アプリケーションに API 権限を割り当てる
このセクションの手順では、新しいアプリに対して自動的に構成されたデフォルトのアクセス権限が置き換えられます。置き換えられたデフォルトのアクセス権限は、アプリに必要ありません。
- アプリのページで、[管理] の [マニフェスト] を選択します。
- [マニフェスト] ページで、
requiredResourceAccessエントリを探します (およそ 47 行目)。 - 次のコードスニペットに示すように、
resourceAppId、resourceAccess id、およびresourceAccess typeの値を変更します。"requiredResourceAccess": [ { "resourceAppId": "00000002-0000-0ff1-ce00-000000000000", "resourceAccess": [ { "id": "dc50a0fb-09a3-484d-be87-e023b12c6440", "type": "Role" } ] }, { "resourceAppId": "00000003-0000-0000-c000-000000000000", "resourceAccess": [ { "id": "e2a3a72e-5f79-4c64-b1b1-878b674786c9", "type": "Role" } ] } ], - [保存] を選択します。
- [マニフェスト] ページで、[管理] の [API 権限] を選択します。
- [API 権限] ページで、フィールドに入力します。
フィールド 説明 API / Permissions name (API/権限の名前) 値 Exchange.ManageAsAppとMail.ReadWriteが表示されていることを確認します。ステータス 現在は [<組織> に付与されません]という正しくない値であるため、この値を変更する必要があります。 [<組織> に管理者の同意を付与する] を選択し、表示される確認ダイアログを読んで、[はい] を選択します。
これで、[ステータス] の値が [<組織> に付与] になりました。
- ブラウザーのタブではなく、現在の API アクセス権のページを閉じて、アプリの登録ページに戻ります。
ステップ 3:自己署名証明書を生成し、秘密キーへのアクセス権を付与する
- 昇格された Windows PowerShell セッションで New-SelfSignedCertificate、Export-Certificate、および Export-PfxCertificate コマンドレットを使用して (管理者として実行)、自己署名証明書を要求し、
.cerおよび.pfx(デフォルトでは SHA1) にエクスポートします。例:# Create certificate $mycert = New-SelfSignedCertificate -DnsName "snowsecops.onmicrosoft.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(2) -KeySpec KeyExchange -Provider "Microsoft Strong Cryptographic Provider" # Generate password fro private key $mypwd = ConvertTo-SecureString -String '<password>' -Force -AsPlainText # Export certificate to .pfx file $mycert | Export-PfxCertificate -FilePath mycert.pfx -Password $mypwd # Export certificate to .cer file $mycert | Export-Certificate -FilePath mycert.cer - 次の手順を使用して、MID サービスユーザーに秘密キーのアクセス権を提供します。
- MMC (Microsoft 管理コンソール) を開きます。
- Microsoft 管理コンソール (MMC) から、次の場所に移動します。 .
(MMC にメニュー項目がない場合は、 .
- 生成した証明書を右クリックします。
- 展開
- [MID サービスユーザー (MID service user)] をアクセサーリストに追加します。
ステップ 4:証明書を Azure AD アプリケーションに添付する
- ステップ 2 の最後にある [アプリの登録] ページの [所有アプリケーション] タブから、アプリケーションを選択します。
[アプリの登録] ページに戻る必要がある場合は、https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/%7E/RegisteredApps を使用して、[所有アプリケーション] タブが選択されていることを確認し、アプリケーションを選択します。
- [管理] で、[証明書 & シークレット] を選択します。
- 開いた [証明書 & シークレット] ページで、[証明書をアップロード] を選択します。
- ステップ 3 で作成した自己署名証明書 (
.cerファイル) を参照します。 - 完了したら、[追加] を選択します。
証明書が [証明書] セクションに表示されています。
CertificateThumbPrintを書き留めて、現在の [証明書 & シークレット] ページを閉じます。
ステップ 5:アプリケーションに Azure AD ロールを割り当てる
- Azure AD ポータルを開きます。
- ページ上部の [検索] フィールドで、[ロールと管理者 (Roles and Administrators)] を探します。
- [サービス] セクションの結果から [Azure AD のロールと管理者 (Azure AD roles and administrators)] を選択します。
または、https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade を使用して [Azure AD のロールと管理者 (Azure AD roles and administrators)] ページに移動することもできます。
- [Azure AD のロールと管理者 (Azure AD roles and administrators)] ページで、チェックボックス内ではなく、結果内のロールの名前をクリックして、サポートされているロールのいずれかを見つけて選択します。
[コンプライアンス管理者] ロールを探して選択します。
- [割り当て] ページで、[割り当ての追加 (Add assignments)] を選択します。
- [割り当ての追加 (Add assignments)] ポップアップで、ステップ 1 で作成したアプリを探して選択します。
- 完了したら、[追加] を選択します。
- [割り当て] ページに戻り、ロールがアプリに割り当てられていることを確認します。
ステップ 6:新しいサービスプリンシパルを作成する
- 次の変数で以下のコマンドを実行して、ステップ 1 で登録した Azure アプリケーション (
<AppName>) の詳細を保存します。Install-Module -Name AzureAD Import-Module -Name AzureAD Connect-AzureAD $AADApp = Get-AzureADServicePrincipal -SearchString"<AppName>"構文とパラメーターの詳細については、「Get-AzureADServicePrincipal」を参照してください。
- 同じ PowerShell ウィンドウで、Security & Compliance PowerShell に接続します。
Import-Module ExchangeOnlineManagement Connect-IPPSSession -CertificateThumbPrint "<Your_Certificate_ThumbPrint>" -AppID $AADApp.AppId -Organization "<Your_organization>次のコマンドを実行して、Azure アプリケーションのサービスプリンシパルオブジェクトを作成します。New-ServicePrincipal -AppId $AADApp.AppId -ObjectId $AADApp.ObjectId -DisplayName "<Descriptive Name>"構文とパラメーターの詳細については、「New-ServicePrincipal」を参照してください。