8 votes

Autorisations KMS pour les groupes de logs CloudWatch chiffrés avec AWS Systems Session Manager

J'ai configuré une CMK (Custom Managed Key) pour chiffrer les LogGroups avec AWS Systems Session Manager :

  1. Tout d'abord, les permissions pour les "administrateurs de clés" et les "utilisateurs/rôles de clés" sont ajoutées dans la console KMS.

  2. Ensuite, la CMK est attachée dans les préférences du gestionnaire de session AWS Systems Manager au LogGroup comme le montre cette image :

enter image description here

Erreur :

La clé KMS spécifiée n'existe pas ou n'est pas autorisée à être utilisée avec LogGroup 'arn:aws:logs:my_region:my_account_id:log-group:/SSM'.

La clé doit exister car elle est utilisée pour crypter les Sessions et ne décrypte pas correctement les LogGroups, mais elle est liée au LogGroup et l'utilisateur en a la permission. Qu'est-ce qui se passe ?

7voto

Marcin Points 14295

J'ai essayé de reproduire votre problème .

Mon gestionnaire de session paramètres :

enter image description here

Le groupe de logs CloudWatch a été crypté en utilisant le CLI :

{
    "logGroups": [
        {
            "logGroupName": "SSM",
            "creationTime": 1593579430258,
            "metricFilterCount": 0,
            "arn": "arn:aws:logs:us-east-1:xxxxx:log-group:SSM:*",
            "storedBytes": 0,
            "kmsKeyId": "arn:aws:kms:us-east-1:xxxxxxxxx:key/xxxx-9500-xxxxx"
        }
    ]
}

Après avoir lancé le gestionnaire de session, je peux obtenir la confirmation qu'il est crypté :

enter image description here

Sur la base de cette vérification, la seule chose à faire pour que cela fonctionne était de définir des politiques de clés KMS. J'ai ajouté les éléments suivants à mon KMS ( SSMRole est le rôle de l'instance, les autres entrées devraient être explicites) :

{
    "Effect": "Allow",
    "Principal": {
        "Service": "logs.us-east-1.amazonaws.com"
    },
    "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
    ],
    "Resource": "*",
    "Condition": {
        "ArnLike": {
            "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:xxxxx:log-group:SSM"
        }
    }
},    
{
    "Effect": "Allow",
    "Principal": {
        "Service": "ssm.amazonaws.com"
    },
    "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
    ],
    "Resource": "*"            
}, 
{
    "Effect": "Allow",    
    "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
    ],
    "Resource": "*",
    "Principal": {
        "AWS": "arn:aws:iam::xxxxx:role/SSMRole"
    }      
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X