[AWS SAA-C03] AWS KMS 정리

AWS KMS

AWS Key Management Service - KMS는 데이터 암호화를 활성화하기 위해 암호화 키를 생성하고 제어할 수 있는 관리형 암호화 서비스이다.

  • KMS는 AWS 서비스 전반과 애플리케이션 내에서 데이터를 암호화할 수 있는 고가용성 키 스토리지, 관리 및 감사 솔루션을 제공한다.

  • KMS는 하드웨어 보안 모듈(HSM)을 사용하여 FIPS 140-2 암호화 모듈 검증 프로그램을 통해 키를 보호하고 검증한다.

  • KMS는 여러 AWS 서비스와 원활하게 통합되어 해당 서비스의 데이터를 쉽게 암호화할 수 있다.

  • AWS CloudTrail과 통합되어 암호화 키 사용 로그를 제공하여 감사, 규정 및 규정 준수 요구사항을 충족할 수 있도록 지원한다.

  • KMS는 regional 하며, 키는 키가 생성된 지역에만 저장 및 사용된다. 그들은 다른 지역으로 이동할 수 없다.

  • KMS에서는 사용 및 관리 정책을 적용하여 키를 관리하고 사용할 수 있는 IAM 사용자, 계정의 역할 또는 다른 계정을 제어한다.

  • 다음을 통해 키를 생성하고 관리할 수 있다.

    1 HMAC 키를 포함하여 대칭 및 비대칭 키를 생성, 편집할 수 있다.
    2 키 정책, IAM 정책을 사용하여 키에 대한 액세스를 제어한다. 조건 키를 사용하여 정책을 더욱 세분화할 수 있다.
    3 ABAC(속설 기반 액세스 제어)를 지원한다.

    1. 키에 대한 별칭을 생성, 삭제, 나열 및 업데이트한다.

    2. 식별, 자동화 및 비용 추적을 위해 키에 태그를 지정한다.

      키 사용 및 사용 안함

      키의 암호화 재료 자동 회전을 활성화 및 비활성화한다.

      키를 삭제하여 키 생명 주기를 완료한다.

      다음 암호화 작업을 지원한다.

      대칭 또는 비대칭 키를 사용하여 데이터를 암호화, 해독 및 다시 암호화한다.

      비대칭 키로 메시지에 서명하고 확인한다.

      내보낼 수 있는 대칭 데이터 키와 비대칭 데이터 키 쌍을 생성한다.

      HMAC 코드를 생성하고 확인한다.

      암호화 애플리케이션에 적합한 난수 생성

      서로 다른 AWS 지역에서 동일한 KMS 키의 복사본과 같은 역할을 하는 다중 지역 키를 지원하므로 여러 지역에서 동일한 키를 사용하는 것처럼 서로 교환하여 사용할 수 있다.

      VPC에서 KMS를 개인적으로 연결하는 VPC 전용 엔드포인트를 지원한다.

      클라우드에서 키 지원클라우드가 지원하는 HSM 키 저장소HSM 클러스터이다.

봉투 암호화

  • AWS KMS와 통합된 AWS 클라우드 서비스는 엔벨로프 암호화라는 방법을 사용하여 데이터를 보호한다.
  • 봉투 암호화는 두 개의 서로 다른 키(마스터 키 및 데이터 키)를 사용하는 데이터 암호화에 최적화된 방법이다.

엔벨로프 암호화 사용

  • 데이터 키는 AWS 서비스에서 생성되고 각 데이터 또는 리소스를 암호화하는 데 사용된다.

  • 데이터 키는 정의된 마스터 키로 암호화된다.

  • 암호화된 데이터 키는 AWS 서비스에 의해 저장된다.

  • AWS 서비스에 의한 데이터 암호 해독을 위해, 암호화된 데이터 키는 KMS로 전달되고 원래 암호화된 마스터 키 아래에서 암호화되어 서비스가 데이터를 해독할 수 있다.

  • 데이터가 KMS로 직접 암호화된 경우 네트워크를 통해 전송되어야만 한다.

  • 엔벨로프 암호화는 KMS가 암호화할 때 4KB 미만의 데이터 전송만 지원하므로 상당한 성능 이점을 제공할 수 있다.

  • 엔벨로프 암호화는 데이터 키의 요청과 이행만 네트워크를 통과해야 하기 때문에 애플리케이션 또는 AWS 클라우드 서비스의 네트워크 부하를 줄인다.

KMS 서비스 개념

KMS 사용

KMS 키 또는 고객 마스터 키(CMKs)

  • AWS KMS 키는 암호화 키의 논리적 표현이다.
  • KMS 키를 사용하여 암호화 또는 서명을 위한 대칭 또는 비대칭 키를 생성하거나 HMAC 태그를 생성하고 확인할 수 있다.
  • 대칭 키와 비대칭 키의 개인 키는 AWS KMS를 암호화하지 않은 상태로 두지 않는다.
  • KMS 키에는 키 ID, 키 사양, 키 사용, 키 생성 날짜 및 KMS 키로 암호화 작업을 실행하는 데 사용되는 키 자료에 대한 참조와 같은 메타데이터가 포함되어 있다.
  • 대칭키는 내보낼 수 없는 256바이트 AES 키이다.
  • KMS 키를 사용하여 데이터 키를 생성, 암호화 및 해독할 수 있으며, 데이터를 암호화하기 위해 AWS KMS 외부에서 사용된다.(Envelop Encryption)
  • 대칭 키와 비대칭 키의 개인 키에 대한 키 자료는 AWS KMS를 암호화되지 않은 상태로 두지 않는다.

AWS 관리 키

  • AWS Managed 키 AWS 계정의 AWS 서비스에서 사용자 대신 생성, 관리 및 사용된다.
  • 키는 매년(~365일) 자동으로 순환하며 순환 일정은 변경할 수 없다.
  • 계정의 AWS 관리 키를 보고, 키 정책을 보고, CloudTrail 로그에서 사용을 감사할 수 있는 권한이 있다.
  • AWS 관리 키에서는 이러한 키를 관리하거나 순환하거나 키 정책을 변경하거나 암호화 작업에 직접 사용할 수 없다. 이러한 키를 생성하는 서비스는 사용자를 대신하여 키를 사용한다.

고객 관리 키

  • 고객 관리 키는 계정의 서비스 리소스를 암호화하기 위해 사용자가 만든다.
  • 자동 순환은 선택 사항이며 활성화된 경우 키는 매년 자동으로 순환한다.
  • 고객 관리 키는 키 정책, IAM 정책 및 허가 설정 및 유지 관리, 활성화 및 비활성화, 암호화 자료 회전, 퇴그 추가, KMS 키 참조 별칭 생성, KMS 키 삭제 예약 등 이러한 키에 대한 완전한 제어 기능을 제공한다.

AWS 소유 키

  • AWS 소유 키는 AWS 서비스가 여러 AWS 계정에서 사용하기 위해 소유하고 관리하는 KMS 키의 모음이다.
  • AWS 소유 키가 사용자의 AWS 계정에 없지만 AWS 서비스는 연결된 AWS 소유 키를 사용하여 사용자 계정의 리소스를 보호할 수 있다.
  • AWS 소유 키는 확인, 사용, 추적 또는 감사할 수 없다.

키 재료(Key Material)

  • KMS 키에는 데이터를 암호화하고 해독하는 데 사용되는 키 자료에 대한 참조가 포함되어 있다.
  • 기본적으로 AWS KMS는 새로 생성한 키에 대한 키 자료를 생성한다.
  • 키 재료 없이 KMS 키를 생성한 다음 AWS 클라우드에서 자신의 키 재료를 가져오거나 생성할 수 있다.
  • AWS KMS 사용자 지정 키 저장소와 연결된 HSM 클러스터이다.
  • 주요 자료는 추출, 내보내기, 보기 또는 관리할 수 없다.
  • 키 자료는 삭제할 수 없으므로 KMS 키를 삭제해야 한다.

키 재료 출처(Key Material Origin)

  • Key Material Origin은 KMS 키에서 키 재료의 소스를 식별하는 KMS 키 속성이다.

  • 대칭 암호화 KMS 키는 다음과 같은 키 재료 원본 값 중 하나를 가질 수 있다.

    = AWS_KMS

    • AWS KMS는 AWS 클라우드에서 KMS Key Material 생성한다.

      = EXTERNAL(외부 키)

    • 키가 키 재료를 가져온다.

    • 키의 관리와 보안은 고객의 책임

    • 대칭키만 지원된다.

    • 자동 순환(Automatic rotation)은 지원되지 않으므로 수동으로 순환해야 한다.

      = AWS_CLOUDHSM

    • AWS KMS는 AWS 클라우드에서 KMS 키의 핵심 자료를 생성한다. 사용자 지정 키 저장소와 연결된 HSM 클러스터이다.

      = EXTERNAL_KEY_STORE

    • Key material은 AWS 외부의 외부 키 관리자에 있는 암호화 키이다.

    • 이 Origin은 외부 키 저장소의 KMS 키에 대해서만 지원된다.

