本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
讓 SageMaker 筆記本執行個體暫時存取另一個AWS帳戶中的 CodeCommit 儲存庫
由 Helge Aufderheide 建立 (AWS)
環境:生產 | 技術: DevOps;分析;機器學習和 AI;管理與治理 | AWS 服務:AWS CodeCommit; AWS Identity and Access Management;Amazon SageMaker |
Summary
請注意: AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解
此模式顯示如何授予 Amazon SageMaker 筆記本執行個體和使用者暫時存取位於另一個AWS帳戶中的AWS CodeCommit 儲存庫。此模式也會顯示如何針對每個實體在每個儲存庫上執行的特定動作,授予精細的許可。
組織通常會將 CodeCommit 儲存庫存放在與託管其開發環境的帳戶不同的AWS帳戶中。此多帳戶設定有助於控制對儲存庫的存取,並降低意外刪除的風險。若要授予這些跨帳戶許可,最佳實務是使用 AWS Identity and Access Management (IAM) 角色。然後,每個AWS帳戶中預先定義的IAM身分可以暫時擔任角色,以跨帳戶建立受控制的信任鏈。
注意:您可以套用類似的程序,將其他IAM身分跨帳戶授予 CodeCommit 儲存庫的存取權。如需詳細資訊,請參閱 AWS CodeCommit 使用者指南 中的使用角色設定跨帳戶對AWS CodeCommit 儲存庫的存取。
先決條件和限制
先決條件
具有 CodeCommit 儲存庫的作用中AWS帳戶 (帳戶 A)
具有 SageMaker 筆記本執行個體的第二個作用中AWS帳戶 (帳戶 B)
具有足夠許可AWS的使用者,可建立和修改帳戶 A 中IAM的角色
具有足夠許可的第二個AWS使用者,可建立和修改帳戶 B 中IAM的角色
架構
下圖顯示將 SageMaker 筆記本執行個體和使用者授予一個AWS帳戶跨帳戶存取 CodeCommit 儲存庫的範例工作流程:
該圖顯示以下工作流程:
帳戶 B 中的AWS使用者角色和 SageMaker 筆記本執行個體角色擔任具名設定檔 。
具名設定檔的許可政策會指定帳戶 A 中的 CodeCommit 存取角色,該角色隨後會擔任該設定檔。
CodeCommit 存取角色在帳戶 A 中的信任政策允許帳戶 B 中的具名設定檔擔任 CodeCommit 存取角色。
帳戶 A 中的 CodeCommit 儲存庫IAM許可政策允許 CodeCommit 存取角色存取 CodeCommit 儲存庫。
技術堆疊
CodeCommit
Git
IAM
pip
SageMaker
工具
AWS CodeCommit 是一種版本控制服務,可協助您私下存放和管理 Git 儲存庫,而無需管理您自己的來源控制系統。
AWS Identity and Access Management (IAM) 可協助您安全地管理 AWS 資源的存取,方法是控制誰經過身分驗證並獲授權使用。
Git
是分散式版本控制系統,用於追蹤軟體開發期間原始程式碼的變更。 git-remote-codecommit 是一種公用程式,可協助您透過擴充 Git 從 CodeCommit 儲存庫推送和提取程式碼。
pip
是 Python 的套件安裝程式。您可以使用 pip 從 Python 套件索引和其他索引安裝套件。
最佳實務
當您使用 IAM 政策設定許可時,請務必僅授予執行任務所需的許可。如需詳細資訊,請參閱 IAM 文件中的套用最低權限許可。
實作此模式時,請務必執行下列動作:
確認IAM原則只有執行每個儲存庫中特定、必要動作所需的許可。例如,建議允許核准的IAM原則推送和合併特定儲存庫分支的變更,但只請求合併至受保護的分支。
確認IAM根據每個專案的個別IAM角色和責任指派了不同的角色。例如,開發人員將具有與版本管理員或AWS管理員不同的存取許可。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
設定 CodeCommit 存取角色和許可政策。 | 注意:若要自動化此史詩中記錄的手動設定程序,您可以使用AWS CloudFormation 範本 。 在包含 CodeCommit 儲存庫的 帳戶中 (帳戶 A ),執行下列動作:
重要事項:將此設定移至生產環境之前,最佳實務是撰寫套用最低權限許可IAM的政策。如需詳細資訊,請參閱此模式的其他資訊區段。 | 一般 AWS、 AWS DevOps |
授予 SageMaker 筆記本執行個體在帳戶 B 中的角色許可,以擔任帳戶 A 中的 CodeCommit 存取角色。 | 在包含 SageMaker 筆記本執行個體IAM角色的 帳戶中 (帳戶 B),執行下列動作:
注意:若要檢視儲存庫的 Amazon Resource Name (ARN),請參閱 AWS CodeCommit 使用者指南 中的檢視 CodeCommit 儲存庫詳細資訊。 | 一般 AWS、 AWS DevOps |
任務 | 描述 | 所需的技能 |
---|---|---|
在AWS SageMaker 筆記本執行個體上設定使用者設定檔,以擔任帳戶 A 中的角色。 | 重要事項:請確定已安裝最新版本的AWS命令列介面 (AWS CLI)。 在包含 SageMaker 筆記本執行個體 (帳戶 B) 的 帳戶中,執行下列動作:
| 一般 AWS、 AWS DevOps |
安裝 git-remote-codecommit公用程式。 | 請遵循 AWS CodeCommit 使用者指南 中的步驟 2:安裝 git-remote-codecommit 中的指示。 | 資料科學家 |
任務 | 描述 | 所需的技能 |
---|---|---|
使用 Git 命令或 存取 CodeCommit 儲存庫 SageMaker。 | 使用 Git IAM 帳戶 B 中擔任 SageMaker 筆記本執行個體角色的主體現在可以執行 Git 命令來存取帳戶 A 中的 CodeCommit 儲存庫。例如,使用者可以執行 如需指示,請參閱 AWS CodeCommit 使用者指南 中的連線至AWS CodeCommit 儲存庫。 如需如何搭配 使用 Git 的詳細資訊 CodeCommit,請參閱 AWS CodeCommit 使用者指南 中的入門AWS CodeCommit。 若要使用 SageMaker 若要從 SageMaker 主控台使用 Git,您必須允許 Git 從 CodeCommit 儲存庫擷取憑證。如需指示,請參閱 SageMaker 文件中的將不同AWS帳戶中的 CodeCommit 儲存庫與筆記本執行個體建立關聯。 | Git、Bash 主控台 |
相關資源
使用角色設定對AWS CodeCommit 儲存庫的跨帳戶存取權 (AWS CodeCommit 文件)
IAM 教學課程:使用IAM角色委派跨AWS帳戶的存取權 (IAM 文件)
其他資訊
限制特定動作的 CodeCommit 許可
若要限制IAM主體在 CodeCommit 儲存庫中可以採取的動作,請修改 CodeCommit 存取政策中允許的動作。
如需操作的詳細資訊 CodeCommit API,請參閱 AWS CodeCommit 使用者指南 中的CodeCommit 許可參考。
注意:您也可以編輯AWSCodeCommitPowerUserAWS受管政策以符合您的使用案例。
限制對特定儲存庫的 CodeCommit 許可
若要建立僅供特定使用者存取多個程式碼儲存庫的多租戶環境,請執行下列動作:
在帳戶 A 中建立多個 CodeCommit 存取角色。然後,設定每個存取角色的信任政策,以允許帳戶 B 中的特定使用者擔任該角色。
透過將「資源」條件新增至每個 CodeCommit 存取角色的政策,限制每個角色可以擔任的程式碼儲存庫。
限制IAM委託人存取特定 CodeCommit 儲存庫的範例 “Resource” 條件
"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
注意:為協助識別和區分相同AWS帳戶中的多個程式碼儲存庫,您可以將不同的字首指派給儲存庫的名稱。例如,您可以使用符合不同開發人員群組的字首命名程式碼儲存庫,例如 myproject-subproject1-repo1 和 myproject-subproject2-repo1。然後,您可以根據每個開發人員群組指派的字首來建立IAM角色。例如,您可以建立名為 myproject-subproject1-repoaccess 的角色,並授予其存取所有包含 myproject-subproject1 字首的程式碼儲存庫。
範例 “Resource” 條件,指包含特定字首ARN的程式碼儲存庫
"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*