Translated ['src/pentesting-cloud/aws-security/aws-services/aws-kms-enum

This commit is contained in:
Translator
2025-07-03 14:54:15 +00:00
parent 324e6800ba
commit 276edc32f3

View File

@@ -2,26 +2,26 @@
{{#include ../../../banners/hacktricks-training.md}}
## KMS - Service de Gestion des Clés
## KMS - Key Management Service
Le Service de Gestion des Clés d'AWS (AWS KMS) est présenté comme un service géré, simplifiant le processus pour les utilisateurs de **créer et gérer des clés maîtresses client** (CMK). Ces CMK sont essentielles dans le chiffrement des données utilisateur. Une caractéristique notable d'AWS KMS est que les CMK sont principalement **sécurisées par des modules de sécurité matériels** (HSM), renforçant la protection des clés de chiffrement.
AWS Key Management Service (AWS KMS) est présenté comme un service géré, simplifiant le processus pour les utilisateurs de **créer et gérer des clés maîtresses client** (CMKs). Ces CMKs sont intégrales dans le chiffrement des données utilisateur. Une caractéristique notable d'AWS KMS est que les CMKs sont principalement **sécurisées par des modules de sécurité matériels** (HSMs), renforçant la protection des clés de chiffrement.
KMS utilise **la cryptographie symétrique**. Cela est utilisé pour **chiffrer les informations au repos** (par exemple, à l'intérieur d'un S3). Si vous devez **chiffrer des informations en transit**, vous devez utiliser quelque chose comme **TLS**.
KMS est un **service spécifique à une région**.
**Les administrateurs d'Amazon n'ont pas accès à vos clés**. Ils ne peuvent pas récupérer vos clés et ne vous aident pas avec le chiffrement de vos clés. AWS administre simplement le système d'exploitation et l'application sous-jacente, il nous appartient d'administrer nos clés de chiffrement et de gérer comment ces clés sont utilisées.
**Les administrateurs d'Amazon n'ont pas accès à vos clés**. Ils ne peuvent pas récupérer vos clés et ils ne vous aident pas avec le chiffrement de vos clés. AWS administre simplement le système d'exploitation et l'application sous-jacente, il nous appartient d'administrer nos clés de chiffrement et de gérer comment ces clés sont utilisées.
**Clés Maîtresses Client** (CMK) : Peuvent chiffrer des données jusqu'à 4 Ko. Elles sont généralement utilisées pour créer, chiffrer et déchiffrer les DEK (Clés de Chiffrement des Données). Ensuite, les DEK sont utilisées pour chiffrer les données.
**Clés Maîtresses Client** (CMK) : Peuvent chiffrer des données jusqu'à 4 Ko. Elles sont généralement utilisées pour créer, chiffrer et déchiffrer les DEKs (Data Encryption Keys). Ensuite, les DEKs sont utilisés pour chiffrer les données.
Une clé maîtresse client (CMK) est une représentation logique d'une clé maîtresse dans AWS KMS. En plus des identifiants de la clé maîtresse et d'autres métadonnées, y compris sa date de création, sa description et son état, une **CMK contient le matériel de clé utilisé pour chiffrer et déchiffrer les données**. Lorsque vous créez une CMK, par défaut, AWS KMS génère le matériel de clé pour cette CMK. Cependant, vous pouvez choisir de créer une CMK sans matériel de clé et ensuite importer votre propre matériel de clé dans cette CMK.
Une clé maîtresse client (CMK) est une représentation logique d'une clé maîtresse dans AWS KMS. En plus des identifiants de la clé maîtresse et d'autres métadonnées, y compris sa date de création, sa description et son état de clé, une **CMK contient le matériel de clé utilisé pour chiffrer et déchiffrer les données**. Lorsque vous créez une CMK, par défaut, AWS KMS génère le matériel de clé pour cette CMK. Cependant, vous pouvez choisir de créer une CMK sans matériel de clé et ensuite importer votre propre matériel de clé dans cette CMK.
Il existe 2 types de clés maîtresses :
- **CMK gérées par AWS : Utilisées par d'autres services pour chiffrer des données**. Elles sont utilisées par le service qui les a créées dans une région. Elles sont créées la première fois que vous implémentez le chiffrement dans ce service. Elles sont renouvelées tous les 3 ans et il n'est pas possible de les modifier.
- **CMK gérées par le client** : Flexibilité, rotation, accès configurable et politique de clé. Activer et désactiver les clés.
- **CMKs gérées par AWS : Utilisées par d'autres services pour chiffrer des données**. Elles sont utilisées par le service qui les a créées dans une région. Elles sont créées la première fois que vous implémentez le chiffrement dans ce service. Elles sont renouvelées tous les 3 ans et il n'est pas possible de les changer.
- **CMKs gérées par le client** : Flexibilité, rotation, accès configurable et politique de clé. Activer et désactiver les clés.
**Chiffrement par enveloppe** dans le contexte du Service de Gestion des Clés (KMS) : Système hiérarchique à deux niveaux pour **chiffrer les données avec une clé de données puis chiffrer la clé de données avec la clé maîtresse**.
**Chiffrement par enveloppe** dans le contexte du service de gestion des clés (KMS) : Système hiérarchique à deux niveaux pour **chiffrer les données avec une clé de données puis chiffrer la clé de données avec la clé maîtresse**.
### Politiques de Clé
@@ -31,15 +31,15 @@ Par **défaut :**
- Cela donne à **l'IAM du** **compte AWS qui possède la clé KMS l'accès** pour gérer l'accès à la clé KMS via IAM.
Contrairement à d'autres politiques de ressources AWS, une **politique de clé KMS ne donne pas automatiquement la permission à l'un des principaux du compte**. Pour donner la permission aux administrateurs du compte, **la politique de clé doit inclure une déclaration explicite** qui fournit cette permission, comme celle-ci.
Contrairement à d'autres politiques de ressources AWS, une **politique de clé KMS AWS ne donne pas automatiquement la permission à l'un des principaux du compte**. Pour donner la permission aux administrateurs de compte, **la politique de clé doit inclure une déclaration explicite** qui fournit cette permission, comme celle-ci.
- Sans permettre au compte (`"AWS": "arn:aws:iam::111122223333:root"`) les permissions IAM ne fonctionneront pas.
- Cela **permet au compte d'utiliser des politiques IAM** pour autoriser l'accès à la clé KMS, en plus de la politique de clé.
**Sans cette permission, les politiques IAM qui permettent l'accès à la clé sont inefficaces**, bien que les politiques IAM qui refusent l'accès à la clé restent efficaces.
**Sans cette permission, les politiques IAM qui permettent l'accès à la clé sont inefficaces**, bien que les politiques IAM qui nient l'accès à la clé soient toujours efficaces.
- Cela **réduit le risque que la clé devienne ingérable** en donnant la permission de contrôle d'accès aux administrateurs du compte, y compris l'utilisateur root du compte, qui ne peut pas être supprimé.
- Cela **réduit le risque que la clé devienne ingérable** en donnant la permission de contrôle d'accès aux administrateurs de compte, y compris l'utilisateur root du compte, qui ne peut pas être supprimé.
**Exemple de politique par défaut** :
```json
@@ -54,11 +54,11 @@ Contrairement à d'autres politiques de ressources AWS, une **politique de clé
}
```
> [!WARNING]
> Si le **compte est autorisé** (`"arn:aws:iam::111122223333:root"`), un **principal** du compte **aura toujours besoin des permissions IAM** pour utiliser la clé KMS. Cependant, si l'**ARN** d'un rôle par exemple est **spécifiquement autorisé** dans la **Politique de Clé**, ce rôle **n'a pas besoin de permissions IAM**.
> Si le **compte est autorisé** (`"arn:aws:iam::111122223333:root"`), un **principal** du compte **aura toujours besoin des permissions IAM** pour utiliser la clé KMS. Cependant, si l'**ARN** d'un rôle par exemple est **spécifiquement autorisé** dans la **politique de clé**, ce rôle **n'a pas besoin de permissions IAM**.
<details>
<summary>Détails de la Politique</summary>
<summary>Détails de la politique</summary>
Propriétés d'une politique :
@@ -67,11 +67,11 @@ Propriétés d'une politique :
- Action --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (permissions)
- Effet --> Autoriser/Refuser
- Principal --> arn affecté
- Conditions (optionnel) --> Condition pour donner les permissions
- Conditions (optionnel) --> Condition pour accorder les permissions
Accords :
- Permet de déléguer vos permissions à un autre principal AWS au sein de votre compte AWS. Vous devez les créer en utilisant les API AWS KMS. Il peut être indiqué l'identifiant CMK, le principal bénéficiaire et le niveau d'opération requis (Déchiffrer, Chiffrer, GénérerDataKey...)
- Autorise à déléguer vos permissions à un autre principal AWS au sein de votre compte AWS. Vous devez les créer en utilisant les API AWS KMS. Il peut être indiqué l'identifiant CMK, le principal bénéficiaire et le niveau d'opération requis (Déchiffrer, Chiffrer, GénérerDataKey...)
- Après la création de l'accord, un GrantToken et un GrantID sont émis
**Accès** :
@@ -82,17 +82,17 @@ Accords :
</details>
### Administrateurs de C
### Administrateurs de cs
Administrateur de clé par défaut :
Administrateur de clés par défaut :
- A accès pour gérer KMS mais pas pour chiffrer ou déchiffrer des données
- Seuls les utilisateurs et rôles IAM peuvent être ajoutés à la liste des Administrateurs de Clé (pas les groupes)
- Si un CMK externe est utilisé, les Administrateurs de Clé ont la permission d'importer des matériaux de clé
- Seuls les utilisateurs et rôles IAM peuvent être ajoutés à la liste des administrateurs de cs (pas de groupes)
- Si un CMK externe est utilisé, les administrateurs de cs ont la permission d'importer des matériaux de clé
### Rotation des CMK
- Plus la même clé est laissée en place longtemps, plus de données sont chiffrées avec cette clé, et si cette clé est compromise, alors plus la zone d'impact des données est à risque. De plus, plus la clé est active longtemps, plus la probabilité qu'elle soit compromise augmente.
- Plus la même clé est laissée en place longtemps, plus de données sont chiffrées avec cette clé, et si cette clé est compromise, alors la zone d'impact des données est plus large. De plus, plus la clé est active longtemps, plus la probabilité qu'elle soit compromise augmente.
- **KMS fait tourner les clés clients tous les 365 jours** (ou vous pouvez effectuer le processus manuellement quand vous le souhaitez) et **les clés gérées par AWS tous les 3 ans** et cette fois-ci, cela ne peut pas être changé.
- **Les anciennes clés sont conservées** pour déchiffrer les données qui ont été chiffrées avant la rotation
- En cas de compromission, faire tourner la clé ne supprimera pas la menace car il sera possible de déchiffrer toutes les données chiffrées avec la clé compromise. Cependant, les **nouvelles données seront chiffrées avec la nouvelle clé**.
@@ -102,7 +102,7 @@ Administrateur de clé par défaut :
- Un **nouveau CMK doit être créé**, ensuite, un nouvel ID de CMK est créé, donc vous devrez **mettre à jour** toute **application** pour **référencer** le nouvel ID de CMK.
- Pour faciliter ce processus, vous pouvez **utiliser des alias pour référencer un key-id** et ensuite simplement mettre à jour la clé à laquelle l'alias fait référence.
- Vous devez **conserver les anciennes clés pour déchiffrer les anciens fichiers** chiffrés avec elles.
- Vous devez **conserver les anciennes clés pour déchiffrer les anciens fichiers** chiffrés avec celles-ci.
Vous pouvez importer des clés de votre infrastructure de clés sur site.
@@ -128,6 +128,11 @@ aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores
# This script enumerates AWS KMS keys across all available regions.
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n';
done
```
### Privesc