SageMaker 노트북 인스턴스에 다른 AWS 계정의 CodeCommit 리포지토리에 대한 임시 액세스 권한 부여 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SageMaker 노트북 인스턴스에 다른 AWS 계정의 CodeCommit 리포지토리에 대한 임시 액세스 권한 부여

작성자: Helge Aufderheide(AWS)

환경: 프로덕션

기술: DevOps, 분석, 기계 학습 및 AI, 관리 및 거버넌스

AWS 서비스: AWS CodeCommit, AWS 자격 증명 및 액세스 관리, Amazon SageMaker

요약

알림: AWS CodeCommit 는 더 이상 신규 고객에게 제공되지 않습니다. 의 기존 고객은 평소와 같이 서비스를 계속 사용할 AWS CodeCommit 수 있습니다. 자세히 알아보기

이 패턴은 Amazon SageMaker 노트북 인스턴스 및 사용자에게 다른 AWS 계정에 있는 AWS CodeCommit 리포지토리에 대한 임시 액세스 권한을 부여하는 방법을 보여줍니다. 또한 이 패턴은 각 엔티티가 각 리포지토리에서 수행할 수 있는 특정 작업에 대해 세분화된 권한을 부여하는 방법을 보여줍니다.

조직은 개발 환경을 호스팅하는 AWS 계정과 다른 계정에 CodeCommit 리포지토리를 저장하는 경우가 많습니다. 이 다중 계정 설정은 리포지토리에 대한 액세스를 제어하고 실수로 삭제될 위험을 줄이는 데 도움이 됩니다. 이러한 교차 계정 권한을 부여하려면 AWS Identity and Access Management(IAM) 역할을 사용하는 것이 좋습니다. 그런 다음 각 AWS 계정의 사전 정의된 IAM 자격 증명이 일시적으로 역할을 수임하여 계정 전체에서 제어된 신뢰 체인을 생성할 수 있습니다.

참고: 유사한 절차를 적용하여 다른 IAM 자격 증명에 CodeCommit 리포지토리에 대한 교차 계정 액세스 권한을 부여할 수 있습니다. 자세한 내용은 AWS CodeCommit 사용 설명서역할을 사용하여 AWS CodeCommit 리포지토리에 대한 교차 계정 액세스 구성을 참조하세요.

사전 조건 및 제한 사항

사전 조건 

  • CodeCommit 리포지토리가 있는 활성 AWS 계정(계정 A )

  • SageMaker 노트북 인스턴스가 있는 두 번째 활성 AWS 계정(계정 B )

  • 계정 A에서 IAM 역할을 생성하고 수정할 수 있는 충분한 권한이 있는 AWS 사용자

  • 계정 B에서 IAM 역할을 생성하고 수정할 수 있는 충분한 권한이 있는 두 번째 AWS 사용자

아키텍처

다음 다이어그램은 하나의 AWS 계정에서 CodeCommit 리포지토리에 대한 교차 계정 액세스 권한을 SageMaker 노트북 인스턴스 및 사용자에게 부여하는 워크플로의 예를 보여줍니다.

에 대한 교차 계정 액세스 워크플로 CodeCommit

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 계정 B의 AWS 사용자 역할 및 SageMaker 노트북 인스턴스 역할은 이름이 지정된 프로파일 을 수임합니다.

  2. 명명된 프로필의 권한 정책은 프로필이 수임하는 계정 A의 CodeCommit 액세스 역할을 지정합니다.

  3. 계정 A의 CodeCommit 액세스 역할의 신뢰 정책은 계정 B의 이름이 지정된 프로파일이 CodeCommit 액세스 역할을 수임하도록 허용합니다.

  4. 계정 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 )가 포함된 계정에서 다음을 수행합니다.

  1. 계정 B에서 SageMaker 노트북 인스턴스 IAM 역할이 맡을 수 있는 역할을 생성합니다.

  2. 리포지토리에 대한 액세스 권한을 IAM 부여하는 정책을 생성하고 정책을 역할에 연결합니다. 테스트 목적으로만 AWSCodeCommitPowerUser AWS 관리형 정책을 선택합니다. 이 정책은 리소스를 삭제할 수 있는 권한을 제외한 모든 CodeCommit 권한을 부여합니다.

  3. 계정 B가 신뢰할 수 있는 엔티티로 나열되도록 역할의 신뢰 정책을 수정합니다.

중요: 이 설정을 프로덕션 환경으로 이동하기 전에 최소 권한 권한을 적용하는 자체 IAM 정책을 작성하는 것이 좋습니다. 자세한 내용은 이 패턴의 추가 정보 섹션을 참조하세요.

일반 AWS, AWS DevOps

계정 B에서 SageMaker 노트북 인스턴스의 역할에 계정 A의 CodeCommit 액세스 역할을 수임할 수 있는 권한을 부여합니다.

SageMaker 노트북 인스턴스의 IAM 역할(계정 B)이 포함된 계정에서 다음을 수행합니다.

  1. IAM 역할 또는 사용자가 계정 A에서 CodeCommit 액세스 역할을 수임할 수 있도록 허용하는 IAM 정책을 생성합니다.

    IAM 역할 또는 사용자가 교차 계정 역할을 수임할 수 있도록 허용하는 IAM 권한 정책의 예

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. 계정 B에서 SageMaker 노트북 인스턴스의 역할에 정책을 연결합니다.

  3. 계정 B에서 SageMaker 노트북 인스턴스의 역할이 계정 A의 CodeCommit 액세스 역할을 맡도록 합니다.

