GCP KMS Crypto Key의 공개 권한 범위 점검

키 사용 권한을 필요한 주체와 암호화 작업으로 제한하세요.

설명

GCP KMS Crypto Key의 IAM 정책에 allUsers 또는 allAuthenticatedUsers 같은 광범위한 주체를 포함하면 필요한 범위를 넘어 키 사용 권한이 부여될 수 있습니다. 실제 영향은 부여한 역할에 따라 달라지며, 복호화 권한과 해당 암호문에 대한 접근이 함께 있으면 데이터 기밀성이 손상될 수 있습니다.

키의 IAM 권한은 키 재료를 공개한다는 뜻이 아닙니다. 예제의 roles/cloudkms.cryptoKeyEncrypter는 암호화를 허용하며, 그 자체로 복호화 권한을 부여하지 않습니다. 요청에는 서비스의 인증 요건과 적용되는 정책도 영향을 줍니다.

잠재적 영향

  • 의도하지 않은 주체가 허용된 키 작업을 수행할 수 있습니다.
  • 과도한 복호화·관리 권한은 민감한 데이터나 키를 사용하는 서비스에 영향을 줄 수 있습니다.

해결 방법

allUsers와 allAuthenticatedUsers에 대한 불필요한 권한을 제거하고, 실제로 키를 사용하는 승인된 주체만 지정하세요. 암호화·복호화·관리 역할을 필요에 따라 분리하고 가능한 한 개별 키 범위로 제한하세요. 정책 변경 시 필요한 서비스 계정의 권한을 유지하고 정상 작업과 미승인 요청의 거부를 확인하세요.

예시

IAM 정책 문서를 생성하는 발췌입니다. 이 문서를 실제 KMS 키에 적용하는 설정은 생략했으며, 예시 사용자 주소는 승인된 실제 주체로 바꾸세요.

변경 전

hcl
data "google_iam_policy" "kms_policy" {
  binding {
    role   = "roles/cloudkms.cryptoKeyEncrypter"
    members = ["allUsers"]
  }
}

allUsers에 암호화 역할을 부여하는 정책 문서입니다. 이러한 광범위한 주체를 키 정책에 포함하지 마세요.

변경 후

hcl
data "google_iam_policy" "kms_policy" {
  binding {
    role = "roles/cloudkms.cryptoKeyEncrypter"

    members = [
      "user:jane@example.com"
    ]
  }
}

암호화 역할의 대상을 지정한 사용자로 제한합니다. 다른 역할이나 상위 정책을 통해 부여된 권한도 함께 검토하세요.

참조