

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

# 의 데이터 보호AWS CodeCommit
<a name="data-protection"></a>

관리형 서비스로서 AWS 글로벌 네트워크 보안으로 보호됩니다. AWS 보안 서비스와 AWS의 인프라 보호 방법에 대한 자세한 내용은 [AWS 클라우드 보안](https://aws.amazon.com/security/)을 참조하세요. 인프라 보안에 대한 모범 사례를 사용하여 AWS 환경을 설계하려면 *보안 원칙 AWS Well‐Architected Framework*의 [인프라 보호](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)를 참조하세요.

AWS 에서 게시한 API 직접 호출을 사용하여 네트워크를 통해 액세스합니다. 고객은 다음을 지원해야 합니다.
+ Transport Layer Security(TLS) TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman)와 같은 완전 전송 보안(PFS)이 포함된 암호 제품군 Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

CodeCommit 리포지토리는 미사용 시 자동으로 암호화됩니다. 고객의 조치는 필요하지 않습니다. CodeCommit은 리포지토리의 전송 중 데이터도 암호화합니다. CodeCommit 리포지토리에서는 HTTPS 프로토콜이나 SSH 프로토콜을 사용할 수 있으며 양쪽을 모두 사용하는 것도 가능합니다. 자세한 내용은 [AWS CodeCommit에 대한 설정](setting-up.md) 단원을 참조하세요. 사용자는 CodeCommit 리포지토리에 대한 [크로스 계정 액세스](cross-account.md)를 구성할 수도 있습니다.

**Topics**
+ [AWS Key Management Service 및 AWS CodeCommit 리포지토리 암호화](encryption.md)
+ [교체 자격 증명을 사용하여 AWS CodeCommit 리포지토리에 연결](temporary-access.md)

# AWS Key Management Service 및 AWS CodeCommit 리포지토리 암호화
<a name="encryption"></a>

CodeCommit 리포지토리의 데이터는 전송 중이거나 미사용 중일 때 암호화됩니다. CodeCommit 리포지토리 내에 데이터가 푸시(예: **git push** 호출)될 때는 CodeCommit이 해당 데이터를 리포지토리 저장 시점에 암호화합니다. CodeCommit 리포지토리에서 데이터가 풀(예: **git pull** 호출)될 때는 CodeCommit이 해당 데이터를 해독한 다음 호출자에게 전송합니다. 푸시 또는 풀 요청과 연결된 IAM 사용자가에 의해 인증되었다고 가정합니다 AWS. 전송하거나 수신한 데이터는 HTTPS 또는 네트워크 프로토콜을 암호화한 SSH를 사용하여 전송됩니다.

 AWS 관리형 키 또는 고객 관리형 키를 사용하여 리포지토리의 데이터를 암호화하고 해독할 수 있습니다. 고객 관리형 키와 AWS 관리형 키의 차이점에 대한 자세한 내용은 [고객 관리형 키와 AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)를 참조하세요. 고객 관리형 키를 지정하지 않으면 CodeCommit은 리포지토리의 데이터를 암호화하고 복호화하는 데 AWS 관리형 키 를 사용합니다. 이 AWS 관리형 키 는 AWS 계정에서 자동으로 생성됩니다. Amazon Web Services 계정의 새에 CodeCommit AWS 리전 리포지토리를 처음 생성할 때 고객 관리형 키를 지정하지 않으면 CodeCommit은 동일한 AWS 리전 in AWS 관리형 키 ()에 AWS Key Management Service (`aws/codecommit`키)를 생성합니다AWS KMS. 이 `aws/codecommit` 키는 오로지 CodeCommit에만 사용됩니다. 이 키는 Amazon Web Services 계정에 저장됩니다. 지정한 내용에 따라 CodeCommit은 고객 관리형 키 또는 AWS 관리형 키 를 사용하여 리포지토리의 데이터를 암호화하고 해독합니다.

