AWS CodeCommit 리포지토리에 대한 AWS Key Management Service 및 암호화 - AWS CodeCommit

신규 고객은 더 이상 AWS CodeCommit를 사용할 수 없습니다. AWS CodeCommit의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기

AWS CodeCommit 리포지토리에 대한 AWS Key Management Service 및 암호화

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

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

중요

CodeCommit은 리포지토리의 데이터를 암호화 및 암호 해독하는 데 사용되는 AWS KMS 키에 대해 다음과 같은 AWS KMS 작업을 수행합니다. AWS 관리형 키를 사용하고 있는 경우 사용자에게 이러한 작업에 대한 명시적인 권한이 필요하지 않지만, 사용자에게 aws/codecommit 키에 대해 이러한 작업을 거부하는 정책이 첨부되어 있지 않아야 합니다. 해당 키의 정책 보안 주체로 AWS 계정 계정 ID가 설정된 고객 관리 키를 사용하는 경우 이러한 권한을 명시적으로 allow로 설정해야 합니다. 특히 리포지토리를 처음 만들 때와 리포지토리에 대한 키를 업데이트하는 경우, AWS 관리형 키를 사용하는 경우 다음 권한 중 어느 것도 deny 설정되어 있지 않아야 하며, 정책 보안 주체가 있는 고객 관리형 키를 사용하는 경우 allow로 설정해야 합니다.

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:ReEncrypt" (상황에 따라 kms:ReEncryptFrom

    kms:ReEncryptTo 또는 kms:ReEncrypt*가 거부로 설정되지 않아야 함)

  • "kms:GenerateDataKey"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:DescribeKey"

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

  • CodeCommit은 대칭 키 사용만 지원합니다.

  • 키 사용 유형은 암호화 및 복호화로 설정해야 합니다.

고객 관리형 키 생성에 대한 자세한 내용은 개념키 생성을 참조하세요.

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

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

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

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

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

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

암호화 알고리즘을 사용하여 리포지토리 데이터를 암호화하는 방법

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

암호화 컨텍스트

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

AWS KMS에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서를 참조하세요.