GCP - KMS Enum
Reading time: 5 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
KMS
클라우드 키 관리 서비스는 암호화 키를 안전하게 저장하는 역할을 하며, 이는 민감한 데이터의 암호화 및 복호화와 같은 작업에 필수적입니다. 이러한 키는 키 링 내에서 조직되어 구조화된 관리를 가능하게 합니다. 또한, 접근 제어는 개별 키 수준 또는 전체 키 링에 대해 세밀하게 구성할 수 있어, 권한이 보안 요구 사항에 정확히 맞춰지도록 보장합니다.
KMS 키 링은 기본적으로 글로벌로 생성되며, 이는 해당 키 링 내의 키가 모든 지역에서 접근 가능함을 의미합니다. 그러나 특정 지역에 특정 키 링을 생성하는 것도 가능합니다.
키 보호 수준
- 소프트웨어 키: 소프트웨어 키는 KMS에 의해 완전히 소프트웨어로 생성 및 관리됩니다. 이러한 키는 **하드웨어 보안 모듈(HSM)**에 의해 보호되지 않으며, 테스트 및 개발 목적으로 사용될 수 있습니다. 소프트웨어 키는 보안이 낮고 공격에 취약하기 때문에 생산 용도로는 권장되지 않습니다.
- 클라우드 호스팅 키: 클라우드 호스팅 키는 KMS에 의해 클라우드에서 생성 및 관리되며, 고가용성 및 신뢰할 수 있는 인프라를 사용합니다. 이러한 키는 HSM에 의해 보호되지만, HSM은 특정 고객에 전용되지 않습니다. 클라우드 호스팅 키는 대부분의 생산 사용 사례에 적합합니다.
- 외부 키: 외부 키는 KMS 외부에서 생성 및 관리되며, 암호화 작업에 사용하기 위해 KMS로 가져옵니다. 외부 키는 고객의 선호에 따라 하드웨어 보안 모듈(HSM) 또는 소프트웨어 라이브러리에 저장될 수 있습니다.
키 용도
- 대칭 암호화/복호화: 단일 키를 사용하여 데이터를 암호화하고 복호화하는 데 사용됩니다. 대칭 키는 대량의 데이터를 암호화하고 복호화하는 데 빠르고 효율적입니다.
- 지원됨: cryptoKeys.encrypt, cryptoKeys.decrypt
- 비대칭 서명: 키를 공유하지 않고 두 당사자 간의 안전한 통신에 사용됩니다. 비대칭 키는 공개 키와 개인 키로 구성된 쌍으로 제공됩니다. 공개 키는 다른 사람과 공유되며, 개인 키는 비밀로 유지됩니다.
- 지원됨: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- 비대칭 복호화: 메시지 또는 데이터의 진위를 확인하는 데 사용됩니다. 디지털 서명은 개인 키를 사용하여 생성되며, 해당 공개 키를 사용하여 검증할 수 있습니다.
- 지원됨: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC 서명: 비밀 키를 사용하여 메시지 인증 코드(MAC)를 생성함으로써 데이터 무결성과 진위를 보장하는 데 사용됩니다. HMAC는 네트워크 프로토콜 및 소프트웨어 애플리케이션에서 메시지 인증에 일반적으로 사용됩니다.
- 지원됨: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
회전 주기 및 파기 예정 기간
기본적으로 각 90일이지만, 쉽게 및 완전히 사용자 정의할 수 있습니다.
"파기 예정" 기간은 사용자가 키 삭제를 요청한 시점부터 키가 삭제될 때까지의 시간입니다. 키가 생성된 후에는 변경할 수 없습니다(기본 1일).
기본 버전
각 KMS 키는 여러 버전을 가질 수 있으며, 그 중 하나는 기본 버전이어야 하며, 이는 KMS 키와 상호작용할 때 버전이 지정되지 않을 경우 사용됩니다.
열거
키를 나열할 수 있는 권한이 있는 경우 다음과 같이 접근할 수 있습니다:
# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>
# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>
# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global
권한 상승
포스트 익스플로잇
참고 문헌
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.