**중요**  
 CodeCommit은 리포지토리의 데이터를 암호화하고 복호화하는 데 사용되는 AWS KMS 키에 대해 다음 AWS KMS 작업을 수행합니다. 를 사용하는 경우 AWS 관리형 키사용자는 이러한 작업에 대한 명시적 권한이 필요하지 않지만 `aws/codecommit` 키에 대해 이러한 작업을 거부하는 연결된 정책이 없어야 합니다. AWS 계정 ID가 해당 키의 정책 보안 주체로 설정된 고객 관리형 키를 사용하는 경우 이러한 권한을 로 명시적으로 설정해야 합니다`allow`. 특히 첫 번째 리포지토리를 생성하고 리포지토리의 키를 업데이트하는 경우를 사용하는 `deny` 경우 다음 권한 중 하나를 로 설정해서는 안 되며 AWS 관리형 키, 정책 보안 주체와 함께 고객 관리형 키를 사용하는 `allow` 경우 로 설정해야 합니다.  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"` (상황에 따라 `kms:ReEncryptFrom`와   
`kms:ReEncryptTo` 또는 `kms:ReEncrypt*`가 거부로 설정되지 않아야 함)
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

자체 고객 관리형 키를 사용하려면 리포지토리 AWS 리전 가 있는에서 키를 사용할 수 있어야 합니다. CodeCommit은 단일 및 다중 리전 고객 관리형 키 사용을 모두 지원합니다. 모든 키 구성 요소 오리진 유형이 지원되지만 기본 **KMS** 옵션을 사용하는 것이 좋습니다. **외부 키 저장소** 옵션을 사용하는 고객은 저장소 공급자로부터 지연이 발생할 수 있습니다. 또한 CodeCommit은 고객 관리형 키에 대해 다음과 같은 요구 사항을 가지고 있습니다:
+ CodeCommit은 대칭 키 사용만 지원합니다.
+ 키 사용 유형은 **암호화 및 복호화**로 설정해야 합니다.

고객 관리형 키 생성에 대한 자세한 내용은 [개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt) 및 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)을 참조하세요.

CodeCommit에서 AWS 관리형 키 생성된에 대한 정보를 보려면 다음을 수행합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) AWS Key Management Service (AWS KMS) 콘솔을 엽니다.

1. 를 변경하려면 페이지 오른쪽 상단에 있는 리전 선택기를 AWS 리전사용합니다.

1. 서비스 탐색 창에서 **AWS 관리형 키**를 선택합니다. 키를 검토하려는 AWS 리전 에 로그인했는지 확인합니다.

1. 암호화 키 목록에서 별칭 **aws/codecommit**이 AWS 관리형 키 있는를 선택합니다. 에 대한 기본 정보가 AWS 소유 키 표시됩니다.

이를 변경하거나 삭제할 수 없습니다 AWS 관리형 키.

## 암호화 알고리즘을 사용하여 리포지토리 데이터를 암호화하는 방법
<a name="encryption-algorithms"></a>

CodeCommit은 데이터를 암호화하기 위해 두 가지 다른 접근 방식을 사용합니다. 6MB 미만의 개별 Git 객체는 데이터 무결성 검증을 제공하는 AES-GCM-256을 사용하여 암호화됩니다. 단일 블롭에 대해 6MB에서 최대 2GB 사이의 객체는 AES-CBC-256을 사용하여 암호화됩니다. CodeCommit은 항상 암호화 컨텍스트를 검증합니다.

## 암호화 컨텍스트
<a name="encryption-context"></a>

와 통합된 각 서비스는 암호화 및 복호화 작업 모두에 대한 암호화 컨텍스트를 AWS KMS 지정합니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS 에서 사용하는 추가적인 인증 정보입니다. 암호화 작업에 대해 지정하면 해독 작업에도 지정해야 합니다. 그렇지 않으면 암호화 해제가 실패합니다. CodeCommit은 암호화 컨텍스트에 CodeCommit 리포지토리 ID를 사용합니다. **get-repository** 명령이나 CodeCommit 콘솔을 사용하면 리포지토리 ID를 찾을 수 있습니다. AWS CloudTrail 로그에서 CodeCommit 리포지토리 ID를 검색하여 CodeCommit 리포지토리의 데이터를 암호화하거나 해독 AWS KMS 하기 위해 어떤 키에서 어떤 암호화 작업이 수행되었는지 파악합니다.

