エージェントコードセキュリティ設定の一部として使用するMicrosoft Foundry リソースを作成します。 Microsoft Foundryは、MDASHがエージェントスキャン時に使用するAIモデルをホストし、サービスを提供しています。
Prerequisites
- アクティブなサブスクリプションを持つ Azure アカウント。 お持ちでない場合は、 無料試用版サブスクリプションを含む無料の Azure アカウントを作成します。
- サブスクリプションやリソースグループで Owner など、Foundryリソースを作成できる役割へのアクセス。 アクセス許可の詳細については、Microsoft Foundry のロールベースのアクセス制御に関するセクションを参照してください。
Microsoft Foundry リソースを作成する
Microsoft Foundryプロジェクトを作成するには、以下の手順に従ってください。
- Microsoft Foundry にサインインします。
- ナビゲーションバーで 「New Foundry 」のトグルがオンになっているか確認してください。
- ドロップダウンで [新しいプロジェクトの作成] を選びます。
-
my-foundry-projectのようなProjectの名前を入力します。 - リソースグループとロケーションを設定する ために「詳細オプション 」を選択してください。
- リソース グループ: 新しいリソース グループを作成するか、既存のリソース グループを選択します。 新しいリソース グループを作成すると、プロジェクトとそのすべてのリソースをまとめて簡単に管理できます。
- 場所:プロジェクトを作成する地域を選択してください。
- プロジェクトの作成を選択します。
プロジェクトが作成されるまで待ちます。 プロジェクトの概要ページが表示されたら、プロジェクトの準備ができました。
認証方法
Microsoft DefenderポータルでのMDASHオンボーディング中、Microsoft Foundryリソースに対してMDASHがどのように認証されるかを選択するよう求められます。 オンボーディングを始める前にこのセクションを使って、どの認証方法を使うかを決め、必要な値、権限、設定ステップを準備してください。
MDASHはMicrosoft Foundryリソースへの接続のための2つの認証方法をサポートしています:キーレス(推奨)とAPIキーです。
キーレス(推奨)
ほとんどの顧客にはキーレス認証が推奨されています。 アクセス制御にはマネージドIDとRBACを使用し、Defenderにシークレットを保存せず、接続ライフサイクルからAPIキーのローテーションを除去します。
キーレス認証を使用するには、ワンタイムオンボーディングスクリプトを実行してください。 スクリプトを実行するために必要な最低権限は以下の通りです:
管理型アイデンティティのリソースグループに貢献し、マネージドアイデンティティおよびフェデレーテッドID認証を作成します。
Foundry アカウントのロールベースのアクセス制御管理者を、Foundry ユーザー ロールに割り当てます。
あるいは、FoundryアカウントとマネージドIDが同じリソースグループにある場合、そのリソースグループの所有者で十分です。 もし異なるリソースグループに属している場合は、両方のリソースグループでオーナーが必要です。
スクリプトを実行する際には、FoundryリソースIDを提供する必要があります。 FoundryリソースのAzureポータル(概要→JSON View → Resource ID)で見つけることができます
スクリプトが完了したら、Defenderオンボーディングフローで必要とされる生成値(テナントIDとマネージデンティティクライアントID)をコピーします。
API キー
APIキー認証はMicrosoft FoundryポータルからコピーしたAPIキーを使用します。 組織のセキュリティ要件に応じて、APIキーの保存、ローテーション、取り消しの責任を負います。
必要な値をコピーする
MDASHがFoundryプロジェクトに接続するために必要な値をコピーしてください。 必要な値は、Microsoft DefenderポータルでのMDASHオンボーディング時に選択した認証方法によって異なります。
プロジェクト エンドポイント
Project Endpointを見つけてコピーしてください。 Projectエンドポイントは両方の認証方法に必須です。
キーレス(推奨)
キーレス認証を使用する予定がある場合は、 認証方法 で説明されているワンタイムセットアップスクリプトを実行し、オンボーディングフローで要求された生成値(テナントIDとマネージドアイデンティティクライアントID)をコピーしてください。
API キー
APIキー認証を使う予定なら、APIキーを見つけてコピーしてください。
Foundryプロジェクトの ホームページ から、サービスがFoundryプロジェクトに接続するために必要な値をコピーしてください。
- Projectエンドポイントを見つけてコピーします。
- API キーを見つけてコピーします。
必要なモジュールをデプロイする
エージェント コード セキュリティ統合に必要なモデルをデプロイします。
- 上部のナビゲーション メニューから [ビルド ] に移動します。
- メニューからモデル、またはデプロイメントを選択します。
- 「デプロイメント」タブを選択してください。
- [ 基本モデルのデプロイ] を選択します。
- 既定またはカスタム設定を使用して、次のモデルを選択してデプロイします。
標準:3モデルすべてを一度だけ展開:
gpt-5.4gpt-5.3-codexgpt-5.4-miniMAI Cyber(プレビュー):この構成を使用するには、先に挙げた3つのモデルを展開し、以下の通りです:
MAI-Cyber-1-Flash
Important
統合を機能させるには、モデル デプロイの定義済みの一覧が必要です。
gpt-5.4、gpt-5.3-codex、gpt-5.4-miniの 3 つのモデルをすべてデプロイする必要があります。
必要なモデルを展開する際に カスタム設定 を使う場合は、 DataZoneBatch、 GlobalBatch、 DeveloperTierを選択しないようにしてください。
TPM レート制限を構成する
デプロイされた 3 つのモデルごとに、TPM レート制限を構成します。
- [モデル>デプロイ] に移動します。
- デプロイされたモデルを選択し、[ 編集] を選択します。
-
1 分あたりのトークンレート制限を
1,000,000以上に更新します。 - 保存を選びます。
- デプロイされたモデルごとに、これらの手順を繰り返します。
Note
各モデル展開には最低1,000,000トークン/分(TPM)が必要です。
同時スキャンを使用するには、3つの必要なモデル展開それぞれでTPMレート制限を少なくとも5,000,000に引き上げてください。 5,000,000 TPMの要件を超える高いTPM割り当ては、組織で利用可能な同時スキャン数を増やすことができます。 クォータ制限や追加容量の要求についての詳細は、Microsoft Foundry ModelsのAzure OpenAIのクォータとリミットをご覧ください。
コンテンツ フィルタリングを構成する
デプロイされたモデルが制限なく動作するようにコンテンツ フィルターを構成します。 Codename MDASH は、既定のフィルターによって有害と誤分類されてブロックされる可能性のあるセキュリティ コンテンツを送信するため、検出漏れが発生することがあります。 信頼性の高いスキャンには、最小フィルターしきい値が必要です。
Warning
コンテンツ フィルタリングの構成設定は、MDASH のスキャン シナリオ向けに意図的に緩やかに設定されています。 MDASH 専用の Microsoft Foundry エンドポイントを作成して使用します。 このエンドポイントは、他のワークロードには使用しないでください。
Prerequisites
- Microsoft Foundryリソースが作成され、必要なモデル展開が完了します。
コンテンツ フィルターを作成する
コンテンツフィルターを作成するには、以下の手順に従ってください:
- New Foundry のトグルをオフにしてください。
- Guardrails + Controls>Content フィルターに移動し、[コンテンツ フィルターの作成] を選択します。
-
[入力フィルター] の下:
- すべての重大度しきい値 (暴力、 ヘイト、 性的、 自傷行為) を可能な限り低いレベルに設定します。
- 脱獄用のプロンプト シールド と 間接攻撃用のプロンプト シールドをオフにします。
- [出力フィルター] で、同じ構成を適用します。すべてのカテゴリのしきい値を最小レベルに設定し、オフにできるオプションの保護 (テキストの保護素材、コードの保護された素材など) を無効にします。
- デプロイ手順で、コンテンツ フィルターを 3 つのモデルデプロイすべてに関連付けます。
- 概要を確認し、[ 作成 ] を選択してフィルターを適用します。
Codename MDASH に Microsoft Foundry リソースへのアクセスを許可する
コードネームMDASHは、認証情報を検証し、エージェントスキャンを実行するためにあなたの Microsoft Foundry エンドポイントにアクセスする必要があります。 Foundry リソース ネットワークが 選択されたネットワークとプライベート エンドポイントに設定されている場合、MDASH からの要求を含め、すべての受信トラフィックが既定でブロックされます。 必要な IP アドレスを許可しないと、MDASH オンボード中に Foundry リソースの検証が失敗します。 Foundryリソースのパブリックアクセスが 「すべてのネットワーク」に設定されている場合は、何の操作も不要で次のステップに進めます。
Codename MDASHがMicrosoft Foundryリソースにアクセスすることを許可するには、アクセスを設定するスクリプトを実行してください:
スクリプトを実行する
次のスクリプトを実行して、必要な IP アドレスを Foundry リソースに自動的に追加します。
スクリプトを実行する前に、次の点を確認します。
- Azure CLIがインストールされています。
-
jqがインストールされています。 - Azure CLIにサインインしています。
- 正しいAzure サブスクリプションが選択されています。
- Microsoft Foundry リソースに対する共同作成者または所有者のアクセス許可があります。
az account set --subscription <subscription-id>
次のスクリプトをコピーし、 foundry-ip-rules.shとして保存します。
#!/bin/bash
set -euo pipefail
# Replace with your Microsoft Foundry resource details.
RESOURCE_GROUP="<foundry-resource-group>"
RESOURCE_NAME="<foundry-resource-name>"
API_VERSION="2024-10-01"
IPS=(
# ASPM Web API
"20.216.90.48/28"
"20.216.90.128/27"
"20.216.90.160/29"
"20.174.247.104/29"
"20.174.247.160/27"
"20.174.247.192/26"
"4.195.142.192/26"
"20.45.148.16/28"
"20.45.148.64/26"
"52.255.25.96/27"
"52.255.26.0/26"
"52.255.26.64/28"
"128.24.1.160/27"
"172.175.149.192/26"
"172.175.150.0/29"
"20.40.205.0/25"
"172.170.23.192/26"
"52.255.25.40/29"
"20.49.100.0/27"
"48.204.171.64/26"
"48.204.171.128/25"
"172.175.177.176/28"
"4.247.188.16/28"
"4.247.188.32/27"
"4.247.188.128/29"
"74.225.41.224/27"
"74.225.42.0/26"
"72.145.17.128/26"
"74.178.112.128/28"
"74.161.235.128/26"
"74.161.235.192/27"
"4.226.250.176/28"
"4.226.250.192/26"
"4.226.251.32/29"
"172.165.75.128/26"
"172.165.75.192/28"
"20.58.74.128/27"
"20.58.74.160/28"
"48.199.128.240/28"
"48.209.124.0/26"
"48.199.128.232/29"
"48.199.133.96/27"
"172.175.149.40/29"
"172.175.149.64/26"
# ScannerService. Single hosts for Cognitive Services require bare IPs, not /32.
"104.211.200.71"
"104.211.201.192"
"104.211.201.50"
"104.211.201.51"
"104.46.233.33"
"104.46.233.67"
"104.46.233.87"
"130.33.185.234"
"130.33.202.119"
"130.33.219.176"
"131.145.18.141"
"134.112.1.46"
"134.112.1.52"
"134.112.1.53"
"134.112.13.185"
"134.112.147.138"
"134.112.167.139"
"134.112.167.67"
"134.112.4.189"
"135.149.44.23"
"135.235.144.150"
"135.235.144.187"
"135.235.146.170"
"145.133.61.218"
"172.165.59.10"
"172.194.141.170"
"172.194.217.145"
"172.215.236.113"
"20.109.129.121"
"20.11.91.116"
"20.11.95.165"
"20.162.184.22"
"20.162.24.144"
"20.162.24.92"
"20.162.24.93"
"20.162.65.100"
"20.162.91.186"
"20.165.140.244"
"20.165.151.176"
"20.165.151.56"
"20.165.174.253"
"20.165.205.170"
"20.165.234.157"
"20.165.236.243"
"20.165.236.96"
"20.165.237.202"
"20.165.238.190"
"20.167.12.148"
"20.167.37.165"
"20.167.37.233"
"20.167.74.246"
"20.167.93.128"
"20.174.110.86"
"20.174.145.41"
"20.174.210.75"
"20.174.40.24"
"20.174.40.25"
"20.174.40.30"
"20.174.40.31"
"20.174.45.75"
"20.174.52.243"
"20.174.56.196"
"20.189.201.102"
"20.190.97.30"
"20.199.156.152"
"20.199.156.153"
"20.199.242.246"
"20.199.243.150"
"20.199.243.168"
"20.199.243.221"
"20.204.190.14"
"20.204.220.227"
"20.204.223.221"
"20.208.161.207"
"20.208.174.42"
"20.208.174.48"
"20.208.174.51"
"20.208.195.174"
"20.208.208.109"
"20.208.219.170"
"20.208.219.196"
"20.208.219.212"
"20.208.219.222"
"20.208.71.207"
"20.210.129.166"
"20.210.74.194"
"20.210.75.93"
"20.211.143.180"
"20.215.88.233"
"20.215.92.253"
"20.215.97.124"
"20.215.97.127"
"20.216.114.95"
"20.216.73.20"
"20.216.73.42"
"20.216.83.177"
"20.216.83.184"
"20.216.83.209"
"20.216.83.215"
"20.227.117.88"
"20.227.13.139"
"20.227.80.166"
"20.235.160.115"
"20.235.160.129"
"20.235.161.145"
"20.235.161.49"
"20.235.28.183"
"20.235.31.237"
"20.250.52.249"
"20.250.82.4"
"20.250.94.217"
"20.254.10.208"
"20.254.129.190"
"20.26.65.37"
"20.26.76.115"
"20.26.97.68"
"20.27.1.12"
"20.27.145.27"
"20.29.168.222"
"20.3.68.203"
"20.41.237.152"
"20.41.238.3"
"20.41.248.161"
"20.41.248.217"
"20.42.238.134"
"20.42.238.143"
"20.42.238.250"
"20.45.68.1"
"20.45.69.146"
"20.45.72.33"
"20.45.72.62"
"20.49.172.249"
"20.63.209.151"
"20.63.209.208"
"20.63.218.158"
"20.63.218.90"
"20.64.140.167"
"20.68.110.201"
"20.68.110.82"
"20.69.29.166"
"20.69.31.238"
"20.69.65.49"
"20.69.78.214"
"20.70.106.32"
"20.70.113.167"
"20.70.113.215"
"20.70.120.212"
"20.70.67.48"
"20.70.81.135"
"20.70.81.159"
"20.70.88.61"
"20.70.90.144"
"20.70.97.185"
"20.70.98.111"
"20.78.145.97"
"20.78.154.200"
"20.78.154.213"
"20.78.25.32"
"20.80.128.199"
"20.89.225.114"
"20.89.240.224"
"20.89.248.208"
"20.90.207.64"
"20.90.229.224"
"20.90.24.42"
"20.90.28.144"
"20.99.137.27"
"23.101.236.20"
"4.149.139.101"
"4.149.231.71"
"4.158.11.9"
"4.165.158.55"
"4.165.158.94"
"4.165.225.95"
"4.165.60.196"
"4.166.213.157"
"4.166.65.172"
"4.187.235.192"
"4.188.118.37"
"4.188.118.72"
"4.190.16.208"
"4.195.101.238"
"4.198.0.78"
"4.224.155.228"
"4.224.155.241"
"4.224.191.134"
"4.224.191.229"
"4.224.191.56"
"4.225.109.30"
"4.225.196.217"
"4.225.53.132"
"4.225.55.83"
"4.225.77.29"
"4.226.115.190"
"4.226.20.93"
"4.226.22.143"
"4.226.22.220"
"4.226.46.240"
"4.237.164.83"
"4.242.88.151"
"4.246.21.140"
"4.247.232.121"
"4.250.139.38"
"4.254.89.110"
"4.254.89.39"
"4.255.166.236"
"40.74.64.247"
"40.81.155.253"
"48.200.1.235"
"48.200.114.83"
"48.218.193.214"
"48.218.239.115"
"51.104.35.80"
"51.104.58.106"
"51.104.58.107"
"51.107.172.134"
"51.107.172.254"
"51.107.225.181"
"51.107.235.167"
"51.107.236.148"
"51.107.236.31"
"51.11.18.122"
"51.141.124.15"
"51.141.124.22"
"51.142.161.229"
"52.140.53.223"
"52.140.54.240"
"52.161.49.73"
"52.161.50.212"
"52.185.180.52"
"52.185.181.164"
"74.161.66.49"
"74.162.141.79"
"74.162.141.97"
"74.162.141.99"
"74.162.165.123"
"74.162.165.169"
"74.162.165.209"
"74.176.139.232"
"74.176.169.132"
"74.241.164.71"
"74.243.11.239"
"74.243.12.147"
"74.243.13.0"
"74.243.13.4"
"74.243.13.9"
"74.248.72.99"
"74.248.74.226"
"74.248.75.255"
"74.248.76.190"
"85.210.182.96"
"9.223.145.21"
"9.223.149.144"
"9.223.169.160"
"9.223.210.9"
"98.70.233.44"
)
SUBSCRIPTION=$(az account show --query id -o tsv)
BASE_URL="https://management.azure.com/subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$RESOURCE_NAME"
NEW_RULES=$(printf '%s\n' "${IPS[@]}" | jq -R '{value: .}' | jq -s '.')
echo "Reading current network rules ..."
CURRENT_ACLS=$(az rest --method get \
--url "$BASE_URL?api-version=$API_VERSION" \
--query properties.networkAcls)
MERGED_ACLS=$(jq -n \
--argjson cur "$CURRENT_ACLS" \
--argjson new "$NEW_RULES" '
{
defaultAction: ($cur.defaultAction // "Deny"),
ipRules: ((($cur.ipRules // []) + $new) | unique_by(.value)),
virtualNetworkRules: ($cur.virtualNetworkRules // [])
}')
echo "Applying $(jq 'length' <<<"$NEW_RULES") IP rules in one request ..."
az rest --method patch \
--url "$BASE_URL?api-version=$API_VERSION" \
--headers "Content-Type=application/json" \
--body "$(jq -n --argjson acls "$MERGED_ACLS" '{properties: {networkAcls: $acls}}')" \
--output none
echo "Done."
RESOURCE_GROUPとRESOURCE_NAMEを更新し、スクリプトを実行します。
chmod +x foundry-ip-rules.sh
./foundry-ip-rules.sh
Defender ポータルのオンボーディング
概要ページからDefenderポータルのオンボードを完了します。 詳細については、「手順 3: Defender ポータルのオンボード」を参照してください。
Foundry の接続を解除
接続されている Foundry を別の Foundry に置き換えたり、接続を削除したりするには、いつでも切断できます。 代替手段を提供せずに接続された Foundry を切断すると、エージェント コード スキャンの使用が無効になります。
イニシアティブに移動し、[設定] (右上) を選択します。
接続されている Foundry リソースの横にある [ 切断 ] を選択し、[ 切断] を選択して確認します。
一度切断したら、そのままにするか、いつでも同じファウンドリーや別のファウンドリーに再接続できます。 切断するとMDASHからの接続は消えますが、Microsoft Foundryリソースは削除されません。
キーレス認証の場合、接続を解除しても接続のために作成された管理ID、フェデレーテッドID認証、またはRBACロール割り当ては削除されません。 ポータルでFoundryリソースを切断すると、確認ダイアログにこれらのリソースを削除するオプションのクリーンアップスクリプトが表示されます。実行するには コピースクリプト を選択してください。 運営は任意です。組織が完全なクリーンアップを必要とする場合は実行してください。
APIキー認証の場合、Foundryでは切断してもAPIキーが削除または回転しません。 もし不要になった場合は、キーを取り外したり、別々に回転させたりしてください。
スイッチ認証方法
接続されたFoundryリソースの認証方法をいつでもキーレスに切り替えることができます。
イニシアチブに行き、「設定」を選択してください。
接続されている Foundry リソースの横にある メソッドをキーレスに切り替え を選択してください。 両方の認証方法、セットアップ手順、必要な権限の詳細については 、「認証方法」を参照してください。
新しい認証方法を確認するために 「Validate 」を選択してください。
[保存] をクリックして変更を適用します。
新しい認証方法が検証・保存されるまでは、MDASHはスキャンに既存の認証方法を引き続き使用します。