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

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

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

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

Summary

在 Amazon Web Services (AWS) 雲端上,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 帳戶。

  • AWS 命令列界面 (AWSCLI),已安裝並設定。如需詳細資訊,請參閱 AWS CLI 文件AWSCLI中的安裝、更新和解除安裝

  • 具有附加政策陳述式的現有 Amazon ECR儲存庫,安裝在測試環境中並進行設定。如需詳細資訊,請參閱《Amazon ECR 文件》中的建立私有儲存庫設定儲存庫政策陳述式。

  • AWS Config,在您偏好的AWS區域中設定。如需詳細資訊,請參閱 AWS Config 文件中的 Config AWS 入門。

  • aws-config-cloudformation.template 檔案 (已連接),下載至本機電腦。

 

限制

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

架構

下圖顯示 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資源組態的詳細檢視。這包含資源彼此之間的關係和之前的組態方式,所以您可以看到一段時間中組態和關係的變化。

  • AmazonECRAmazon 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
任務描述所需的技能
測試 AWS Config 自訂規則。
  1. 登入 AWS 管理主控台,開啟 AWS Config 主控台,然後選擇 資源

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

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

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

AWS DevOps

附件

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