GCP - KMS Privesc
Last updated
Last updated
KMS hakkında bilgi:
KMS'de izinler, Orglar, Klasörler ve Projelerden miras alındığı gibi Anahtar Halkaları'ndan da miras alınır.
cloudkms.cryptoKeyVersions.useToDecrypt
Bu izni kullanarak, bu izne sahip olduğunuz anahtarla bilgileri şifre çözme işlemi yapabilirsiniz.
cloudkms.cryptoKeys.setIamPolicy
Bu izne sahip bir saldırgan, anahtarı kullanarak bilgileri şifrelemek için kendisine izin verebilir.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
İşte bu yetkilendirme nasıl çalışırın kavramsal bir açıklaması:
Hizmet Hesabı A, KMS'deki belirli bir anahtarı kullanarak şifrelemeyi doğrudan çözebilme yetkisine sahiptir.
Hizmet Hesabı B, useToDecryptViaDelegation
iznini alır. Bu, Hizmet Hesabı A adına KMS'den verileri çözme isteği yapabilmesine olanak tanır.
Bu izin, KMS hizmetinin izinleri kontrol ettiği şekilde örtük olarak kullanılır.
Google Cloud KMS API'sini (Python veya başka bir dilde) kullanarak standart bir çözme isteği yaptığınızda, hizmet isteği yapan hizmet hesabının gerekli izinlere sahip olup olmadığını kontrol eder. İstek, useToDecryptViaDelegation
iznine sahip bir hizmet hesabı tarafından yapılıyorsa, KMS, bu hesabın anahtarı sahibi varlık adına çözme isteği yapmaya yetkili olup olmadığını doğrular.
Özel Rolü Tanımlayın: Özel rolü tanımlayan bir YAML dosyası oluşturun (örneğin, custom_role.yaml
). Bu dosya, cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
iznini içermelidir. İşte bu dosyanın nasıl görünebileceğine dair bir örnek:
gcloud CLI kullanarak Özel Rol Oluşturma: Google Cloud projenizde özel rol oluşturmak için aşağıdaki komutu kullanın:
[YOUR_PROJECT_ID]
yerine Google Cloud proje kimliğinizle değiştirin.
Özel Rolü Bir Hizmet Hesabına Atama: Bu izni kullanacak bir hizmet hesabına özel rolünüzü atayın. Aşağıdaki komutu kullanın:
[PROJE_IDNİZ]
ve [HİZMET_HESABI_EMAILİ]
ifadelerini sırasıyla proje kimliğinizle ve hizmet hesabının e-posta adresiyle değiştirin.