Data Keys

  • 데이터 키는 대량의 데이터 및 기타 데이터 암호화 키를 포함하여 데이터를 암호화하는 데 사용할 수 있는 암호화 키이다.
  • KMS는 데이터 키를 저장, 관리 또는 추적하지 않는다.
  • 데이터 키는 KMS 외부의 서비스에서 사용해야 한다.

암호화 컨텍스트(Encryption Context)

  • 암호화 컨텍스트는 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 선택적 키-값 쌍 집합을 제공한다.

  • AWS KMS는 인증된 암호화를 지원하기 위해 암호화 컨텍스트를 추가 인증된 데이터(AAD)로 사용한다.

  • 암호화 컨텍스트는 비밀 값이 아니며 암호화되지 않으며 CloudTrail Logs의 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있다.

  • 암호화 컨텍스트에는 중요한 정보가 포함되지 않아야 한다.

  • 암호화 컨텍스트 사용

    = 암호화 요청에 암호화 컨텍스트가 포함된 경우 암호화 텍스트에 암호화되어 데이터를 해독하는 데 동일한 암호화 컨텍스트가 필요하다.

    = 암호 해독 요청에 제공된 암호화 컨텍스트가 대/소문자를 구분하는 정확한 일치가 아닌 경우 암호 해독 요청이 실패한다.

  • 암호화 컨텍스트에서 키-값 쌍의 순서만 다를 수 있다.

키 정책(Key Policies)

  • 이러한 키를 사용하고 관리할 수 있는 사용자를 결정하는 데 도움이 된다.
  • 언제든지 고객 관리 키에 대한 사용 권한을 추가, 제거 또는 변경할 수 있다.
  • AWS 소유 또는 관리되는 키에 대한 키 정책을 편집할 수 없다.

사용 권한(Grants)

  • Grants는 AWS 주체가 KMS 키를 사용할 수 있도록 허용하는 키 정책 및 IAM 정책의 대안인 사용 권한을 제공한다.
  • 키 정책이나 IAM 정책을 변경하지 않고 임시 권한을 생성하고 해당 권한을 사용하고 삭제할 수 있기 때문에 임시 권한에 자주 사용된다.
  • 허가에 지정된 사용 권한이 최종 일관성으로 인해 즉시 적용되지 않을 수 있다.

토큰 부여(Grant Token)

  • 토큰 부여로 잠재적인 지연을 완화하는 데 도움이 된다.
  • CrateGrant API 요청에 대한 응답으로 받은 허가 토큰을 사용하여 허가의 사용 권한을 즉시 적용한다.

별칭(Alias)

  • 별칭을 사용하면 KMS 키의 이름을 쉽게 알 수 있다.
  • 각 AWS 영역의 다른 KMS 키를 참조하는 데 사용할 수 있다.
  • 코드를 변경하지 않고 다른 키를 가리킬 때 사용할 수 있다.
  • 정책을 편집하거나 권한을 관리하지 않고 별칭을 기반으로 KMS키에 대한 액세스를 허용하거나 거부할 수 있다.
  • 별칭은 KMS 키의 속성이 아닌 독립적인 리소스이며 연결된 KMS 키에 영향을 주지 않고 추가, 변경 및 삭제헐 수 있다.

데이터 암복호화 절차

  • KMS를 사용하여 CMK를 사용하여 암호화된 일반 텍스트 데이터 키를 가져온다.
  • 일반 텍스트 데이터 키를 사용하여 데이터를 암호화하고 암호화된 데이터 키를 데이터와 함께 저장한다.
  • KMS 암호 해독을 사용하여 일반 텍스트 데이터 키를 가져오고 데이터를 해독한다.
  • 작업이 완료되면 메모리에서 일반 텍스트 데이터 키를 제거한다.

KMS 동작

  • KMS는 키를 중앙에서 관리하고 안전하게 저장한다.
  • KMI(Key Management Infrastructure)에서 키를 생성하거나 가져올 수 있다.
  • 데이터를 보호하기 위해 지원되는 AWS 서비스와 애플리케이션 내에서 키를 사용할 수 있지만 키는 KMS를 떠나지 않는다.
  • 데이터는 사용자가 제어하는 키로 암호화되거나 암호가 해독되도록 KMS에 제출된다.
  • 이러한 키에 대한 사용 정책을 설정하여 데이터를 암호화 및 해독하는 데 사용할 수 있는 사용자를 결정할 수 있다.

