本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
讓 SageMaker 筆記本執行個體暫時存取另一個 AWS 帳戶中的 CodeCommit 儲存庫
創建者:海爾格奧夫德海德(AWS)
環境:生產 | 技術: DevOps; 分析; 機器學習和人工智能; 管理與治理 | AWS 服務:AWS CodeCommit;AWS Identity and Access Management;Amazon SageMaker |
Summary
此模式顯示如何授予 Amazon SageMaker 筆記本執行個體和使用者臨時 CodeCommit 存取其他 AWS 帳戶中的 AWS 儲存庫。此模式還顯示了如何為每個實體可以在每個存儲庫上執行的特定操作授予細微的權限。
Organizations 通常會將存 CodeCommit 放庫存放在與託管其開發環境的帳戶不同的 AWS 帳戶中。此多帳戶設定有助於控制存放庫的存取,並降低意外刪除的風險。若要授予這些跨帳戶許可,最佳實務是使用 AWS Identity and Access Management (IAM) 角色。然後,每個 AWS 帳戶中預先定義的 IAM 身分可以暫時扮演角色,跨帳戶建立受控的信任鏈。
附註:您可以套用類似的程序來授與其他 IAM 身分對 CodeCommit 儲存庫的跨帳戶存取權限。如需詳細資訊,請參閱 AWS 使用 CodeCommit 者指南中的使用角色設定對 AWS CodeCommit 儲存庫的跨帳戶存取。
先決條件和限制
先決條件
具有 CodeCommit 儲存庫 (帳戶 A) 的作用中 AWS 帳戶
具有 SageMaker 筆記本執行個體 (帳戶 B) 的第二個有效 AWS 帳戶
具有足夠許可的 AWS 使用者,可在帳戶 A 中建立和修改 IAM 角色
具有足夠許可的第二個 AWS 使用者,可在帳戶 B 中建立和修改 IAM 角色
架構
下圖顯示授予 SageMaker 筆記本執行個體和一個 AWS 帳戶跨帳戶存取 CodeCommit 存放庫中的使用者的工作流程範例:
![跨帳戶存取的工作流程 CodeCommit](images/pattern-img/54d0fdb3-6d25-4433-9f67-c87846633d61/images/97a799af-ce88-4495-a61c-d0cd22493ce2.png)
該圖顯示以下工作流程:
帳戶 B 中的 AWS 使用者角色和 SageMaker 筆記本執行個體角色採用具名設定檔。
具名設定檔的權限原則會在帳戶 A 中指定設定檔隨後假設的 CodeCommit 存取角色。
帳戶 A 中 CodeCommit 存取角色的信任策略允許帳戶 B 中具名的設定檔擔任 CodeCommit 存取角色。
帳戶 A 中 CodeCommit 存放庫的 IAM 許可政策允許存 CodeCommit 取角色 CodeCommit 存取存放庫。
技術, 堆棧
CodeCommit
Git
IAM
pip
SageMaker
工具
AWS CodeCommit 是一種版本控制服務,可協助您以私密方式存放和管理 Git 儲存庫,而無需管理自己的原始檔控制系統。
AWS Identity and Access Management (IAM) 可透過控制誰經過身份驗證和授權使用 AWS 資源,協助您安全地管理對 AWS 資源的存取。
Git
是一個分佈式版本控制系統,用於在軟件開發過程中跟踪源代碼的變化。 git-remote-codecommit是一個實用程序,可以幫助您通過擴展 Git 從 CodeCommit 存儲庫中推送和提取代碼。
點子
是 Python 的軟件包安裝程序。您可以使用 pip 從 Python 軟件 Package 索引和其他索引安裝軟件包。
最佳實務
使用 IAM 政策設定許可時,請務必僅授與執行工作所需的權限。如需詳細資訊,請參閱 IAM 文件中的套用最低權限許可。
實施此模式時,請確保執行以下操作:
確認 IAM 原則僅具有在每個存放庫中執行特定必要動作所需的許可。例如,建議允許已核准的 IAM 原則將變更推送和合併到特定的儲存庫分支,但只要求合併到受保護的分支。
確認 IAM 原則會根據各自的角色和每個專案的職責,指派不同的 IAM 角色。例如,開發人員擁有與發行管理員或 AWS 管理員不同的存取權限。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
設定 CodeCommit 存取角色和權限原則。 | 注意:若要自動化此史詩中記錄的手動設定程序,您可以使用 AWS CloudFormation 範本。 在包含 CodeCommit 存放庫 (帳戶 A) 的帳戶中,執行下列動作:
重要事項:在將此設定移至生產環境之前,最佳做法是撰寫自己的 IAM 政策以套用最低權限許可。如需詳細資訊,請參閱此模式的其他資訊一節。 | 一般 AWS、AWS DevOps |
授與 SageMaker 記事本執行個體在帳戶 B 中的角色權限,以在帳戶 A 中擔任 CodeCommit 存取角色。 | 在包含 SageMaker 筆記本執行個體 IAM 角色 (帳戶 B) 的帳戶中,執行下列動作:
注意:若要檢視儲存庫的 Amazon 資源名稱 (ARN),請參閱 AWS CodeCommit 使用者指南中的檢視 CodeCommit 儲存庫詳細資訊。 | 一般 AWS、AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
在 AWS SageMaker 筆記本執行個體上設定使用者設定檔以擔任帳戶 A 中的角色。 | 重要:請確定您已安裝最新版本的 AWS Command Line Interface (AWS CLI) (AWS CLI)。 在包含 SageMaker 記事本執行個體 (帳戶 B) 的帳戶中,執行下列動作:
| 一般 AWS、AWS DevOps |
安裝 git-remote-codecommit 公用程式。 | 遵循 AWS CodeCommit 使用者指南中的步驟 2:安裝 git-remote-codecommit中的指示。 | 資料科學家 |
任務 | 描述 | 所需技能 |
---|---|---|
使用 CodeCommit Git 命令或 SageMaker. | 若要使用 Git 假設帳戶 B 中的 SageMaker 筆記本執行個體角色的 IAM 主體現在可以執行 Git 命令來 CodeCommit 存取帳戶 A 中的儲存庫。例如,使用者可以執行 如需指示,請參閱 AWS CodeCommit 使用者指南中的 Connect 到 AWS CodeCommit 儲存庫。 如需如何搭配使用 Git 的詳細資訊 CodeCommit,請參閱 AWS 使用 CodeCommit 者指南 CodeCommit中的 AWS 入門。 若要使用 SageMaker 若要從 SageMaker 主控台使用 Git,您必須允許 Git 從 CodeCommit 儲存庫擷取憑證。如需指示,請參閱 SageMaker 文件中的將不同 AWS 帳戶中的 CodeCommit 儲存庫與筆記本執行個體建立關聯。 | Git,bash 控制台 |
相關資源
使用角色設定對 AWS CodeCommit 儲存庫的跨帳戶存取 (AWS CodeCommit 文件)
其他資訊
將權限 CodeCommit 限制為特定動作
若要限制 IAM 主體可在 CodeCommit 存放庫中執行的動作,請修改存 CodeCommit 取政策中允許的動作。
如需 CodeCommit API 操作的詳細資訊,請參閱 CodeCommit AWS CodeCommit 使用者指南中的許可參考。
注意:您也可以編輯 AWSCodeCommitPowerUserAWS 受管政策以符合您的使用案例。
限制特定儲 CodeCommit 存庫的權限
若要建立只有特定使用者可存取多個程式碼存放庫的多租戶環境,請執行下列動作:
在帳戶 A 中建立多個 CodeCommit 存取角色,然後設定每個存取角色的信任原則,以允許帳戶 B 中的特定使用者擔任該角色。
將 「Resource」 條件新增至每個存 CodeCommit 取角色的政策,以限制每個角色可以承擔的程式碼儲存庫。
限制 IAM 主體 CodeCommit 存取特定儲存庫的「資源」條件範例
"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
注意:為了協助識別和區分同一 AWS 帳戶中的多個程式碼儲存庫,您可以為存放庫的名稱指派不同的前置詞。例如,您可以使用符合不同開發人員群組的前綴來命名程式碼儲存庫,例如我的專案子專案 1-repo1 和我的專案子專案 2-repo1。然後,您可以根據每個開發人員群組指派的前置詞建立 IAM 角色。例如,您可以建立名為我的專案-子專案 1 重新存取的角色,並將其存取權授與所有包含前置詞 myproject subprojec t1 的程式碼儲存庫。
參照包含特定前綴的代碼存儲庫 ARN 的示例「Resource」條件
"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*