使用 AWS CloudFormation 和 AWS Config 監控 Amazon ECR 儲存庫的萬用字元許可 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS CloudFormation 和 AWS Config 監控 Amazon ECR 儲存庫的萬用字元許可

由 Vikrant Telkar (AWS)、Sajid Momin (AWS) 和 Wassim Benhallam (AWS) 建立

環境:生產

技術: DevOps;容器與微服務

AWS 服務:AWS CloudFormation;AWSConfig;AmazonECR;AmazonSNS;AWSLambda

Summary

在 Amazon Web Services (AWS) Cloud 上,Amazon Elastic Container Registry (Amazon ECR) 是受管容器映像登錄服務,支援使用 AWS Identity and Access Management () 具有資源型許可的私有儲存庫IAM。

IAM 在資源和動作屬性中都支援「*」萬用字元,這可讓您更輕鬆地自動選擇多個相符的項目。在您的測試環境中,您可以使用ECR儲存庫政策陳述式 的主體元素中的ecr:*萬用字元許可,允許所有已驗證AWS的使用者存取 Amazon 儲存庫。 https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.htmlecr:*用字元許可在無法存取生產資料的開發帳戶中開發和測試時非常有用。

不過,您必須確保在生產環境中未使用ecr:*萬用字元許可,因為它可能會導致嚴重的安全漏洞。此模式的方法可協助您識別ECR儲存庫政策陳述式中包含ecr:*萬用字元許可的 Amazon 儲存庫。  此模式提供步驟和AWS CloudFormation 範本,以在 Config AWS 中建立自訂規則。然後,AWSLambda 函數會監控您的 Amazon ECR儲存庫政策陳述式是否有ecr:*萬用字元許可。如果找到不合規的儲存庫政策陳述式,Lambda 會通知 AWS Config 將事件傳送至 Amazon EventBridge , EventBridge 然後啟動 Amazon Simple Notification Service (AmazonSNS) 主題。SNS 主題會透過電子郵件通知您不合規的儲存庫政策陳述式。

先決條件和限制

先決條件

 

限制

  • 此模式的解決方案為區域性,您的資源必須在相同區域中建立。 

架構

下圖顯示 AWS Config 如何評估 Amazon ECR儲存庫政策陳述式。 

AWS 雲端 architecture diagram showing interaction between services for event processing and notification.

該圖顯示以下工作流程:

  1. AWS Config 會啟動自訂規則。 

  2. 自訂規則會叫用 Lambda 函數,以評估 Amazon ECR儲存庫政策陳述式的合規性。然後,Lambda 函數會識別不合規的儲存庫政策陳述式。

  3. Lambda 函數會將不合規狀態傳送至 AWS Config。

  4. AWS Config 會將事件傳送至 EventBridge。

  5. EventBridge 會將不合規通知發佈至SNS主題。

  6. Amazon SNS會傳送電子郵件提醒給您或授權使用者。

自動化和擴展

此模式的解決方案可以監控任何數量的 Amazon ECR儲存庫政策陳述式,但您要評估的所有資源都必須在相同區域中建立。

工具

  • AWS CloudFormation – AWS CloudFormation 可協助您建立和設定AWS資源模型、快速且一致地佈建資源,以及在整個生命週期中管理資源。您可以使用範本描述您的資源及其相依性,並一起啟動和設定這些資源作為堆疊,而不是個別管理資源。您可以在多個AWS帳戶和AWS區域管理和佈建堆疊。

  • AWS Config – AWS Config 提供AWS帳戶中AWS資源組態的詳細檢視。這包含資源彼此之間的關係和之前的組態方式,所以您可以看到一段時間中組態和關係的變化。

  • Amazon ECRAmazon Elastic Container Registry (Amazon ECR) 是安全、可擴展且可靠的AWS受管容器映像登錄服務。Amazon 使用 ECR支援具有資源型許可的私有儲存庫IAM。                                

  • Amazon EventBridge – Amazon EventBridge 是一種無伺服器事件匯流排服務,可用來將應用程式與各種來源的資料連線。 可從應用程式、軟體即服務 (SaaS) 應用程式AWS和服務,將即時資料串流 EventBridge 傳遞至目標,例如 AWS Lambda 函數、使用API目的地HTTP叫用端點,或其他帳戶中的事件匯流排。

  • AWS Lambda – AWS Lambda 是一種運算服務,支援執行程式碼,無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。

  • Amazon SNS – Amazon Simple Notification Service (Amazon SNS) 會協調和管理發佈者和用戶端之間的訊息傳遞或傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。 

Code

此模式的程式碼可在 aws-config-cloudformation.template 檔案中取得 (已連接)。

史詩

任務描述所需的技能
建立AWS CloudFormation 堆疊。

在 AWS 中執行下列命令來建立AWS CloudFormation 堆疊CLI:

$ aws cloudformation create-stack --stack-name=AWSConfigECR \ --template-body file://aws-config-cloudformation.template \ --parameters ParameterKey=<email>,ParameterValue=<myemail@example.com> \ --capabilities CAPABILITY_NAMED_IAM
AWS DevOps
任務描述所需的技能
測試 Config AWS 自訂規則。
  1. 登入 AWS 管理主控台,開啟 AWS Config 主控台,然後選擇 資源

  2. 資源庫存頁面上,您可以依資源類別、資源類型和合規狀態進行篩選。

  3. 包含 的 Amazon ECR儲存庫ecr:*NON-COMPLIANT?為 ,不包含 的 Amazon ECR儲存庫ecr:*COMPLIANT

  4. 如果 Amazon ECR儲存庫包含不合規的政策陳述式,訂閱SNS主題的電子郵件地址會收到通知。

AWS DevOps

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip