키는 누가 관리하나요?

개발자를 위한 AWS 보안 활용

Rahul Singh

Technical Product Manager

KMS 키의 두 가지 유형

AWS 관리형

  • 서비스가 생성, 별칭은 aws/s3
  • 정책은 읽기만 가능, 수정 불가
  • 월별 요금 없음

AWS 관리형 키와 고객 관리형 키를 키 정책, 교체 주기, 비용이라는 동일한 세 항목으로 비교하는 두 개의 카드. 고객 관리형 카드의 키 정책 항목이 강조 표시되어 있습니다. 각 카드에는 별칭(aws/s3, alias/reports)이 표시됩니다.

개발자를 위한 AWS 보안 활용

KMS 키의 두 가지 유형

AWS 관리형

  • 서비스가 생성, 별칭은 aws/s3
  • 정책은 읽기만 가능, 수정 불가
  • 월별 요금 없음

고객 관리형

  • 직접 생성, 별칭은 alias/reports, 정책도 직접 작성
  • 교체 주기도 직접 설정
  • 키당 월 1달러

AWS 관리형 키와 고객 관리형 키를 키 정책, 교체 주기, 비용이라는 동일한 세 항목으로 비교하는 두 개의 카드. 고객 관리형 카드의 키 정책 항목이 강조 표시되어 있습니다. 각 카드에는 별칭(aws/s3, alias/reports)이 표시됩니다.

개발자를 위한 AWS 보안 활용

두 개의 관문, 모두 통과해야 합니다

복호화 요청 하나가 두 개의 관문 중 첫 번째로 다가가는 모습입니다. IAM 정책 관문은 실선으로 그려지고 번호 1이 매겨져 있으며, 그 뒤의 키 정책 관문은 점선에 회색으로 표시되어 아직 응답하지 않은 상태입니다.

  1. IAM 정책: 호출자가 요청할 수 있는 작업
개발자를 위한 AWS 보안 활용

두 개의 관문, 모두 통과해야 합니다

복호화 요청 하나가 번호가 매겨진 두 관문(표시 1은 IAM 정책, 표시 2는 키 정책)을 왼쪽에서 오른쪽으로 통과한 뒤 KMS 키에 도달하는 모습입니다. 두 관문 아래의 괄호 표시는 두 응답이 독립적임을 나타냅니다.

  1. IAM 정책: 호출자가 요청할 수 있는 작업
  2. 키 정책: 키가 응답할 대상

기본 키 정책: IAM에 위임

부여(Grant): 특정 보안 주체에게 특정 키 작업을 허용하며 개별적으로 취소 가능

개발자를 위한 AWS 보안 활용

키는 데이터에 직접 닿지 않습니다

사용자를 대신해 Amazon S3가 표시 1에서 AWS KMS를 호출하면, KMS는 데이터 키 하나를 평문 사본과 암호화된 사본 두 가지 형태로 반환합니다. 암호화된 사본은 객체 암호문과 함께 저장되며, 표시 2의 점선 반환 경로는 복호화 호출을 통해 이를 다시 가져옵니다.

봉투 암호화(Envelope Encryption)

직접 암호화: 4 KB 상한

개발자를 위한 AWS 보안 활용

키는 데이터에 직접 닿지 않습니다

사용자를 대신해 Amazon S3가 표시 1에서 AWS KMS를 호출하면, KMS는 데이터 키 하나를 평문 사본과 암호화된 사본 두 가지 형태로 반환합니다. 암호화된 사본은 객체 암호문과 함께 저장되며, 표시 2의 점선 반환 경로는 복호화 호출을 통해 이를 다시 가져옵니다.

봉투 암호화

직접 암호화: 4 KB 상한

  1. GenerateDataKey로 사본 두 개 반환
  2. 저장된 사본에 kms:Decrypt 수행
개발자를 위한 AWS 보안 활용

계정 간에는 어느 쪽도 양쪽을 다 보지 못합니다

호출자 계정

  • IAM에서 작업 허용
  • 리소스: 키 ARN

계정 경계로 나뉜 점선 패널 두 개. 위쪽 패널에는 호출자의 역할과 IAM 정책이, 아래쪽 패널에는 키 정책과 KMS 키가 있으며, 요청은 이 경계를 가로지릅니다.

개발자를 위한 AWS 보안 활용

계정 간에는 어느 쪽도 양쪽을 다 보지 못합니다

호출자 계정

  • IAM에서 작업 허용
  • 리소스: 키 ARN

키 소유자 계정

  • 호출자를 명시한 키 정책
  • 계정 또는 계정 내 역할

계정 경계로 나뉜 점선 패널 두 개. 위쪽 패널에는 호출자의 역할과 IAM 정책이, 아래쪽 패널에는 키 정책과 KMS 키가 있으며, 요청은 이 경계를 가로지릅니다.

