本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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.html萬ecr:*
用字元許可在開發帳戶中開發和測試無法存取生產資料時非常有用。
不過,您必須確定您的生產環境中未使用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 Config 會啟動自訂規則。
自訂規則會叫用 Lambda 函數,以評估 Amazon ECR儲存庫政策陳述式的合規性。然後,Lambda 函數會識別不合規的儲存庫政策陳述式。
Lambda 函數會將不合規狀態傳送至 AWS Config。
AWS Config 會將事件傳送至 EventBridge。
EventBridge 會將不合規通知發佈至 SNS主題。
Amazon SNS會傳送電子郵件提醒給您或授權使用者。
自動化和擴展
此模式的解決方案可以監控任意數量的 Amazon ECR儲存庫政策陳述式,但您想要評估的所有資源都必須在相同區域中建立。
工具
AWS CloudFormation – AWS CloudFormation 可協助您建立和設定AWS資源模型、快速一致地佈建資源,以及在整個生命週期中管理資源。您可以使用範本來描述您的資源及其相依性,並將它們一起啟動並設定為堆疊,而不是個別管理資源。您可以管理和佈建跨多個AWS帳戶和AWS區域的堆疊。
AWS Config – AWS Config 提供AWS帳戶中AWS資源組態的詳細檢視。這包含資源彼此之間的關係和之前的組態方式,所以您可以看到一段時間中組態和關係的變化。
AmazonECR–Amazon 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 DevOps |
任務 | 描述 | 所需的技能 |
---|---|---|
測試 AWS Config 自訂規則。 |
| AWS DevOps |
附件
若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip