GCP - KMS Privesc
KMS
Informacje na temat KMS:
pageGCP - KMS EnumNależy zauważyć, że w KMS uprawnienia nie są dziedziczone tylko z Organizacji, Folderów i Projektów, ale także z Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Możesz użyć tego uprawnienia do odszyfrowania informacji przy użyciu klucza, na którym masz to uprawnienie.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Atakujący posiadający to uprawnienie mógłby przyznać sobie uprawnienia do korzystania z klucza w celu odszyfrowania informacji.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Oto koncepcyjne omówienie, jak działa ta delegacja:
Konto usługi A ma bezpośredni dostęp do odszyfrowywania za pomocą określonego klucza w KMS.
Konto usługi B otrzymuje uprawnienie
useToDecryptViaDelegation
. Pozwala to na żądanie KMS odszyfrowania danych w imieniu konta usługi A.
Użycie tego uprawnienia jest domyślne w sposób, w jaki usługa KMS sprawdza uprawnienia, gdy żądanie odszyfrowania jest wykonywane.
Podczas standardowego żądania odszyfrowania za pomocą interfejsu API Google Cloud KMS (w Pythonie lub innym języku), usługa sprawdza, czy konto usługi żądającej ma odpowiednie uprawnienia. Jeśli żądanie jest wykonywane przez konto usługi z uprawnieniem useToDecryptViaDelegation
, KMS sprawdza, czy to konto ma zezwolenie na żądanie odszyfrowania w imieniu podmiotu, który jest właścicielem klucza.
Konfiguracja delegacji
Zdefiniuj niestandardową rolę: Utwórz plik YAML (np.
custom_role.yaml
), który definiuje niestandardową rolę. Ten plik powinien zawierać uprawnieniecloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Oto przykład, jak może wyglądać ten plik:
Utwórz niestandardową rolę za pomocą gcloud CLI: Użyj poniższej komendy, aby utworzyć niestandardową rolę w swoim projekcie Google Cloud:
Zamień [YOUR_PROJECT_ID]
na ID Twojego projektu Google Cloud.
Przyznaj niestandardową rolę kontu usługi: Przypisz swoją niestandardową rolę do konta usługi, które będzie korzystać z tego uprawnienia. Użyj następującego polecenia:
Zamień [YOUR_PROJECT_ID]
i [SERVICE_ACCOUNT_EMAIL]
na ID swojego projektu i adres e-mail konta usługi, odpowiednio.
Last updated