こんにちは、阿部です。
前回は、Cortex CloudのOutpost環境をAWSで作成する記事を投稿しましたが、今回はAzureでOutpost環境を作成する場合について書いていきます。
Cortex Cloudには下記表の通りスキャンモードが2つあり、クラウド環境のオンボード時にどちらかを選択する仕様になっています。
今回は「Scan With Outpost」の方を選択してAzureサブスクリプションをCortex Cloudにオンボードする方法を実際に試していきたいと思います。
| スキャンモード | 説明 | 備考 |
| Cloud Scan | スキャンをPaloAltoNetwoks社所有のCortex Cloud環境から実行 ※推奨はCloud Scan |
■メリット ・スキャナーVM等のリソースはCortex Cloudの環境に作成されるため追加コストが発生しない ・オンボード時のエラー発生が比較的少ない ■デメリット ・スキャンされたデータがCortex Cloudのクラウドアカウント環境へ一時的に置かれるため、データを自社環境外に持ち出せない要件には不向き |
| Scan With Outpost | ユーザーが所有するクラウドアカウントにOutpost環境を作成し、Outpost環境からスキャンを実行 | ■メリット ・スキャナーVM等のリソースもユーザーが所有するクラウドアカウント上に作成するため、データが外部環境に置かれることがない ■デメリット ・Outpost環境専用のクラウドアカウントの用意が別途必要 ・Outpost環境用の追加コストが発生 |
「Scan With Outpost」モードでオンボードするためには、事前にOutpost環境を作成しておく必要があります。
そのため、以下の流れで作業を進めます。
- Outpost環境の作成
- 監視対象となるAzureサブスクリプションのオンボード用テンプレートファイルの発行
- 監視対象となるAzureサブスクリプションでのオンボード作業
Outpost環境の作成
まず、Outpost環境の作成から実施します。
Outpostの前提条件
- Outpostを作成するクラウドアカウントは、Outpost専用のクラウドアカウントが必要です。Outpost専用のクラウドアカウントでは、他のリソースが使用されていない状態である必要があります。
また、Azureの場合、監視対象となるAzureサブスクリプションとOutpost環境は同じAzure組織に属している必要があります。 - クラウドアカウントには、1つのOutpostのみをホストできます。
- Outpostを利用するには、クラウドプロバイダーからの追加許可が必要となり、追加のクラウド費用が発生する場合があります。
参考:https://docs-cortex.paloaltonetworks.com/r/Cortex-CLOUD/Cortex-Cloud-Posture-Management-Documentation/Outposts
事前準備
Outpost環境の作成は、Terraformで実行します。そのため、以下を準備する必要があります。
- ローカルマシンにTerraformをインストール
- ローカルマシンにAzure CLIをインストール
- Azure CLIの実行に使用するAzureアカウント
- リソースを作成する以下の権限を上記アカウントに付与
・Outpostを作成するサブスクリプションの「所有者」または「共同作成者」権限
・Entra IDのクラウド アプリケーション管理者」または「アプリケーション管理者」権限
TerraformのテンプレートファイルはCortex Cloudコンソール上からダウンロードします。
また、Azureの場合はTerraform実行時に以下のパブリックIPの入力を求められるため、事前に確認しておく必要があります。
- PaloAltoNetworks社の環境のIP(Cortex Cloudテナントが存在するリージョンのIP)
参照ページ:Enable access to required PANW resources - 作業者が使用している端末(Terraformを実行するローカルマシン)のパブリックIP
Terraformのインストール
以下の手順でTerraformをインストールします。
- 公式ページからTerraformをダウンロード
- ダウンロードしたファイルを解凍し、「terraform.exe」を以下のフォルダに配置
C:\Windows\System32 - PowerShellで以下のコマンドを実行し、バージョンが表示されることを確認できればインストール完了
# terraform version
Azure CLIのインストールおよび設定
以下の手順でAzureLIをインストールします。
- 公式ページの手順に従いAzure CLIをインストール
- PowerShellで以下のコマンドを実行し、バージョンが表示されることを確認できればインストール完了
# az –version
接続してみる
テンプレートファイルの発行
Outpost作成用のテンプレートファイルを以下の手順でダウンロードします。
Azureの場合、初回はAzureテナントの認証が必要となります。(過去に認証を行ったことのあるAzureテナントであれば再認証は不要)
- Cortex Cloudコンソールにログインする
- → [ → [ → [
- 画面右上の [ New Outpost ] → [ Azure ] をクリック
- Tenant IDを入力し、[ Approve in Azure ] をクリック

- Azureの認証画面に自動的に遷移するので、Outpostを作成するAzure環境の権限を持つアカウントで認証を実施
- [ 承諾 ] をクリックすると自動的にCortex Cloudの画面に遷移するので、Tenant IDの右側に緑色のチェックマークが表示されることを確認する

- Cloud Tag(作成するリソースに付与するタグ)を追加したい場合は [ + Add Tag ] からタグを追加する
※今回は特に追加せず進めます - [ Next ]をクリック
- [ Download Terraform ] をクリックしてファイルをダウンロードする
Terraformの実行
以下の手順でTerraformを実行し、Outpostを作成します。
- ダウンロードしたテンプレートファイルを任意のフォルダに配置し解凍する
- PowerShellを起動し、以下のコマンドを実行して解凍したフォルダへ移動する
# cd <解凍したフォルダ>
- 以下のコマンドを実行し、Azureへのログインを実施する
# az login
- 表示されたコードをコピーし、ログインURLをクリックする

- コピーしたコードを入力して「次へ」をクリックする

- Outpost環境を作成するサブスクリプションの権限を持っているアカウントを選択し、パスワード入力および必要な場合はMFA認証を実施し、[ 続行 ] をクリックする
- PowerShellに戻り、権限を持っているサブスクリプションの一覧が表示されるので、Outpost環境を作成するサブスクリプションのNo.を入力する。

- 以下のコマンドを実行し、「Terraform has been successfully initialized!」と出力されることを確認する。
# terraform init
- 作成するストレージアカウントへのアクセスを許可するパブリックIPの入力を求められるので、事前に確認しておいたパブリックIPをカンマ区切りで入力する。

- サブスクリプションIDの入力を求められるので、Outpost環境のサブスクリプションIDを入力する

- 以下のコマンドを実行する。
しばらく待つと「Only ‘yes’ will be accepted to approve. 」と表示されるので、「yes」を入力する。# terraform apply –var-file=template_params.tfvars - 「Apply complete! 」と表示されることを確認する。
Cortex Cloud上で確認
→ [ → [ → [
以上でOutpost環境の作成は完了です。
監視対象となるAzureサブスクリプションのオンボード用テンプレートファイルの発行
Outpost環境が作成できたら、監視対象のAzureサブスクリプションをオンボードするためのテンプレートファイル(Terraformスクリプト)を以下の手順で発行します。
- Cortex Cloudコンソールにログインする
- → [ Data Sources & Integrations
- 画面右上の [ + Add New ] → [ Azure ] → [ Add Another Instance ] をクリック
- 以下の通り選択し、「Show advanced settings」をクリック
項目名 設定値 備考 Scope 今回はAccountSubscriptionを選択 Scan Mode Scan With Outpost を選択 Tenant ID 監視対象サブスクリプションが属するテナントIDを入力 Choose Outpost 作成したOutpostを選択 作成したOutpostが選択肢として表示される - 詳細設定の各項目を入力・選択し、「Save」をクリック ※今回は基本デフォルトから変更せず進めました
項目名 説明 Instance Name オンボードする環境を示す任意の名前を入力 Scope Modifications ・全リージョン監視の場合は変更不要
・リージョンを絞る場合は「Modify Scope by Regions」を有効化して指定(Include)または除外(Exclude)するリージョンを選択Additional Security Capabilities 有効にする機能を選択 Cloud Tags 追加するとCortex Cloud用に作成するAzure側リソースにタグを追加で付与可能 Collect Audit Logs ・デフォルト(Use Automated collection)だとCortex Cloud用にEventHUB等が新規作成される
・Custom (user defined)を選択すると既存のEventHUBを指定可能 - [ Download CloudFormation ] をクリックし、テンプレートファイルをダウンロードする
以上で監視対象のオンボード用テンプレートファイルの発行は完了です。
監視対象となるAzureサブスクリプションでのオンボード作業
発行したTerraformスクリプトを監視対象のAzureサブスクリプションで実行してCortex Cloudにオンボードします。
Terraformスクリプトの実行
- 監視対象のAzureサブスクリプションに前提条件となる権限を持っているアカウントでAzure Portalにログイン
- CloudShellのアイコンをクリック

- Cloud Shellが表示されたら、以下のコマンドを実行し、オンボード用のディレクトリを作成
# mkdir -p <任意のディレクトリ名>
- [ ファイルの管理 ] > [ アップロード ] をクリックし、テンプレートファイルをアップロード

- 以下のコマンドを実行し、アップロードしたファイルを作成したディレクトリに移動
# mv <アップロードしたファイル名> <作成したディレクトリ名>/.
- 以下のコマンドを実行し、ディレクトリを移動してアップロードしたファイルが存在することを確認
# cd <作成したディレクトリ名># ls -la
- 以下のコマンドを実行し、アップロードしたファイルを解凍
# tar xvzf <アップロードしたファイル名>
- 以下のコマンドを実行し、「Terraform has been successfully initialized!」と表示されることを確認
# terraform init
- 以下のコマンドを実行する
# terraform apply –var-file=template_params.tfvars
- 「var.resource_group_location ~ Enter a value:」という表示が出たら、Cortex Cloud用のリソースグループを作成するリージョンを入力
※オフボード時にも同じ値を入力する必要があるため、入力した値を控えておくこと。

- 「var.subscription_id ~ Enter a value:」という表示が出たら、監視対象のAzureサブスクリプションのサブスクリプションIDを入力

- 少し待つと、「Do you want to perform these actions? ~ Enter a value:」と表示されるので、「yes」と入力
- 「Apply complete!」と表示されることを確認
Terraformスクリプトの実行が完了すると、作成されたリソース情報がCortex Cloudに通知される仕組みとなっています。
これでAzureサブスクリプション側での作業は完了です。
Cortex Cloud上で確認
→ [ Data Sources & Integrations
以上で「Scan With Outpost」モードでのAzureサブスクリプションのオンボード作業がすべて完了しました。
まとめ
今回は、Outpost環境の作成からScan With OutpostモードでのAzureサブスクリプションのオンボードまで確認できました。
次回以降もCSPMに関する記事を投稿できればと思います。
また、当社では、複数クラウド環境の設定状況を自動でチェックし、設定ミスやコンプライアンス違反、異常行動などのリスクを診断するCSPMソリューションを販売しております。
ご興味のある方は是非、お気軽にお問い合わせください。



