AWS - KMS Enum
KMS - Key Management Service
AWS Key Management Service (AWS KMS)는 사용자가 고객 마스터 키(CMK)를 생성하고 관리하는 과정을 단순화하는 관리형 서비스로 제공됩니다. 이 CMK는 사용자 데이터 암호화에 필수적입니다. AWS KMS의 주목할 만한 기능은 CMK가 주로 하드웨어 보안 모듈(HSM)에 의해 보호된다는 점으로, 암호화 키의 보호를 강화합니다.
KMS는 대칭 암호화를 사용합니다. 이는 정지된 정보(예: S3 내부)를 암호화하는 데 사용됩니다. 전송 중인 정보를 암호화하려면 TLS와 같은 것을 사용해야 합니다.
KMS는 지역별 서비스입니다.
Amazon의 관리자들은 귀하의 키에 접근할 수 없습니다. 그들은 귀하의 키를 복구할 수 없으며, 귀하의 키 암호화에 도움을 주지 않습니다. AWS는 단순히 운영 체제와 기본 애플리케이션을 관리하며, 암호화 키를 관리하고 해당 키가 사용되는 방식을 관리하는 것은 우리에게 달려 있습니다.
고객 마스터 키(CMK): 최대 4KB 크기의 데이터를 암호화할 수 있습니다. 일반적으로 DEK(데이터 암호화 키)를 생성, 암호화 및 복호화하는 데 사용됩니다. 그런 다음 DEK는 데이터를 암호화하는 데 사용됩니다.
고객 마스터 키(CMK)는 AWS KMS에서 마스터 키의 논리적 표현입니다. 마스터 키의 식별자 및 기타 메타데이터(생성 날짜, 설명 및 키 상태 포함) 외에도, CMK는 데이터를 암호화하고 복호화하는 데 사용되는 키 자료를 포함합니다. CMK를 생성할 때 기본적으로 AWS KMS는 해당 CMK에 대한 키 자료를 생성합니다. 그러나 키 자료 없이 CMK를 생성한 다음 해당 CMK에 자신의 키 자료를 가져올 수 있습니다.
마스터 키에는 두 가지 유형이 있습니다:
AWS 관리 CMK: 다른 서비스에서 데이터를 암호화하는 데 사용. 해당 지역에서 해당 서비스를 처음 구현할 때 생성됩니다. 3년마다 회전하며 변경할 수 없습니다.
고객 관리 CMK: 유연성, 회전, 구성 가능한 접근 및 키 정책. 키 활성화 및 비활성화 가능.
Key Management Service(KMS)에서의 봉투 암호화: 데이터 키로 데이터를 암호화한 다음 마스터 키로 데이터 키를 암호화하는 이중 계층 시스템.
Key Policies
이는 KMS에서 키를 사용할 수 있고 접근할 수 있는 사람을 정의합니다.
기본적으로:
KMS 키를 소유한 AWS 계정에 KMS 키에 대한 전체 접근 권한을 부여합니다.
다른 AWS 리소스 정책과 달리, AWS KMS 키 정책은 계정이나 그 사용자가 자동으로 권한을 가지지 않습니다. 계정 관리자에게 권한을 부여하려면, 키 정책에 이 권한을 제공하는 명시적 문장이 포함되어야 합니다, 다음과 같은 문장처럼.
계정(
"AWS": "arn:aws:iam::111122223333:root"
) IAM 권한이 작동하지 않습니다.키 정책 외에도 계정이 IAM 정책을 사용하여 KMS 키에 접근할 수 있도록 허용합니다.
이 권한이 없으면, 키에 접근할 수 있는 IAM 정책은 효과가 없지만, 키에 접근을 거부하는 IAM 정책은 여전히 효과적입니다.
계정 관리자, 계정 루트 사용자에게 접근 제어 권한을 부여하여 키가 관리 불가능해질 위험을 줄입니다, 이는 삭제할 수 없습니다.
기본 정책 예:
계정이 허용된 경우 ("arn:aws:iam::111122223333:root"
) 계정의 principal은 KMS 키를 사용하기 위해 IAM 권한이 여전히 필요합니다. 그러나 예를 들어 역할의 ARN이 키 정책에서 명시적으로 허용된 경우, 그 역할은 IAM 권한이 필요하지 않습니다.
Key Administrators
기본 키 관리자:
KMS를 관리할 수 있지만 데이터를 암호화하거나 복호화할 수는 없습니다.
그룹이 아닌 IAM 사용자와 역할만 키 관리자 목록에 추가할 수 있습니다.
외부 CMK를 사용하는 경우, 키 관리자는 키 자료를 가져올 수 있는 권한을 가집니다.
CMKs의 회전
동일한 키가 오래 유지될수록 더 많은 데이터가 해당 키로 암호화되며, 해당 키가 유출되면 더 넓은 범위의 데이터가 위험에 처하게 됩니다. 또한, 키가 활성 상태로 오래 있을수록 유출될 확률이 높아집니다.
KMS는 고객 키를 매 365일마다 회전하며 (또는 원할 때 수동으로 수행할 수 있습니다) AWS가 관리하는 키는 매 3년마다 회전하며 이 시간은 변경할 수 없습니다.
이전 키는 유지되어 회전 이전에 암호화된 데이터를 복호화할 수 있습니다.
유출된 경우, 키를 회전해도 위협이 제거되지 않으며, 유출된 키로 암호화된 모든 데이터를 복호화할 수 있습니다. 그러나 새로운 데이터는 새로운 키로 암호화됩니다.
CMK가 비활성화 또는 삭제 대기 중 상태인 경우, KMS는 CMK가 다시 활성화되거나 삭제가 취소될 때까지 키 회전을 수행하지 않습니다.
수동 회전
새로운 CMK를 생성해야 하며, 새로운 CMK-ID가 생성되므로 애플리케이션을 새로운 CMK-ID를 참조하도록 업데이트해야 합니다.
이 과정을 쉽게 하기 위해 키-ID를 참조하는 별칭을 사용하고, 별칭이 참조하는 키를 업데이트할 수 있습니다.
이전 파일을 복호화하기 위해 이전 키를 유지해야 합니다.
온프레미스 키 인프라에서 키를 가져올 수 있습니다.
기타 관련 KMS 정보
KMS는 월별로 모든 서비스에서 받은 암호화/복호화 요청 수에 따라 가격이 책정됩니다.
KMS는 CloudTrail과의 완전한 감사 및 준수 통합을 제공합니다. 여기서 KMS에서 수행된 모든 변경 사항을 감사할 수 있습니다.
KMS 정책을 통해 다음을 수행할 수 있습니다:
데이터 키를 생성할 수 있는 사람과 이러한 키를 사용할 수 있는 서비스를 제한
시스템 접근을 암호화 전용, 복호화 전용 또는 둘 다로 제한
시스템이 지역 간에 키에 접근할 수 있도록 정의 (그러나 KMS를 호스팅하는 지역의 장애가 다른 지역의 시스템 가용성에 영향을 미칠 수 있으므로 권장되지 않음)
지역 간에 키를 동기화하거나 이동/복사할 수 없으며, 지역 간 접근을 허용하는 규칙만 정의할 수 있습니다.
Enumeration
권한 상승
AWS - KMS Privesc포스트 익스플로잇
AWS - KMS Post Exploitation지속성
AWS - KMS Persistence참고 자료
Last updated