AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解"
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中限制推送和合併至分支 AWS CodeCommit
根據預設,任何擁有足夠許可將程式碼推送到儲存庫的 CodeCommit 儲存庫使用者,都可以對該儲存庫中的任何分支做出貢獻。無論您將分支新增到儲存庫的方式為何:使用主控台、命令列或 Git,都是如此。不過,您可能想要設定分支,使得只有部分儲存庫使用者可以將程式碼推送或合併至該分支。例如,您可能想要設定用於生產程式碼的一個分支,使得只有一組資深開發人員可以將變更推送或合併至該分支。其他開發人員仍可以從分支提取、製作自己的分支,以及建立提取請求,但無法將變更推送或合併至該分支。您可以透過為 IAM 中的一或多個分支建立使用內容金鑰的條件式政策來設定此存取。
注意
若要完成此主題中的一些程序,您必須使用具有足夠許可能夠設定和套用 IAM 政策的管理使用者的身分登入。如需詳細資訊,請參閱建立 IAM 管理員使用者和群組。
設定IAM政策以限制推送和合併至分支
您可以在 IAM 中建立一個政策,防止使用者更新分支,包括將遞交推送至分支與將提取請求合併至分支。若要這樣做,您的政策會使用條件式陳述式,使得只有在符合條件時,才會套用 Deny
陳述式的效果。APIs 您在 Deny
陳述式中包含的 會決定不允許哪些動作。您可以設定此政策,以僅套用至儲存庫中的一個分支、儲存庫中的多個分支,或套用至符合 Amazon Web Services 帳戶中所有儲存庫條件的所有分支。
為分支建立條件式政策
-
登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在導覽窗格中,選擇政策。
-
選擇 Create policy (建立政策)。
-
選擇 JSON,然後貼上下列範例政策。將 的值取代
Resource
為包含您要限制存取之分支ARN的 儲存庫的 。將codecommit:References
的值以您要限制存取之一或多個分支的參考取代。例如,此政策拒絕推送遞交、合併分支、刪除分支、刪除檔案、合併提取請求,以及將檔案新增至名為 的分支,
以及名為 的儲存庫main
中名為 的分支prod
:MyDemoRepo
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:DeleteFile", "codecommit:PutFile", "codecommit:MergeBranchesByFastForward", "codecommit:MergeBranchesBySquash", "codecommit:MergeBranchesByThreeWay", "codecommit:MergePullRequestByFastForward", "codecommit:MergePullRequestBySquash", "codecommit:MergePullRequestByThreeWay" ], "Resource": "
arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo
", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main
", "refs/heads/prod
" ] }, "Null": { "codecommit:References": "false" } } } ] }Git 中的分支只是頭部遞交的 SHA-1 值的指標 (參考),這就是條件使用 的原因
References
。在效果為Deny
且GitPush
是其中一個動作的任何政策中,Null
陳述式為必要。因為從本機儲存庫將變更推送至 CodeCommit 時 Git 和git-receive-pack
的運作方式,這為必要。提示
若要建立套用到 Amazon Web Services 帳戶中所有儲存庫中名稱為主要的所有分支的政策,請將 的值
Resource
從儲存庫變更為星號 ARN (*
)。 -
選擇檢閱政策。更正政策陳述式中的任何錯誤,然後繼續 Create policy (建立政策)。
-
JSON 驗證 時,會顯示建立政策頁面。Summary (摘要) 區段中會出現警告,建議您此政策將不會授予許可。這是預期的行為。
-
在 Name (名稱) 中,輸入此政策的名稱,例如
DenyChangesToMain
。 -
在 Description (描述) 中,輸入政策目的之描述。此為選用操作,但建議您採用。
-
選擇 建立政策。
-
將IAM政策套用至IAM群組或角色
您已建立政策,可限制對分支的推送和合併,但在您將政策套用至 IAM 使用者、群組或角色之前,政策不會有效果。做為最佳實務,請考慮將政策套用至 IAM 群組或角色。將政策套用至個別 IAM 使用者未正確擴展。
將條件式政策套用至群組或角色
-
登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在導覽窗格中,如果您要將政策套用至 IAM 群組,請選擇 Groups (群組)。如果您要將政策套用至使用者擔任的角色,請選擇 Role (角色)。選擇群組或角色的名稱。
-
在 [權限] 索引標籤上,選擇 [連接政策]。
-
選取您從策略清單建立的條件政策,然後選擇 Attach policy (附加政策)。
如需詳細資訊,請參閱附加和解除附加 IAM 政策。
測試政策
您應該測試您對群組或角色套用政策的效果,以確保它可如預期運作。您有很多種方法可以執行此操作。例如,若要測試類似以上所示的政策,您可以:
-
使用已套用政策的IAM群組成員或擔任已套用政策之角色IAM的使用者登入 CodeCommit 主控台。在主控台中,於套用限制的分支上新增檔案。嘗試將檔案儲存或上傳到該分支時,您應該會看到錯誤訊息。將檔案新增到不同分支。操作應該會成功。
-
使用已套用政策的IAM群組成員或擔任已套用政策之角色IAM的使用者登入 CodeCommit 主控台。建立提取請求,其將合併到限制適用所在的分支。您應該可以建立提取請求,但在嘗試合併它時發生錯誤。
-
從終端機或命令列,在套用限制的分支上建立遞交,然後將該遞交推送到 CodeCommit 儲存庫。您應該會看到錯誤訊息。從其他分支進行的遞交和推送應該可以照常運作。