KMS 접근 제어

  • AWS KMS 키에 대한 액세스를 관리하는 주요 방법은 정책을 사용하는 것이다.

  • KMS 키 액세스는 다음을 사용하여 제어할 수 있다.

    = 키 정책(key policies)

    • 리소스 기반 정책

    • 모든 KMS 키에는 키 정책이 있다.

    • 키에 대한 액세스를 제어하기 위한 기본 매커니즘

      = IAM 정책

    • IAM 정책을 키 정책과 함께 사용하여 키에 대한 액세스를 제어한다.

    • IAM에서 IAM ID에 대한 모든 권한을 관리하는 데 도움이 된다.

      = Grants

    • 권한 허가를 키 정책 및 IAM 정책과 함께 사용하여 키에 대한 액세스를 허용한다.

    • 키 정책의 키에 대한 액세스를 허용하고 사용자가 자신의 액세스를 다른 사용자에게 위임할 수 있도록 한다.

  • KMS CMK에 대한 액세스를 허용하려면 핵심 정책을 단독으로 또는 IAM 정책 또는 권한 부여와 함께 사용해야 한다.

  • IAM 정책만으로는 키에 대한 액세스를 허용하기에 충분하지 않지만 키 정책과 함께 사용할 수 있다.

  • KMS 키를 생성하는 IAM 사용자는 키 소유자로 간주되지 않으며, 자신이 생성한 KMS 키를 사용하거나 관리할 수 있는 권한이 자동으로 부여되지 않는다.

KMS 키 또는 고객 마스터 키 순환

  • 키 순환은 암호화 작업에 사용되는 암호화 비밀인 키 재료만 변경한다.

  • KMS 키는 자동 키 순환을 위해 활성화될 수 있으며, KMS는 매년 키에 대한 새로운 암호화 재료를 생성한다.

  • KMS는 키로 암호화된 모든 데이터를 해독할 수 있도록 모든 이전 버전의 암호화 자료를 영구히 저장한다.

  • KMS 키를 삭제할 때까지 KMS는 순환된 키 재료를 삭제하지 않는다.

  • 키에 대한 모든 새 암호화 요청은 최신 버전의 키로 암호화 된다.

  • 순환은 Cloudwatch 및 CloudTrail에서 추적할 수 있다.

  • AWS 관리 키

    = 1년마다 자동으로 순환한다.

  • 고객 관리 키

    = 고객 관리 키는 자동 키 순환을 지원하지만 선택 사항이다.

    = 키는 매년 순환할 수 있다.

  • 가져온 키 재료 또는 클라우드에서 생성된 키가 있는 CMKKMS 사용자 지정 키 저장소 기능을 사용하는 HSM 클러스터

    = 자동 키 순환을 지원하지 않는다.

    = 필요에 따라 키를 수동으로 회전할 수 있는 유연성을 제공한다.

  • 수동으로 순환하는 키의 경우 응용 프로그램의 구성에 따라 데이터를 다시 암호화해야 한다.

KMS 다중 영역 키

  • AWS KMS는 여러 지역에서 동일한 키를 가지고 있는 것처럼 서로 교환하여 사용할 수 있는 여러 AWS 지역의 AWS KMS 키인 다중 지역 키를 지원한다.
  • Multi-Region 키는 키 재료와 키 ID가 동일하므로 데이터를 다시 암호화하고 다른 AWS 리전에서 암호를 해독할 수 있다.
  • 다중 영역 키는 AWS KMS를 암호화되지 않은 상태로 두지 않는다.
  • 다중 영역 키는 글로벌 키가 아니므로 각 다중 영역 키를 개별적으로 복제하고 관리해야 한다.

KMS 특징

  • 고유한 별칭 및 설명을 사용하여 키 생성
  • 사용자 키 가져오기
  • 키를 관리할 수 있는 IAM 사용자 및 역할 제어
  • 키를 사용하여 데이터를 암호화하고 해독할 수 있는 IAM 사용자 및 역할 제어
  • AWS KMS가 연간 기준으로 자동으로 키를 순환하도록 하려면 이 항목을 선택한다.
  • 키를 일시적으로 비활성화하여 다른 사용자가 사용할 수 없도록 할 수 있다.
  • 비활성화된 키 다시 활성화
  • 더 이상 사용하지 않는 키 삭제
  • AWS CloudTrail의 로그를 검사하여 키 사용 검사

VPC 인터페이스 Endpoint가 있는 KMS

  • AWS KMS는 VPC(Virtual Private Cloud)의 개인 인터페이스 끝점을 통해 연결할 수 있다.
  • 인터페이스 VPC Endpoint는 VPC와 AWS KMS 간의 통신이 전적으로 AWS 네트워크 내에서 수행되도록 보장한다.
  • 인터페이스 VPC Endpoint는 인터넷 게이트웨이, NAT 디바이스, VPN 또는 Direct Connect 연결 없이 VPC를 KMS에 직접 연결한다.
  • VPC의 인스턴스는 AWS KMS와 통신하는 데 공용 IP 주소가 필요하지 않다.
반응형