에 대한 자세한 내용은 [AWS Key Management Service 개발자 안내서](https://docs.aws.amazon.com/kms/latest/developerguide/)를 AWS KMS참조하세요.

# 교체 자격 증명을 사용하여 AWS CodeCommit 리포지토리에 연결
<a name="temporary-access"></a>

IAM 사용자를 구성하거나 액세스 키 및 보안 키를 사용하지 않고도 사용자에게 AWS CodeCommit 리포지토리에 대한 액세스 권한을 부여할 수 있습니다. 페더레이션 보안 인증 정보 권한을 부여하려면 역할을 생성하고 해당 역할의 권한을 정의합니다. 페더레이션 자격 증명이 인증되면 역할이 연결되고 역할에 정의된 권한이 부여됩니다. 페더레이션 관련 역할에 대한 자세한 내용은 *IAM 사용 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)를 참조하세요. IAM Identity Center를 사용하는 경우, 권한 집합을 구성합니다. 인증 후 ID가 액세스할 수 있는 항목을 제어하기 위해 IAM Identity Center는 권한 집합을 IAM의 역할과 연관짓습니다. 권한 세트에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [권한 세트](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)를 참조하세요. 또한 IAM 사용자가 별도의 Amazon Web Services 계정의 CodeCommit 리포지토리에 액세스할 수 있도록 역할 기반 액세스를 구성할 수도 있습니다(*크로스 계정 액세스*라고 하는 기술). 리포지토리에 대한 크로스 계정 액세스를 구성하는 연습은 [역할을 사용하여 AWS CodeCommit 리포지토리에 대한 교차 계정 액세스 구성](cross-account.md) 단원을 참조하세요.

다음과 같은 방법으로 인증하려는(또는 인증해야 하는) 사용자에 대해 액세스를 구성할 수 있습니다.
+ SAML(Security Assertion Markup Language)
+ 다중 인증(MFA)
+ 연동
+ Login with Amazon
+ Amazon Cognito
+ Facebook
+ Google
+ OpenID Connect(OIDC) 호환 ID 공급자

**참고**  
다음 정보는 **git-remote-codecommit** 또는 AWS CLI 자격 증명 헬퍼를 사용하여 CodeCommit 리포지토리에 연결하는 경우에만 적용됩니다. CodeCommit에 대한 임시 액세스 또는 페더레이션 액세스에 권장되는 접근 방식은 **git-remote-codecommit**를 설정하는 것이므로, 이 항목에서는 해당 유틸리티를 사용하는 예제를 제공합니다. 자세한 내용은 [git-remote-codecommit을 AWS CodeCommit 사용하여에 대한 HTTPS 연결을 위한 설정 단계](setting-up-git-remote-codecommit.md) 단원을 참조하세요.  
SSH 또는 Git 보안 인증 정보와 HTTPS를 사용하여 CodeCommit 리포지토리를 교체 또는 임시 액세스 보안 인증 정보와 연결할 수 없습니다.

다음 요구 사항이 모두 충족될 경우에는 이 단계들을 완료할 필요가 없습니다.
+ Amazon EC2 인스턴스에 로그인한 경우.
+ 자격 AWS CLI 증명 도우미와 함께 Git 및 HTTPS를 사용하여 Amazon EC2 인스턴스에서 CodeCommit 리포지토리로 연결합니다.
+ Amazon EC2 인스턴스에, [ AWS CLI 자격 증명 헬퍼를 사용하여 Linux, macOS 또는 Unix에서 HTTPS 연결](setting-up-https-unixes.md) 또는 [자격 AWS CLI 증명 헬퍼를 사용하여 Windows에서 HTTPS 연결](setting-up-https-windows.md)에 설명된 액세스 권한을 포함하는 IAM 인스턴스 프로파일이 연결되어 있는 경우.
+ [ AWS CLI 자격 증명 헬퍼를 사용하여 Linux, macOS 또는 Unix에서 HTTPS 연결](setting-up-https-unixes.md) 또는 [자격 AWS CLI 증명 헬퍼를 사용하여 Windows에서 HTTPS 연결](setting-up-https-windows.md)에서 설명한 대로 Amazon EC2 인스턴스에서 Git 보안 인증 도우미를 올바르게 설치하여 구성한 경우.

