ビュー:
このレシピは、多数のコンピュータにポリシーを割り当てるスクリプトを作成します。スクリプトは、変更するコンピュータを検索し、各コンピュータにポリシーを割り当てます。
多数のコンピュータ (数百台または数千台) でタスクを実行する必要がある場合は、次のように小さなバッチで作業を実行します。

手順

  1. 少数のコンピュータを取得します。
  2. ポリシーを各コンピュータに一括で割り当てます。
  3. すべてのコンピュータにポリシーが割り当てられるまで、この手順を繰り返します。

次に進む前に

バッチを小さくすると、 Server & Workload Protection リソースをより効率的に使用できます。このレシピでは、すべてのコンピュータにポリシーを小さなバッチで割り当てます。

jq for Bash 親トピック

Bashスクリプトはjqを使用してJSONデータを解析します。インストールされているかどうかを確認するには、ターミナルまたは任意のコマンドラインツールを開き、次のコマンドを入力します。
jq --version
次の場合jqが見つかりません。ウェブサイトをクリックしてインストールします。

必須項目 親トピック

このレシピを完了するために必要な次の情報を収集します。
  • Server & Workload ProtectionのURL
  • APIキーの秘密鍵
  • 割り当てるポリシーのID
ポリシーのIDがわからない場合は、ポリシーの検索入手レシピです。

バッシュ 親トピック

