限制 中的分支推送和合併 AWS CodeCommit - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解」

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

限制 中的分支推送和合併 AWS CodeCommit

根據預設,任何具有足夠許可將程式碼推送到儲存庫的 CodeCommit 儲存庫使用者,都可以對該儲存庫中的任何分支做出貢獻。無論您將分支新增到儲存庫的方式為何:使用主控台、命令列或 Git,都是如此。不過,您可能想要設定分支,使得只有部分儲存庫使用者可以將程式碼推送或合併至該分支。例如,您可能想要設定用於生產程式碼的一個分支,使得只有一組資深開發人員可以將變更推送或合併至該分支。其他開發人員仍可以從分支提取、製作自己的分支,以及建立提取請求,但無法將變更推送或合併至該分支。您可以透過建立條件式政策來設定此存取權,該政策使用 IAM 中一或多個分支的內容金鑰。

注意

若要完成本主題中的某些程序,您必須使用具有足夠許可的管理使用者登入,以設定和套用 IAM 政策。如需詳細資訊,請參閱建立 IAM 管理員使用者和群組

設定 IAM 政策以限制推送和合併至分支

您可以在 IAM 中建立政策,以防止使用者更新分支,包括將遞交推送至分支,以及將提取請求合併至分支。若要這樣做,您的政策會使用條件式陳述式,使得只有在符合條件時,才會套用 Deny 陳述式的效果。您在 Deny 陳述式中包含的 API 會決定不允許的動作。您可以設定此政策,以僅套用至儲存庫中的一個分支、儲存庫中的多個分支,或套用至符合 Amazon Web Services 帳戶中所有儲存庫條件的所有分支。

為分支建立條件式政策
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/iam/:// 開啟 IAM 主控台。

  2. 在導覽窗格中,選擇政策

  3. 選擇 Create policy (建立政策)。

  4. 選擇 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 的原因。在效果為 DenyGitPush 是其中一個動作的任何政策中,Null 陳述式為必要。由於 Git 和 將變更從本機儲存庫推送到 CodeCommit 時git-receive-pack的運作方式,因此這是必要的。

    提示

    若要建立套用到 Amazon Web Services 帳戶中所有儲存庫中名稱為主要的所有分支的政策,請將 的值Resource從儲存庫 ARN 變更為星號 (*)。

  5. 選擇檢閱政策。更正政策陳述式中的任何錯誤,然後繼續 Create policy (建立政策)

  6. 當 JSON 經過驗證,隨即會顯示 Create policy (建立政策) 頁面。Summary (摘要) 區段中會出現警告,建議您此政策將不會授予許可。這是預期的行為。

    • ​Name (名稱) 中,輸入此政策的名稱,例如 DenyChangesToMain

    • Description (描述) 中,輸入政策目的之描述。此為選用操作,但建議您採用。

    • 選擇 建立政策

將 IAM 政策套用至 IAM 群組或角色

您已建立限制推送和合併至分支的政策,但在您將其套用至 IAM 使用者、群組或角色之前,該政策不會生效。最佳實務是考慮將政策套用至 IAM 群組或角色。將政策套用到個別 IAM 使用者無法妥善擴展。

將條件式政策套用至群組或角色
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/iam/://www. 開啟 IAM 主控台。

  2. 在導覽窗格中,如果您想要將政策套用到 IAM 群組,請選擇群組。如果您想要將政策套用到使用者擔任的角色,請選擇角色。選擇群組或角色的名稱。

  3. 在 [權限] 索引標籤上,選擇 [連接政策]。

  4. 選取您從策略清單建立的條件政策,然後選擇 Attach policy (附加政策)

如需詳細資訊,請參閱連接和停用 IAM 政策

測試政策

您應該測試您對群組或角色套用政策的效果,以確保它可如預期運作。您有很多種方法可以執行此操作。例如,若要測試類似以上所示的政策,您可以:

  • 使用已套用政策的 IAM 群組成員身分的 IAM 使用者登入 CodeCommit 主控台,或擔任已套用政策的角色。在主控台中,於套用限制的分支上新增檔案。嘗試將檔案儲存或上傳到該分支時,您應該會看到錯誤訊息。將檔案新增到不同分支。操作應該會成功。

  • 使用已套用政策的 IAM 群組成員身分的 IAM 使用者登入 CodeCommit 主控台,或擔任已套用政策的角色。建立提取請求,其將合併到限制適用所在的分支。您應該可以建立提取請求,但在嘗試合併它時發生錯誤。

  • 從終端機或命令列,在套用限制的分支上建立遞交,然後將該遞交推送到 CodeCommit 儲存庫。您應該會看到錯誤訊息。從其他分支進行的遞交和推送應該可以照常運作。