1 ボックス開発環境のセキュリティ保護
この記事では、ワンボックス開発環境をセキュリティで保護する方法について説明します。
ワンボックス開発環境は、ご利用の Azure サブスクリプションに配置された Microsoft Azure リソースで構成されます。
ワンボックス開発環境を配置すると、次の Azure リソースが配置されることが想定されます:
- 1 仮想マシン (VM)
- 5 ディスク
- 1 ロード バランサー
- 1 通常のネットワーク インターフェイス
- 1 ネットワーク セキュリティ グループ
- 1 仮想ネットワーク
- 1 パブリック IP アドレス
- 1 ストレージ アカウント
- 製品バイナリのストレージが "dyn" ではじまる 1 つ以上の追加ストレージ アカウント
これらの Azure リソースは独自に管理されるため、組織に固有のセキュリティおよびコンプライアンス要件に準拠する必要がある場合があります。 また、Microsoft Developer や Azure Well-Architected のセキュリティ評価などのソースからの推奨事項は、ワンボックス開発環境に適用される場合があります。 この記事では、ワンボックス環境を最適に保護するための判断に役立つ、これらの推奨事項について説明します。
既定コンフィギュレーション
初期状態では、ワンボックス開発環境には次の基本的なセキュリティ構成があります:
- VM の管理ポートは、Microsoft Dynamics Lifecycle Services の IP アドレスに制限されます。 このような制限は、環境のリソース グループ内のネットワーク セキュリティ グループで確認できます。 Lifecycle Services は、Windows Remote Management (WinRM) 管理ポート (5986) を使用して、環境の初期構成を行い、Lifecycle Services からパッケージを配置するなどの操作を可能にします。
- リモート デスクトップ プロトコル (RDP) は、ワンボックス環境にアクセスするための主要な方法の 1 つです。 したがって、RDP ポート (3389) は既定で許可されます。 RDP アクセスは、ネットワーク セキュリティ グループの独自のクライアント IP アドレスに制限することができます。 ベスト プラクティスとして、配置後はアクセスが必要なクライアントに対し、RDP アクセスを制限する必要があります。 顧客は、Azure Bastion などの他の Azure テクノロジを使用して、RDP アクセスを安全に取得することも検討できます。
- ポート 443 では、ワンボックス環境には、HTTPS トラフィック用に公開されているパブリック エンドポイントがあります。 このエンドポイントは環境 URL で使用され、VM で実行される製品自体へのアクセスを提供します。 既定では、エンドポイントはインターネットに公開されます。 サイトへのサインインには認証が必要ですが、ベスト プラクティスとして、それを必要とするクライアントにポート 443 へのアクセスを制限する必要があります。 この構成は組織に固有のものであり、環境の配置後に定義する必要があります。
- ストレージ アカウントは、ドキュメント添付ファイルなど、SQL 以外のデータを格納するための環境に関連付けられています。 VM の構成ファイルには、環境がストレージ アカウントにアクセスできるように、暗号化フィールドのストレージ キーが含まれています。 製品機能の一部には、ストレージ アカウントが外部からアクセス可能である必要があるため、ストレージ アカウントにはパブリックにアクセスできる IP アドレスがあります。
- サブスクリプションの他のストレージ アカウント ("dyn" で始まる) を使用して、財務と運用コード パッケージをホストします。 また、このストレージ アカウントはパブリックにアドレス指定可能であり、Lifecycle Services が配置のためのコード パッケージにアクセスするために必要です。
カスタム仮想ネットワークへの配置
Lifecycle Services を使用すると、配置時にカスタム仮想ネットワークを選択できます。 これにより、ワンボックス環境の VM を事前構成済みの仮想ネットワークに直接配置できます。 ただし、カスタム仮想ネットワークを使用する場合は、Lifecycle Services 機能の機能を継続させ、環境の配置が成功するように、いくつかの点を考慮する必要があります。
- Lifecycle Services からの IP アドレスは、VM のポート 5986 にアクセスできる必要があります。 このポートは、Lifecycle Services からの環境を配置および管理するために必要です。
Lifecycle Services の地域インスタンス と IP
次の表に、Lifecycle Services の地域インスタンスを示します。
重要
これらの地域インスタンスは、プロジェクトと環境を管理するためにサインインする Lifecycle Services ポータルに対応します。 ポータルの場所は、開発環境を配置する地域とは異なる場合があります。
場所 | Lifecycle Services URL | Lifecycle Services IP アドレス |
---|---|---|
米国/パブリック | lcs.dynamics.com | 191.239.20.104 40.76.5.241 40.112.209.123 40.121.208.21 40.118.145.241 |
Azure Government/GCC | gov.lcs.microsoftdynamics.us | 20.141.106.7 20.141.192.69 |
Azure Government/GCC High | high.lcs.microsoftdynamics.us | 52.245.167.30 20.141.241.11 |
中国 | lcs.dynamics.cn | 40.73.5.94 40.73.64.218 40.112.209.123 40.121.208.21 |
ヨーロッパ | eu.lcs.dynamics.com | 40.114.140.114 40.115.104.173 |
フランス | fr.lcs.dynamics.com | 40.89.132.81 40.89.155.166 40.89.130.72 52.136.130.60 52.136.130.76 |
南アフリカ | sa.lcs.dynamics.com | 102.133.165.35 102.133.67.149 40.127.1.92 102.133.67.146 40.127.4.34 |
スイス | ch.lcs.dynamics.com | 51.103.133.142 51.103.146.43 51.103.138.255 51.107.226.123 51.107.224.152 51.107.224.175 |
アラブ首長国連邦 | uae.lcs.dynamics.com | 20.45.79.158 40.123.207.67 20.45.64.174 40.123.217.56 20.45.79.195 |
- 仮想ネットワークのネットワーク セキュリティ グループの外部で上位レベルのファイアウォールを使用している場合は、Lifecycle Services のソース IP アドレスから、より広範な受信ポートを許可する必要があります。 この要件が存在するのは、ロード バランサーが 50000-65535 の範囲のランダム化されたポートを、WinRM や RDP のポートなどの既知のポートにマップするように構成されているからです。 Lifecycle Services からの配置では、この範囲のポートにアクセスできる必要があります。
- HTTPS ポート (443) は、外部に公開する必要はなく、配置操作や管理操作時に使用されません。
- 発信インターネット アクセスは、仮想ネットワークから開いたままにしておく必要があります。 財務と運用アプリでは、さまざまな製品機能にインターネット アクセスが必要です。 例えば、認証には Microsoft Entra へのアクセスが必要です。
カスタム仮想ネットワークへの配置は、高度な構成です。 上記のガイダンスは、カスタム仮想ネットワークを正常に使用するために役立つ要件の概要として提供されます。 仮想ネットワークの構成が正しくない場合、Lifecycle Services からの配置または管理の操作ができない可能性があります。 したがって、カスタマイズが外部統合に与える影響を理解するようにしてください。
メモ
Microsoft サポートでは、さまざまなカスタマイズが考えられるため、カスタム構成に関する問題をトラブルシューティングできません。 トラブルシューティングの推奨事項は、既定の構成を既知の正常な構成として使用することです。 その後、その他の制限を段階的に適用し、必要なカスタム構成で問題を切り分けます。
セキュリティ アーキテクチャの推奨事項
Microsoft Defender と Azure Well-Architected のセキュリティ評価は、ワンボックス開発環境リソースを含む、サブスクリプションでプロビジョニングする Azure リソースに適用される一般的なセキュリティ ガイダンスを提供します。
推奨事項がユーザーと組織のポリシーに適しているかどうかを検討する場合は、上記のガイダンスに従うことが重要です。 たとえば、セキュリティ評価がこれらのポートへのアクセスを閉じることを推奨している場合でも、Lifecycle Services が環境を管理するために管理ポートにアクセスできる必要があります。 別の例として、ガイダンスでは、環境のストレージ アカウントへのネットワーク アクセスを制限することをお勧めします。 ただし、このような制限は、ファイルをダウンロードするために外部からアクセスできる必要のある、Microsoft Excel へのエクスポートなどの一部の統合シナリオを無効にします。 最後に、診断とテレメトリーのログに関する一部の推奨事項では、リソース 所有者がその推奨事項がニーズに適用できるかどうかを考慮する必要があるより多くの費用が発生する場合があります。
外部統合
ワンボックス開発環境は、追加機能用の Microsoft Entra テナントと統合できます。 これらの能力をいくつか次に示します。
- ユーザーのインポート。
- Microsoft Entra ID グループのインポート。
- 電子申告 (ER) 構成をインポートします。 ER 構成をインポートする方法の詳細については、Dynamics 365 Finance + Operations (on-premises) 環境と機能の有効化 を参照してください。
- WCF サービスを使用したレポートの実行
- データ タスクの自動化
これらの機能を使用するには、テナントへの証明書アクセスを構成する必要があります。
ノート
Microsoft Entra テナントへのアクセスを許可する場合は注意が必要です。 これらの機能が開発に必要でない限り、Microsoft ではテナントへの証明書アクセスを制限することをお勧めします。
2023 年 11 月 15 日の時点で、証明書は Microsoft Entra テナントは、デフォルトでは新しいワンボックス開発環境にインストールされなくなりました。 この変更は、このセクションで説明する外部統合に影響します。 この機能を再度有効にするには、次の手順を実行します。
この変更は、2023 年 11 月 15 日より前にデプロイされた開発環境には影響しません。 これらの証明書は必要に応じて削除できます。 手順については、この記事の よくある質問 セクションを参照してください。
ワンボックス開発環境で前述の機能を使用する必要がある場合は、次のセクションの手順に従って、新しいアプリケーションとテナント証明書をセットアップします。
新しいアプリケーションと証明書の登録をセットアップする
アプリケーションを作成します。 詳細については、クイックスタート : Microsoft ID プラットフォームにアプリケーションを登録する を参照してください。
クラウドホスト環境の仮想マシン (VM) に証明書をインストールします。
web.config ファイルの K:\AosService\webroot\ 下で、
Aad.Realm
キーの値をアプリケーションID/クライアント ID に置き換えます。Infrastructure.S2SCertThumbprint
キーとGraphApi.GraphAPIServicePrincipalCert
キーの値を、インストールされている証明書の拇印の値に置き換えます。<add key="Aad.Realm" value="spn:<your application ID>" /> <add key="Infrastructure.S2SCertThumbprint" value="<certificate thumbprint>" /> <add key="GraphApi.GraphAPIServicePrincipalCert" value="<certificate thumbprint>" />
K:\AosService\webroot\ の下にある wif.config ファイルで、顧客のEntra AppId の既存の値の下の
audienceUris
に新しいエントリを追加します。 spn:00000015-0000-0000-c000-000000000000 エントリは削除しないでください。<securityTokenHandlerConfiguration> <audienceUris> <add value="spn:00000015-0000-0000-c000-000000000000" /> <add value="spn:<your application ID>" /> </audienceUris>
Web App プラットフォームのアプリケーションのリダイレクト URI として環境 URL を追加します。 詳細については、リダイレクト URL の追加 を参照してください。
Web App プラットフォームのアプリケーションのリダイレクト URI として環境 OAUTH URL (EnvironmentURL/oauth) を追加します。
アプリケーションに API 権限を割り当てます。
API 権限 に移動し、権限の追加 を選択して、次の権限を追加します。
- Dynamics ERP : このアクセス許可は、財務および運用環境にアクセスするために必要です。
- Microsoftグラフ (User.Read.All および Group.Read.All 適用 の例 タイプ)
- Dynamics Lifecycleサービス (タイプのアクセス許可 削除)
クラウドホスト環境では、新しくインストールされた証明書のネットワーク サービスへの 読み取り アクセスを許可します。
AX DB の SQL クエリを使用して、LCS アクセス用にキャッシュされた構成をすべてクリアします:
DELETE FROM SYSOAUTHCONFIGURATION where SECURERESOURCE = 'https://lcsapi.lcs.dynamics.com' DELETE FROM SYSOAUTHUSERTOKENS where SECURERESOURCE = 'https://lcsapi.lcs.dynamics.com'
管理者コマンド プロンプトから IISRESET を実行します。
よくあるご質問
新たにプロビジョニングしたワンボックス開発環境では、Microsoft Defender と他のセキュリティ評価からのセキュリティ推奨事項があるのはなぜですか?
このような評価からの多くの推奨事項では、より費用が発生するかどうかを判断するために、リソース所有者の関与が必要です。 セキュリティ推奨事項の実装を評価する際は、この記事のガイダンスを検討する必要があります。
セキュリティ上のリスクを抑えるため、ワンボックス開発環境に対するネットワーク アクセスを制限する必要があります。 ネットワーク アクセスをブロックするにはどうすればよいですか?
- VM アクセスを制限するには、環境のリソース グループ内のネットワーク セキュリティ グループを使用します。 WinRM 管理ポート (5986) は、Lifecycle Services でのみアクセスできるように既に制限されています。 既定では、RDP ポート (3389) と HTTPS ポート (443) のネットワーク セキュリティ グループ ルールは、制限されません。 ただし、選択したクライアント IP まで制限できます。
- 財務と運用アプリが機能するには、発信インターネット アクセスを利用できる状態にしておく必要があります。
- 環境の Azureストレージ アカウントはアクセスを制限できますが、VM のパブリック IP アドレスと承認されたクライアントの IP アドレスでアクセス可能な状態を維持する必要があります。 アクセスを正しく許可しないと、ストレージ機能に依存する財務と運用機能は失敗します。
カスタム仮想ネットワークを使用してプロビジョニングしようとすると、配置が失敗します。 Microsoft は何が間違っているのかを教えてくれますか?
この記事の カスタム仮想ネットワークへの配置 セクションでは、お使いの環境での Azure リソースのネットワーク アクセス要件の一覧が示されます。 残念ながら、Microsoft サポートでは、さまざまな構成が考えられるため、カスタム ネットワーク構成をトラブルシューティングできません。 トラブルシューティングの推奨事項は、既定の構成を既知の正常な構成として使用することです。 その後、その他の制限を段階的に適用し、必要なカスタム構成で問題を切り分けます。
2023 年 11 月 15 日より前にデプロイした開発環境があります。 何らかのアクションを実行する必要がありますか?
開発環境がそのまま機能し続けるために何もする必要はありません。 ただし、Microsoft は顧客に対し、テナントのセキュリティ露出を制限することを推奨し、必要でない場合はこの証明書を削除することを推奨しています。 この証明書を必要とする機能領域については、外部統合 セクションを参照してください。
必要に応じて、テナントのサービス プリンシパルから Dynamics ERP アプリケーション証明書を削除するには、ワンボックス開発 VM のいずれか1つから次の手順を実行します。
Lifecycle Servicesで、共有アセット ライブラリからオンプレミス展開用のインフラストラクチャ スクリプトのバージョン 2.19.1 以降をダウンロードします。 このアセットは、グローバルおよび EU ライフサイクル サービス リージョンで利用できます。 スクリプトの取得に関する詳細については、Finance + Operations (on-premises) 配置のインフラストラクチャ スクリプトの取得 を参照してください。
S2S 証明書の拇印を見つけます。 次の手順でスクリプトを実行するときに、このサムプリントを指定する必要があります。 これを見つけるには、K:\AosService\webroot\ の下にある web.config ファイルを開き、
Infrastructure.S2SCertThumbprint
キーを探します。次の PowerShell スクリプトを実行して、サービス プリンシパルから証明書を削除します。
.\Remove-CertFromServicePrincipal.ps1 -CertificateThumbprint <thumbprint of your S2S certificate>
証明書がサービス プリンシパルに対して登録されているかどうかが不明な場合は、次の PowerShell スクリプトを実行してこの事実を検証できます。
.\Remove-CertFromServicePrincipal.ps1 -CertificateThumbprint <thumbprint of your S2S certificate> -Test
アカウントが複数のテナントにアクセスできる場合は、次の PowerShell スクリプトを実行して、操作を実行するテナントを指定できます。
.\Remove-CertFromServicePrincipal.ps1 -CertificateThumbprint <thumbprint of your S2S certificate> -Tenant <your tenant ID>