개발자를 위한 AWS 보안 활용

추측하지 말고 거부 메시지를 확인하세요

ID 기반

  • AccessDeniedException 뒤에 관문을 명시하는 절이 이어짐

  • no identity-based policy allows

  • 호출자의 IAM 정책을 수정하세요

 

첫 번째 관문에서 멈춘 복호화 요청입니다. IAM 정책에는 빨간색 X 표시가 있고, 그 뒤의 키 정책은 회색 처리되어 도달하지 못했습니다. 그림 아래 설명 문구: no identity-based policy allows.

 

개발자를 위한 AWS 보안 활용

추측하지 말고 거부 메시지를 확인하세요

ID 기반

  • AccessDeniedException 뒤에 관문을 명시하는 절이 이어짐

  • no identity-based policy allows

  • 호출자의 IAM 정책을 수정하세요

리소스 기반

  • no resource-based policy allows
  • 키 정책을 수정하세요

첫 번째 관문에서 멈춘 복호화 요청입니다. IAM 정책에는 빨간색 X 표시가 있고, 그 뒤의 키 정책은 회색 처리되어 도달하지 못했습니다. 그림 아래 설명 문구: no identity-based policy allows.

IAM 정책은 녹색 체크로 통과했지만 두 번째 관문에서 멈춘 복호화 요청입니다. 키 정책에는 빨간색 X 표시가 있습니다. 그림 아래 설명 문구: no resource-based policy allows.

개발자를 위한 AWS 보안 활용

교체가 실제로 바꾸는 것

자동 교체

  • 기본값 365일
  • 범위 90~2,560일

최소, 기본, 최대 자동 교체 주기(일)를 보여주는 카드 세 개와 그 아래 어떤 키가 누구의 일정에 따라 교체되는지 보여주는 세 개의 행입니다.

개발자를 위한 AWS 보안 활용

교체가 실제로 바꾸는 것

자동 교체

  • 기본값 365일
  • 범위 90~2,560일

수동 교체

  • RotateKeyOnDemand, 키당 최대 25회

두 가지 제한

  • AWS 관리형 키는 연 1회로 고정
  • 자동 교체는 KMS가 생성한 대칭 키 자료에만 적용

최소, 기본, 최대 자동 교체 주기(일)를 보여주는 카드 세 개와 그 아래 어떤 키가 누구의 일정에 따라 교체되는지 보여주는 세 개의 행입니다.

개발자를 위한 AWS 보안 활용

교체로도 해결되지 않는 것

교체 시점을 기준으로 양쪽을 비교하는 네 개의 행입니다. 키 자료 행은 버전 1에서 버전 2로 바뀌지만, 키 식별자, 별칭과 키 정책, 이전에 작성된 객체는 양쪽 모두 동일합니다.

변경됨: 기반이 되는 키 자료

변경 없음: 키 ID, ARN, 별칭, 키 정책

개발자를 위한 AWS 보안 활용

교체로도 해결되지 않는 것

교체 시점을 기준으로 양쪽을 비교하는 네 개의 행입니다. 키 자료 행은 버전 1에서 버전 2로 바뀌지만, 키 식별자, 별칭과 키 정책, 이전에 작성된 객체는 양쪽 모두 동일합니다.

변경됨: 기반이 되는 키 자료

변경 없음: 키 ID, ARN, 별칭, 키 정책

  • 코드는 전혀 수정할 필요 없음
  • 기존 객체와 지나치게 넓은 정책은 그대로 유지됨
개발자를 위한 AWS 보안 활용

그렇다면 왜 켜야 할까요

얻는 이점

  • 하나의 버전이 모든 데이터를 커버하지 않음
  • 교체를 의무화하는 컴플라이언스 및 계약 규정

'교체 활성화'라는 레이블 아래, '얻는 이점'이라는 제목의 녹색 카드입니다. 녹색 체크와 함께 '365일마다 교체'라는 감사 규칙이 표시되고, v1, v2, v3로 연결된 키 하나가 각 버전은 자신이 작성한 것만 커버한다는 설명과 함께 그려져 있습니다.

개발자를 위한 AWS 보안 활용

그렇다면 왜 켜야 할까요

얻는 이점

  • 하나의 버전이 모든 데이터를 커버하지 않음
  • 교체를 의무화하는 컴플라이언스 및 계약 규정

 

드는 비용

  • 코드 변경 없음, 재암호화도 필요 없음

앞서 본 녹색 '얻는 이점' 카드 아래에 '드는 비용'이라는 제목의 두 번째 카드가 추가되었습니다. 이 카드에는 두 개의 행이 있습니다: 코드 변경 없음, 기존 객체 재암호화 불필요.

개발자를 위한 AWS 보안 활용

연습해 봅시다!

개발자를 위한 AWS 보안 활용

Preparing Video For Download...