Pourquoi ne puis-je pas créer ou attacher un volume EBS chiffré à l'aide d'une clé principale client AWS KMS personnalisée ?

Date de la dernière mise à jour : 01/09/2020

Pourquoi ne puis-je pas créer ou attacher un volume Amazon Elastic Block Store (Amazon EBS) chiffré à partir d'un instantané chiffré avec une clé principale client (CMK) AWS Key Management Service (AWS KMS) ?

Brève description

Il est possible que vous ne puissiez pas créer ou attacher un volume EBS chiffré à partir d'un instantané chiffré si votre instantané et la clé KMS personnalisée utilisée pour chiffrer l'instantané se trouvent dans le même compte et ne disposent pas d'autorisations de la stratégie de clé. Veillez à autoriser l'utilisateur ou le rôle AWS Identity and Access Management (IAM) dans la stratégie de clé KMS.

Solution

Identifier les autorisations manquantes de la stratégie par le biais de l'historique des événements AWS CloudTrail

1.    Ouvrez la console CloudTrail.

2.    Choisissez Historique des événements puis, dans le champ Plage de temps, saisissez une fenêtre de 15 minutes autour des appels d'API AttachVolume ou CreateVolume.

3.    Choisissez Filtre, Source d'événement, puis saisissez kms.amazonaws.com.

4.    Une fois les résultats chargés, sélectionnez le bouton de téléchargement situé dans le coin supérieur droit de la console, puis cliquez sur Télécharger le fichier CSV.

5.    Ouvrez le fichier téléchargé, puis filtrez la colonne Code d'erreur en sélectionnant le critère AccessDenied. Tous les Noms d'événements associés au code d'erreur AccessDenied indiquent généralement des autorisations manquantes.

Remarque : l'affichage des événements CloudTrail sous l'onglet Historique des événements peut prendre jusqu'à 15 minutes. En effet, Il est possible que l'Historique des événements n'affiche aucun événement immédiatement après la réception du statut d'échec CreateVolume ou AttachVolume.

Après avoir identifié les autorisations manquantes, suivez ces instructions afin de résoudre le problème :

Vérifier que la stratégie CMK inclut l'utilisateur ou le rôle IAM tentant d'attacher ou de créer le volume

Dans la vue par défaut de la console AWS KMS :

1.    Ouvrez la console AWS KMS.

2.    Choisissez Clés gérées par le client, puis sélectionnez la clé appropriée.

3.    Sous l'onglet Stratégie de clé, faites défiler l'écran jusqu'à la section Utilisateurs de clé. La section Utilisateurs de clé doit répertorier l'utilisateur ou le rôle IAM utilisés pour créer le volume.

4.    Si la section Utilisateurs de clé ne comprend pas l’utilisateur ou le rôle, choisissez Ajouter, sélectionnez l'utilisateur ou le rôle adéquat, puis cliquez sur Ajouter.

Dans la vue Stratégies de la console AWS KMS :

Si vous avez déjà manuellement modifié la stratégie de clé CMK AWS KMS, celle-ci sera disponible uniquement dans la vue Stratégies (JSON). Dans l'instruction accordant les autorisations AWS KMS requises, pensez à inclure l'attribut Principal pour l'ARN de l'utilisateur ou du rôle IAM.

Exemple : stratégie de clé

Dans cet exemple de stratégie de clé KMS, nous permettons à l'utilisateur UserA d'accéder à la clé Key1 :

{
    "Version": "2012-10-17",
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            ...
        },
        {
            "Sid": "Allow access for Key Administrators",
            ...
        },
        {
            "Sid": "Allow use of the keys",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/UserA"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/UserA"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?