手順

  1. ターミナルまたは任意のコマンドラインツールを開きます。
  2. 次のコマンドを入力して、リクエストに関する詳細を保存します。<YOUR URL>のURLでServer & Workload Protection、 と<YOUR SECRET KEY> API キーのシークレットを使用して:
    url=<YOUR URL>
    たとえば、url=https://cloudone.trendmicro.com
    secret=<YOUR SECRET KEY>
    たとえば、secret=5C58EADA-04BC-4ABC-45CF-B72925A0B674:aFBgpPV8eJQGaY2Dk0LmyQMD7nUGvyIDfIbIQo8Zgm8=
  3. 次のコマンドを入力して、ポリシーの ID を保存します。<YOUR POLCIY ID>コンピューターの ID を使用して:
    policyId=<YOUR POLICY ID>
    たとえば、policyId=1
  4. コンピュータを一括で検索してポリシーを割り当てる次のコードをコピーして貼り付けます。
    pagesize=10; idOfLastFound=0 ; \ while [ $pagesize -gt 0 ]; do \ echo -e "\nGetting a batch of computers..." page=$(curl -X POST "$url/api/computers/search?expand=none" -H "api-secret-key: $secret" -H "api-version: v1" -H "Content-Type: application/json" -# \ -d "{ \ \"searchCriteria\": [{ \ \"idValue\": \"$idOfLastFound\", \ \"idTest\": \"greater-than\"}], \ \"maxItems\": \"$pagesize\" \ }" \ -k | jq '.[]'); \ pagesize=$(echo $page | jq length); \ for (( i=0; i&lt;$pagesize; i++)); do \ computerId=$(echo $page | jq ".[$i][\"ID\"]"); \ echo "Assigning policy to computer with ID $computerId"; \ curl -X POST "$url/api/computers/${computerId}?expand=none" -H "api-secret-key: $secret" -H "api-version: v1" -H "Content-Type: application/json" -d "{ \"policyID\": \"$policyId\" }" -s -S -o /dev/null; \ done; \ idOfLastFound=$(echo $page | jq '.[-1]["ID"]'); \ done;

次に進む前に

そのBashスクリプトを詳しく見てみましょう 親トピック

このスクリプトは、他のレシピで実行したスクリプトよりも少し複雑です。
ほとんどのコードはループ内で実行され、ループの各反復でコンピュータのバッチが検索および変更されます。検索で返されたコンピュータがなくなると、ループは終了します。まず、バッチのサイズを定義し、最初の反復で検索の基準として使用するコンピュータIDを設定します。
pagesize=10; idOfLastFound=0 ; \ while [ $pagesize -gt 0 ]; do \ ... done;
ループ内では、cURLを使用してコンピュータのバッチを検索します。この検索では、前の反復で検出された最後のIDよりも大きいIDを持つ10台のコンピュータが検出されます。結果は次のようにパイプされます。jqコンピュータのアレイを取得します。
page=$(curl -X POST "$url/api/computers/search?expand=none" -H "api-secret-key: $secret" -H "api-version: v1" -H "Content-Type: application/json" -# \ -d "{ \ \"searchCriteria\": [{ \ \"idValue\": \"$idOfLastFound\", \ \"idTest\": \"greater-than\"}], \ \"maxItems\": \"$pagesize\" \ }" \ -k | jq '.[]'); \
次に、返されたコンピュータの数を調べます。
pagesize=$(echo $page | jq length); \
各コンピュータには、cURLを使用してポリシーを割り当てます。
for (( i=0; i&lt;$pagesize; i++)); do \ computerId=$(echo $page | jq ".[$i][\"ID\"]"); \ echo "Assigning policy to computer with ID $computerId"; \ curl -X POST "$url/api/computers/${computerId}?expand=none" -H "api-secret-key: $secret" -H "api-version: v1" -H "Content-Type: application/json" -d "{ \"policyID\": \"$policyId\" }" -k -s -S -o /dev/null; \ done; \
最後に見つかったコンピュータのIDを見つけ、次の反復で検索の基準として使用します。
idOfLastFound=$(echo $page | jq '.[-1][\"ID\"]'); \

PowerShell 親トピック

手順

  1. PowerShellを開きます。
  2. Managerがセキュアな接続を確立するために必要なTLS 1.2を使用するには、次のコマンドを入力します。
    [Net.ServicePointManager]::SecurityProtocol += [Net.SecurityProtocolType]::Tls12
  3. 次のコマンドを入力して、リクエストに関する詳細を保存します。<YOUR URL>あなたの URL とServer & Workload Protection、 と<YOUR SECRET KEY> API キーのシークレットを使用して:
    • $url = "<YOUR URL>"
      たとえば、url=https://cloudone.trendmicro.com
    • $secret = "<YOUR API KEY SECRET>"
      たとえば、$secret="5C58EADA-04BC-4ABC-45CF-B72725A0B674:aFBgpPV8eJQGaY2Dk0LmyQMD7nUGvyIDfIbIQo8Zgm8="
    • $headers = @{‘api-version’ = “v1”; ‘api-secret-key’ = $secret; 'Content-Type' = "application/json"}
  4. 次のコマンドを入力して、ポリシーの ID を保存します。<YOUR POLCIY ID>コンピューターの ID を使用して:
    $policyId = <YOUR POLICY ID>
    たとえば、$policyId = 1
  5. コンピュータを一括で検索してポリシーを割り当てる次のコードをコピーして貼り付けます。
    $pageSize = 10 $idOfLastFound = 0 while($pageSize -gt 0){ Write-Output "Getting batch of computers..." $page = Invoke-RestMethod -Method 'Post' -Uri "$url/api/computers/search?expand=none" -Headers $headers -Body @" {"searchCriteria": [ { "idTest": "greater-than", "idValue": $idOfLastFound } ], "maxItems": $pageSize} "@ $pageSize = $page.computers.Length for ($i=0; $i -lt $pageSize; $i++){ $id = $page.computers.Get($i).ID Write-Output "Setting policy for computer with ID $id" Invoke-RestMethod -Method 'Post' -Uri "$url/api/computers/${id}?expand=none" -Headers $headers -Body @" {"policyID": "$policyId"} "@ | Out-Null } if ($pageSize -gt 0 ) { $idOfLastFound = $page.computers.Get($pageSize - 1).ID } }

次に進む前に

エラーメッセージが表示された場合The underlying connection was closed: An unexpected error occurred on a sendをクリックしてPowerShellを閉じ、再度PowerShellを開いて、手順を繰り返します。

そのPowerShellスクリプトを詳しく見てみましょう 親トピック

このスクリプトは、他のレシピで実行したスクリプトよりも少し複雑です。
ほとんどのコードはループ内で実行され、ループの各反復でコンピュータのバッチが検索および変更されます。検索で返されたコンピュータがなくなると、ループは終了します。まず、バッチのサイズを定義し、最初の反復で検索の基準として使用するコンピュータIDを設定します。
$pageSize = 10 $idOfLastFound = 0 while($pageSize -gt 0){ ... }
ループ内では、Invoke-RestMethodをクリックしてコンピュータのバッチを検索します。この検索では、前の反復で見つかった最後のIDよりも大きいIDを持つ10台のコンピュータが検出されます。
page=$(curl -X POST "$url/api/computers/search?expand=none" -H "api-secret-key: $secret" -H "api-version: v1" -H "Content-Type: application/json" -# \ -d "{ \ \"searchCriteria\": [{ \ \"idValue\": \"$idOfLastFound\", \ \"idTest\": \"greater-than\"}], \ \"maxItems\": \"$pagesize\" \ }" \ -k | jq '.[]'); \
次に、返されたコンピュータの数を確認します。
$pageSize = $page.computers.Length
コンピュータごとに、Invoke-RestMethodをクリックしてポリシーを割り当てます。
for ($i=0; $i -lt $pageSize; $i++){ $id = $page.computers.Get($i).ID Write-Output "Setting policy for computer with ID $id" Invoke-RestMethod -Method 'Post' -Uri "$url/api/computers/${id}?expand=none" -Headers $headers -Body @" {"policyID": "$policyId"}
最後に見つかったコンピュータのIDを見つけ、次の反復で検索の基準として使用します。
$idOfLastFound = $page.computers.Get($pageSize - 1).ID

備考 親トピック

  • 処理するコンピュータのバッチのサイズを変更するには、pagesize(Bash) または$pageSize (PowerShell) 変数を別の値に変更します。の値10は通常、控えめなバッチサイズです。

関連リソース 親トピック