참고: 리포지토리의 Amazon 리소스 이름(ARN)을 보려면 AWS CodeCommit 사용 설명서의 CodeCommit 리포지토리 세부 정보 보기를 참조하세요.

일반 AWS, AWS DevOps
작업설명필요한 기술

AWS SageMaker 노트북 인스턴스에서 사용자 프로필을 설정하여 계정 A의 역할을 수임합니다.

중요: 최신 버전의 AWS 명령줄 인터페이스(AWS CLI)가 설치되어 있는지 확인합니다.

SageMaker 노트북 인스턴스(계정 B)가 포함된 계정에서 다음을 수행합니다.

  1. AWS 관리 콘솔에 로그인하고 SageMaker 콘솔 을 엽니다.

  2. SageMaker 노트북 인스턴스 에 액세스합니다. Jupyter 인터페이스가 열립니다.

  3. 새로 만들기를 선택한 다음 터미널을 선택합니다. Jupyter 환경에 새 터미널 창이 열립니다.

  4. SageMaker 노트북 인스턴스의 ~/.aws/config 파일로 이동합니다. 그런 다음 아래의 명령문을 입력하여 파일에 사용자 프로필을 추가합니다.

------.aws/config-------------- [profile remoterepouser] role_arn = arn:aws:iam::<ID of Account A>:role/<rolename> role_session_name = remoteaccesssession region = eu-west-1 credential_source = Ec2InstanceMetadata ----------------------------------
일반 AWS, AWS DevOps

유틸리티를 git-remote-codecommit 설치합니다.

AWS CodeCommit 사용 설명서2단계: 설치 git-remote-codecommit의 지침을 따릅니다.

데이터 사이언티스트
작업설명필요한 기술

Git 명령 또는 를 사용하여 CodeCommit 리포지토리에 액세스합니다 SageMaker.

Git 사용하기

IAM 계정 B에서 SageMaker 노트북 인스턴스의 역할을 수임하는 보안 주체는 이제 Git 명령을 실행하여 계정 A의 CodeCommit 리포지토리에 액세스할 수 있습니다. 예를 들어 사용자는 git clone, git pull및 와 같은 명령을 실행할 수 있습니다git push.

지침은 AWS CodeCommit 사용 설명서의 AWS CodeCommit 리포지토리에 연결을 참조하세요.

에서 Git을 사용하는 방법에 대한 자세한 내용은 AWS CodeCommit 사용 설명서시작하기AWS CodeCommit를 CodeCommit참조하세요.

사용하려면 SageMaker

SageMaker 콘솔에서 Git을 사용하려면 Git이 CodeCommit 리포지토리에서 자격 증명을 검색하도록 허용해야 합니다. 지침은 SageMaker 설명서의 노트북 인스턴스와 다른 AWS 계정의 CodeCommit 리포지토리 연결을 참조하세요.

Git, bash 콘솔

관련 리소스

추가 정보

특정 작업으로 CodeCommit 권한 제한

보안 IAM 주체가 CodeCommit 리포지토리에서 수행할 수 있는 작업을 제한하려면 CodeCommit 액세스 정책에서 허용되는 작업을 수정합니다.

작업에 대한 CodeCommit API 자세한 내용은 AWS CodeCommit 사용 설명서CodeCommit 권한 참조를 참조하세요.

참고: 사용 사례에 맞게 AWSCodeCommitPowerUser AWS 관리형 정책을 편집할 수도 있습니다.

특정 리포지토리에 대한 CodeCommit 권한 제한

특정 사용자만 둘 이상의 코드 리포지토리에 액세스할 수 있는 멀티테넌트 환경을 만들려면 다음을 수행합니다.

  1. 계정 A에 여러 CodeCommit 액세스 역할을 생성합니다. 그런 다음 계정 B의 특정 사용자가 역할을 수임할 수 있도록 각 액세스 역할의 신뢰 정책을 구성합니다.

  2. 각 CodeCommit 액세스 역할의 정책에 “리소스” 조건을 추가하여 각 역할이 수임할 수 있는 코드 리포지토리를 제한합니다.

특정 리 CodeCommit 포지토리에 대한 IAM 보안 주체의 액세스를 제한하는 “리소스” 조건의 예

"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]

참고: 동일한 AWS 계정에서 여러 코드 리포지토리를 식별하고 구별하는 데 도움이 되도록 리포지토리 이름에 다른 접두사를 할당할 수 있습니다. 예를 들어 myproject-subproject1-repo1myproject-subproject2-repo1과 같이 다양한 개발자 그룹에 맞는 접두사를 사용하여 코드 리포지토리의 이름을 지정할 수 있습니다. 그런 다음 할당된 접두사를 기반으로 각 개발자 그룹에 대한 IAM 역할을 생성할 수 있습니다. 예를 들어 myproject-subproject1-repoaccess라는 역할을 생성하고 myproject-subproject1 접두사가 포함된 모든 코드 리포지토리에 대한 액세스 권한을 부여할 수 있습니다.

특정 접두사를 ARN 포함하는 코드 리포지토리를 참조하는 예 “리소스” 조건

"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*