GCP - KMS Privesc
KMS
Informations sur KMS :
GCP - KMS EnumNotez que dans KMS, les autorisations ne sont pas seulement héritées des Organisations, des Dossiers et des Projets mais aussi des Trousseaux de clés.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Vous pouvez utiliser cette autorisation pour déchiffrer des informations avec la clé sur laquelle vous avez cette autorisation.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Un attaquant avec cette permission pourrait se donner des permissions pour utiliser la clé afin de décrypter des informations.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Voici une ventilation conceptuelle de la façon dont cette délégation fonctionne :
Le compte de service A a un accès direct pour décrypter en utilisant une clé spécifique dans KMS.
Le compte de service B se voit accorder l'autorisation
useToDecryptViaDelegation
. Cela lui permet de demander à KMS de décrypter des données au nom du compte de service A.
L'utilisation de cette autorisation est implicite dans la manière dont le service KMS vérifie les autorisations lorsqu'une demande de décryptage est effectuée.
Lorsque vous faites une demande de décryptage standard en utilisant l'API Google Cloud KMS (en Python ou dans un autre langage), le service vérifie si le compte de service demandeur a les autorisations nécessaires. Si la demande est faite par un compte de service avec l'autorisation useToDecryptViaDelegation
, KMS vérifie si ce compte est autorisé à demander le décryptage au nom de l'entité qui possède la clé.
Configuration pour la délégation
Définir le rôle personnalisé : Créez un fichier YAML (par exemple,
custom_role.yaml
) qui définit le rôle personnalisé. Ce fichier doit inclure l'autorisationcloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Voici un exemple de ce à quoi pourrait ressembler ce fichier :
Créer le rôle personnalisé en utilisant la CLI gcloud : Utilisez la commande suivante pour créer le rôle personnalisé dans votre projet Google Cloud :
Remplacez [VOTRE_ID_DE_PROJET]
par l'ID de votre projet Google Cloud.
Accorder le rôle personnalisé à un compte de service : Attribuez votre rôle personnalisé à un compte de service qui utilisera cette autorisation. Utilisez la commande suivante :
Remplacez [VOTRE_ID_DE_PROJET]
et [EMAIL_DU_COMPTE_DE_SERVICE]
par votre ID de projet et l'e-mail du compte de service, respectivement.
Last updated