將 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": {}
}
整合儲存庫
前往 Docker Scout 儀表板上的 ACR 整合頁面。
在**如何整合**區段中,輸入您要整合的儲存庫的**儲存庫主機名稱**。
選擇**下一步**。
選擇**部署到 Azure**以在 Azure 中開啟範本部署精靈。
如果您尚未登入,系統可能會提示您登入 Azure 帳戶。
在範本精靈中,設定您的部署
**資源群組**:輸入與您用於容器儲存庫相同的資源群組。Docker Scout 資源必須部署到與儲存庫相同的資源群組。
**儲存庫名稱**:此欄位會預先填入儲存庫主機名稱的子網域。
選擇**檢閱 + 建立**,然後選擇**建立**以部署範本。
等待部署完成。
在**部署詳細資訊**區段中,按一下類型為**容器儲存庫權杖**的新建立資源。為此權杖產生新的密碼。
或者,使用 Azure 中的搜尋功能導覽至您要整合的**容器儲存庫**資源,並為建立的存取權杖產生新的密碼。
複製產生的密碼並返回 Docker Scout 儀表板以完成整合。
將產生的密碼貼到登錄權杖欄位中。
選擇啟用整合。
選擇啟用整合後,Docker Scout 會執行連線測試以驗證整合。如果驗證成功,您將會被重新導向至 Azure 登錄摘要頁面,其中會顯示您目前組織的所有 Azure 整合。
接下來,在儲存庫設定中啟用您想要分析的儲存庫。
啟用儲存庫後,您推送的映像檔將會由 Docker Scout 分析。分析結果會顯示在 Docker Scout 儀表板中。如果您的儲存庫已包含映像檔,Docker Scout 會自動提取並分析最新的映像檔版本。
移除整合
重要
在 Docker Scout 儀表板中移除整合並不會自動移除在 Azure 中建立的資源。
若要移除 ACR 整合
請前往 Docker Scout 儀表板上的 ACR 整合頁面