為了避免中間人攻擊和非法鏡像的更新及運行,ACR支持命名空間級別的自動加簽,每次推送容器鏡像后都會匹配加簽規則自動加簽,保障鏡像從分發到部署的全鏈路一致性。
前提條件
創建非對稱密鑰
授權容器鏡像服務使用KMS密鑰
為了讓ACR可以讀取到您賬號下的非對稱密鑰,需要在您的賬號上配置以下RAM策略。
登錄RAM控制臺。
在控制臺左側導航欄中選擇身份管理 > 角色。
在角色頁面創建AliyunContainerRegistryKMSRole角色。
在角色頁面單擊創建角色。
在選擇類型配置向導中選擇可信實體類型為阿里云賬號,然后單擊下一步。
在配置角色中設置角色名稱為AliyunContainerRegistryKMSRole,并選擇云賬號,然后單擊完成。
修改信任策略。
在角色頁面找到AliyunContainerRegistryKMSRole,單擊角色名稱列下的AliyunContainerRegistryKMSRole。
單擊信任策略頁簽,然后單擊編輯信任策略。
在文本框中,修改信任策略,然后單擊保存信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
新建AliyunContainerRegistryKMSRolePolicy策略。
在RAM控制臺左側導航欄中,單擊權限管理 > 權限策略。
在權限策略頁面,單擊創建權限策略。
在創建權限策略頁面,單擊腳本編輯頁簽,在文本框中輸入策略內容,單擊確定。然后在創建權限策略對話框中填寫名稱和備注。
說明您需要根據實際情況替換
region
和accountid
。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" }
在左側導航欄中,選擇 身份管理 > 角色,在角色列表中,找到
AliyunContainerRegistryKMSRole
角色。單擊右側操作列下的添加權限。
在添加權限面板中選擇權限策略為自定義策略,找到并選擇
AliyunContainerRegistryKMSRolePolicy
,單擊確定,完成添加。
配置證明者及驗簽策略
配置鏡像自動加簽規則
登錄容器鏡像服務控制臺。
在頂部菜單欄,選擇所需地域。
在左側導航欄,選擇實例列表。
在實例列表頁面單擊目標企業版實例。
在企業版實例管理頁面左側導航欄選擇 。單擊添加加簽規則。
在密鑰配置的配置向導中選擇在安全中心創建的證明者關聯KMS Key。然后單擊下一步。
在加簽配置的配置向導中設置參數,然后單擊創建加簽規則。
說明設置加簽規則僅對該命名空間下所有新上傳的鏡像進行加簽操作,存量的鏡像不做加簽操作。
加簽算法:提供兩種可選加簽算法RSA_PSS_SHA_256或者RSA_PKCS1_SHA_256。
加簽范圍:目前支持命名空間級別自動加簽,選擇需要自動加簽的命名空間。
加簽類型:
默認:加簽范圍有鏡像Digest和鏡像版本信息,默認模式適用于當前實例下鏡像數據的驗簽。
極簡:加簽范圍僅有鏡像Digest部分,不依賴鏡像版本的信息。極簡模式適用于跨實例鏡像同步場景,鏡像版本會變更對應鏡像數據的驗簽。
觸發方式:默認支持自動觸發,每次推送鏡像后,會自動觸發加簽。
鏡像驗簽
關于鏡像驗簽請參見使用kritis-validation-hook進行容器鏡像簽名驗證。
支持在容器服務Kubernetes版集群中使用組件進行自動驗簽,設置相應策略在驗簽失敗時阻斷鏡像部署,推薦此方法。
支持客戶基于密鑰管理中心驗簽功能、容器鏡像服務鏡像簽名數據自行驗簽。