使用容器鏡像加簽
為了避免中間人攻擊和非法鏡像的更新及運(yùn)行,ACR支持命名空間級(jí)別的自動(dòng)加簽,每次推送容器鏡像后都會(huì)匹配加簽規(guī)則自動(dòng)加簽,保障鏡像從分發(fā)到部署的全鏈路一致性。
前提條件
已創(chuàng)建企業(yè)版實(shí)例,且您的實(shí)例必須為高級(jí)版。具體操作,請參見創(chuàng)建企業(yè)版實(shí)例。
已開通密鑰管理服務(wù),具體操作,請參見開通密鑰管理服務(wù)。
創(chuàng)建非對(duì)稱密鑰
在頁面左上角的地域下拉列表,選擇密鑰所在的地域。
在控制臺(tái)左側(cè)導(dǎo)航欄,單擊用戶主密鑰,然后單擊創(chuàng)建密鑰。
在創(chuàng)建密鑰對(duì)話框配置參數(shù),然后單擊確定。
容器簽名功能需要非對(duì)稱密鑰算法的支持,創(chuàng)建KMS密鑰時(shí),密鑰類型需選擇EC或RSA,密鑰用途需選擇SIGN或VERIFY。其他參數(shù)配置請參見創(chuàng)建密鑰。
授權(quán)容器鏡像服務(wù)使用KMS密鑰
為了讓ACR可以讀取到您賬號(hào)下的非對(duì)稱密鑰,需要在您的賬號(hào)上配置以下RAM策略。
登錄RAM控制臺(tái)。
在控制臺(tái)左側(cè)導(dǎo)航欄中選擇身份管理 > 角色。
在角色頁面創(chuàng)建AliyunContainerRegistryKMSRole角色。
在角色頁面單擊創(chuàng)建角色。
在選擇類型配置向?qū)е?b data-tag="uicontrol" id="d8f8e68032n9e" class="uicontrol">選擇可信實(shí)體類型為阿里云賬號(hào),然后單擊下一步。
在配置角色中設(shè)置角色名稱為AliyunContainerRegistryKMSRole,并選擇云賬號(hào),然后單擊完成。
修改信任策略。
在角色頁面找到AliyunContainerRegistryKMSRole,單擊角色名稱列下的AliyunContainerRegistryKMSRole。
單擊信任策略管理頁簽,然后單擊修改信任策略。
在修改信任策略面板,修改信任策略,然后單擊確定。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
新建AliyunContainerRegistryKMSRolePolicy策略。
在RAM控制臺(tái)左側(cè)導(dǎo)航欄中,單擊權(quán)限管理 > 權(quán)限策略。
在權(quán)限策略頁面,單擊創(chuàng)建權(quán)限策略。
在創(chuàng)建權(quán)限策略頁面,單擊腳本編輯頁簽,在文本框中輸入策略內(nèi)容,單擊繼續(xù)編輯基本信息,設(shè)置策略名稱為AliyunContainerRegistryKMSRolePolicy,然后單擊確定。
說明您需要根據(jù)實(shí)際情況替換
region
和accountid
。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" }
在左側(cè)導(dǎo)航欄中,選擇 身份管理 > 角色,在角色列表中,找到
AliyunContainerRegistryKMSRole
角色。單擊右側(cè)操作列下的添加權(quán)限。
在添加權(quán)限面板中選擇權(quán)限策略為自定義策略,找到并選擇
AliyunContainerRegistryKMSRolePolicy
,單擊確定,完成添加。
配置證明者及驗(yàn)簽策略
配置鏡像自動(dòng)加簽規(guī)則
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實(shí)例列表。
在實(shí)例列表頁面單擊目標(biāo)企業(yè)版實(shí)例。
在企業(yè)版實(shí)例管理頁面左側(cè)導(dǎo)航欄選擇 。單擊添加加簽規(guī)則。
在密鑰配置的配置向?qū)е羞x擇在安全中心創(chuàng)建的證明者關(guān)聯(lián)KMS Key。然后單擊下一步。
在加簽配置的配置向?qū)е性O(shè)置參數(shù),然后單擊創(chuàng)建加簽規(guī)則。
說明設(shè)置加簽規(guī)則僅對(duì)該命名空間下所有新上傳的鏡像進(jìn)行加簽操作,存量的鏡像不做加簽操作。
加簽算法:提供兩種可選加簽算法RSA_PSS_SHA_256或者RSA_PKCS1_SHA_256。
加簽范圍:目前支持命名空間級(jí)別自動(dòng)加簽,選擇需要自動(dòng)加簽的命名空間。
加簽類型:
默認(rèn):加簽范圍有鏡像Digest和鏡像版本信息,默認(rèn)模式適用于當(dāng)前實(shí)例下鏡像數(shù)據(jù)的驗(yàn)簽。
極簡:加簽范圍僅有鏡像Digest部分,不依賴鏡像版本的信息。極簡模式適用于跨實(shí)例鏡像同步場景,鏡像版本會(huì)變更對(duì)應(yīng)鏡像數(shù)據(jù)的驗(yàn)簽。
觸發(fā)方式:默認(rèn)支持自動(dòng)觸發(fā),每次推送鏡像后,會(huì)自動(dòng)觸發(fā)加簽。
鏡像驗(yàn)簽
關(guān)于鏡像驗(yàn)簽請參見使用kritis-validation-hook進(jìn)行容器鏡像簽名驗(yàn)證。
支持在容器服務(wù)Kubernetes版集群中使用組件進(jìn)行自動(dòng)驗(yàn)簽,設(shè)置相應(yīng)策略在驗(yàn)簽失敗時(shí)阻斷鏡像部署,推薦此方法。
支持客戶基于密鑰管理中心驗(yàn)簽功能、容器鏡像服務(wù)鏡像簽名數(shù)據(jù)自行驗(yàn)簽。