將 Docker Scout 與 Azure 容器儲存庫整合

將 Docker Scout 與 Azure 容器儲存庫 (ACR) 整合,讓您可以檢視 ACR 儲存庫中託管的映像檔分析。將 Docker Scout 與 ACR 整合並啟用儲存庫的 Docker Scout 後,將映像檔推送到儲存庫會自動觸發映像檔分析。您可以使用 Docker Scout 儀表板或 docker scout CLI 命令檢視映像檔分析。

運作方式

為了協助您將 Azure 容器儲存庫與 Docker Scout 整合,您可以使用自訂 Azure 資源管理器 (ARM) 範本,它會自動在 Azure 中為您建立必要的基礎結構。

  • 用於映像檔推送和刪除事件的 EventGrid 主題和訂閱。
  • 儲存庫的唯讀授權權杖,用於列出儲存庫和擷取映像檔。

在 Azure 中建立資源後,您可以在整合的 ACR 執行個體中啟用映像檔儲存庫的整合。啟用儲存庫後,推送新映像檔會自動觸發映像檔分析。分析結果會顯示在 Docker Scout 儀表板上。

如果您在已包含映像檔的儲存庫上啟用整合,Docker Scout 會自動提取和分析最新的映像檔版本。

ARM 範本

下表描述了設定資源。

**注意**

建立這些資源會在 Azure 帳戶上產生少量經常性費用。表格中的**費用**欄代表整合每天推送 100 個映像檔的 ACR 儲存庫時,資源的估計每月費用。

傳輸費用會因使用情況而異,但約為每 GB 0.1 美元,且前 100 GB 免費。

Azure資源費用
Event Grid 系統主題訂閱 Azure 容器儲存庫事件(映像檔推送和映像檔刪除)免費
事件訂閱透過 Webhook 訂閱將 Event Grid 事件傳送至 Scout每 100 萬條訊息 0.60 美元。前 10 萬條免費。
儲存庫權杖Scout 用於列出儲存庫並從儲存庫提取映像檔的唯讀權杖免費

以下 JSON 文件顯示 Docker Scout 用於建立 Azure 資源的 ARM 範本。

{
   "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "DockerScoutWebhook": {
         "metadata": {
            "description": "EventGrid's subscription Webhook"
         },
         "type": "String"
      },
      "RegistryName": {
         "metadata": {
            "description": "Name of the registry to add Docker Scout"
         },
         "type": "String"
      },
      "systemTopics_dockerScoutRepository": {
         "defaultValue": "docker-scout-repository",
         "metadata": {
            "description": "EventGrid's topic name"
         },
         "type": "String"
      }
   },
   "resources": [
      {
         "apiVersion": "2023-06-01-preview",
         "identity": {
            "type": "None"
         },
         "location": "[resourceGroup().location]",
         "name": "[parameters('systemTopics_dockerScoutRepository')]",
         "properties": {
            "source": "[extensionResourceId(resourceGroup().Id , 'Microsoft.ContainerRegistry/Registries', parameters('RegistryName'))]",
            "topicType": "Microsoft.ContainerRegistry.Registries"
         },
         "type": "Microsoft.EventGrid/systemTopics"
      },
      {
         "apiVersion": "2023-06-01-preview",
         "dependsOn": [
            "[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopics_dockerScoutRepository'))]"
         ],
         "name": "[concat(parameters('systemTopics_dockerScoutRepository'), '/image-change')]",
         "properties": {
            "destination": {
               "endpointType": "WebHook",
               "properties": {
                  "endpointUrl": "[parameters('DockerScoutWebhook')]",
                  "maxEventsPerBatch": 1,
                  "preferredBatchSizeInKilobytes": 64
               }
            },
            "eventDeliverySchema": "EventGridSchema",
            "filter": {
               "enableAdvancedFilteringOnArrays": true,
               "includedEventTypes": [
                  "Microsoft.ContainerRegistry.ImagePushed",
                  "Microsoft.ContainerRegistry.ImageDeleted"
               ]
            },
            "labels": [],
            "retryPolicy": {
               "eventTimeToLiveInMinutes": 1440,
               "maxDeliveryAttempts": 30
            }
         },
         "type": "Microsoft.EventGrid/systemTopics/eventSubscriptions"
      },
      {
         "apiVersion": "2023-01-01-preview",
         "name": "[concat(parameters('RegistryName'), '/docker-scout-readonly-token')]",
         "properties": {
            "credentials": {},
            "scopeMapId": "[resourceId('Microsoft.ContainerRegistry/registries/scopeMaps', parameters('RegistryName'), '_repositories_pull_metadata_read')]"
         },
         "type": "Microsoft.ContainerRegistry/registries/tokens"
      }
   ],
   "variables": {}
}

整合儲存庫

  1. 前往 Docker Scout 儀表板上的 ACR 整合頁面

  2. 在**如何整合**區段中,輸入您要整合的儲存庫的**儲存庫主機名稱**。

  3. 選擇**下一步**。

  4. 選擇**部署到 Azure**以在 Azure 中開啟範本部署精靈。

    如果您尚未登入,系統可能會提示您登入 Azure 帳戶。

  5. 在範本精靈中,設定您的部署

    • **資源群組**:輸入與您用於容器儲存庫相同的資源群組。Docker Scout 資源必須部署到與儲存庫相同的資源群組。

    • **儲存庫名稱**:此欄位會預先填入儲存庫主機名稱的子網域。

  6. 選擇**檢閱 + 建立**,然後選擇**建立**以部署範本。

  7. 等待部署完成。

  8. 在**部署詳細資訊**區段中,按一下類型為**容器儲存庫權杖**的新建立資源。為此權杖產生新的密碼。

    或者,使用 Azure 中的搜尋功能導覽至您要整合的**容器儲存庫**資源,並為建立的存取權杖產生新的密碼。

  9. 複製產生的密碼並返回 Docker Scout 儀表板以完成整合。

  10. 將產生的密碼貼到登錄權杖欄位中。

  11. 選擇啟用整合

選擇啟用整合後,Docker Scout 會執行連線測試以驗證整合。如果驗證成功,您將會被重新導向至 Azure 登錄摘要頁面,其中會顯示您目前組織的所有 Azure 整合。

接下來,在儲存庫設定中啟用您想要分析的儲存庫。

啟用儲存庫後,您推送的映像檔將會由 Docker Scout 分析。分析結果會顯示在 Docker Scout 儀表板中。如果您的儲存庫已包含映像檔,Docker Scout 會自動提取並分析最新的映像檔版本。

移除整合

重要

在 Docker Scout 儀表板中移除整合並不會自動移除在 Azure 中建立的資源。

若要移除 ACR 整合

  1. 請前往 Docker Scout 儀表板上的 ACR 整合頁面

    編輯此頁面 要求變更