이전 요구 사항을 충족하는 Amazon EC2 인스턴스가 임시 액세스 보안 인증 정보를 CodeCommit에 자동으로 전달해 주도록 이미 설정되어 있는 경우.

**참고**  
Amazon EC2 인스턴스에서 **git-remote-codecommit**을 구성하고 사용할 수 있습니다.

사용자에게 CodeCommit 리포지토리에 대한 임시 액세스 권한을 제공하려면 다음 단계를 완료합니다.



## 1단계: 필수 구성 요소 완성
<a name="temporary-access-prerequisites"></a>

설정 단계를 완료하여 사용자에게 교체 보안 인증 정보를 사용하여 CodeCommit 리포지토리에 액세스할 수 있는 권한을 제공합니다.
+ 크로스 계정 액세스의 경우에는 [연습: IAM 역할을 사용하는 Amazon Web Services 계정 간 액세스 권한 위임](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html) 및 [역할을 사용하여 AWS CodeCommit 리포지토리에 대한 교차 계정 액세스 구성](cross-account.md) 단원을 참조하세요.
+ SAML 및 페더레이션[의 경우 조직의 인증 시스템을 사용하여 AWS 리소스에 대한 액세스 권한 부여](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication) 및 [AWS STS SAML 2.0 기반 페더레이션 정보를](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html) 참조하세요.
+ MFA의 경우에는 [AWS에서 다중 인증(MFA) 디바이스 사용하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html) 및 [IAM 사용자를 위해 액세스 가능한 임시 보안 인증 정보 생성하기](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html)를 참조하세요.
+ Login with Amazon, Amazon Cognito, Facebook, Google 또는 OIDC 호환 자격 증명 공급자의 경우 [AWS STS 웹 자격 증명 페더레이션 정보를](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html) 참조하세요.

[에 대한 인증 및 액세스 제어 AWS CodeCommit](auth-and-access-control.md)의 정보를 활용하여 사용자에게 부여할 CodeCommit 권한을 지정합니다.

## 2단계: 역할 이름 또는 액세스 보안 인증 정보 가져오기
<a name="temporary-access-get-credentials"></a>

사용자가 역할을 맡아 리포지토리에 액세스하도록 하려면 해당 역할의 Amazon 리소스 이름(ARN)을 사용자에게 제공합니다. 그렇지 않으면 액세스 설정 방법에 따라 사용자는 다음 방법 중 하나를 사용하여 교체 보안 인증 정보를 얻을 수 있습니다.
+ 교차 계정 액세스를 위해 the AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 명령을 호출하거나 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API를 호출합니다.
+ SAML의 경우 the AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) 명령 또는 AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API를 호출합니다.
+ 페더레이션의 경우 the AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 또는 [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) 명령 또는 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 또는 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) APIs.
+ MFA의 경우 the AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html) 명령 또는 AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) API를 호출합니다.
+ Login with Amazon, Amazon Cognito, Facebook, Google 또는 OIDC 호환 자격 증명 공급자의 경우 AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) 명령 또는 AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API를 호출합니다.



## 3단계: git-remote-codecommit 설치 및 구성 AWS CLI
<a name="temporary-access-configure-credentials"></a>

 AWS CLI에서 [https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/)을 설치하고 프로필을 구성하여 액세스 보안 인증 정보를 사용하도록 로컬 컴퓨터를 구성해야 합니다.

1. [설정 ](setting-up.md)의 지침에 따라 AWS CLI를 설정합니다. **aws configure** 명령을 사용하여 하나 이상의 프로필을 구성합니다. 교체 보안 인증 정보를 사용하여 CodeCommit 리포지토리에 연결할 때 사용할 명명된 프로필을 생성하는 것이 좋습니다.

1. 다음 방법 중 하나로 자격 증명을 사용자의 AWS CLI 명명된 프로필과 연결할 수 있습니다.
   + CodeCommit에 액세스할 역할을 수임하는 경우 해당 역할을 수임하는 데 필요한 정보를 사용하여 명명된 프로파일을 구성합니다. 예를 들어 Amazon Web Services 계정 111111111111에서 *CodeCommitAccess*라는 역할을 수임하려는 경우 다른 AWS 리소스로 작업할 때 사용할 기본 프로파일과 해당 역할을 수임할 때 사용할 명명된 프로파일을 구성할 수 있습니다. 다음 명령은 *CodeCommitAccess*라는 역할을 맡은 *CodeAccess*라는 프로필을 생성합니다. 사용자 이름 *Maria\$1Garcia*는 세션과 연결되며 기본 프로필은 자격 AWS 증명의 소스로 설정됩니다.

     ```
     aws configure set role_arn arn:aws:iam::111111111111:role/CodeCommitAccess --profile CodeAccess
     aws configure set source_profile default --profile CodeAccess
     aws configure set role_session_name "Maria_Garcia" --profile CodeAccess
     ```

     변경 사항을 확인하려면 `~/.aws/config` 파일(Linux용) 또는 `%UserProfile%.aws\config` 파일(Windows용)을 수동으로 보거나 편집하고 명명된 프로필 아래의 정보를 검토합니다. 예를 들어 파일은 다음과 비슷할 것입니다.

     ```
     [default]
     region = us-east-1
     output = json
     
     [profile CodeAccess]
     source_profile = default
     role_session_name = Maria_Garcia
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     ```

      명명된 프로필을 구성한 후에는 명명된 프로필을 사용하여 **git-remote-codecommit** 유틸리티로 CodeCommit 리포지토리를 복제할 수 있습니다. 예를 들어, *MyDemoRepo*라는 리포지토리를 복제하려면 다음과 같이 합니다.

     ```
     git clone codecommit://CodeAccess@MyDemoRepo
     ```
   + 웹 자격 증명 페더레이션 및 OpenID Connect(OIDC)를 사용하는 경우 임시 자격 증명을 새로 고치기 위해 사용자를 대신하여 AWS Security Token Service (AWS STS) `AssumeRoleWithWebIdentity` API를 호출하는 명명된 프로파일을 구성합니다. **aws configure set** 명령을 사용하거나 `~/.aws/credentials` 파일(Linux의 경우) 또는 `%UserProfile%.aws\credentials` 파일(Windows의 경우)을 수동으로 편집하여 필요한 설정 값이 있는 AWS CLI 명명된 프로파일을 추가합니다. 예를 들어, *CodeCommitAccess* 역할을 수임하고 웹 자격 증명 토큰 파일 \$1/*my-credentials**/my-token-file*을 사용하는 프로필을 생성하려면 다음과 같이 합니다.

     ```
     [CodeCommitWebIdentity]
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     web_identity_token_file=~/my-credentials/my-token-file
     role_session_name = Maria_Garcia
     ```

   자세한 내용은 *AWS Command Line Interface 사용 설명서*에서 [AWS Command Line Interface구성하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 및 [AWS CLI에서 IAM 역할 사용하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)를 참조하세요.

## 4단계: CodeCommit 리포지토리 액세스
<a name="temporary-access-use-credentials"></a>

사용자가 [리포지토리에 연결](how-to-connect.md)의 지침에 따라 CodeCommit 리포지토리에 연결한 경우, **git-remote-codecommit**에서 제공한 확장된 기능과 Git을 사용해 **git clone**, **git push**, **git pull**을 직접 호출하여, 액세스 권한이 있는 CodeCommit 리포지토리를 복제하고 푸시하고 풀할 수 있습니다. 예를 들어 리포지토리를 복제하려면 다음과 같이 합니다.

```
git clone codecommit://CodeAccess@MyDemoRepo
```

Git 커밋, 푸시 및 풀 명령은 일반 Git 구문을 사용합니다.

사용자가를 사용하고 교체 액세스 자격 증명과 연결된 AWS CLI 명명된 프로파일을 AWS CLI 지정하면 해당 프로파일로 범위가 지정된 결과가 반환됩니다.

