Passer au contenu

Comment puis-je configurer un compartiment Amazon S3 central pour la journalisation de Session Manager à partir de plusieurs comptes AWS ?

Lecture de 6 minute(s)
0

Je souhaite configurer la journalisation centralisée Amazon Simple Storage Service (Amazon S3) pour Session Manager, une fonctionnalité d'AWS Systems Manager, pour mes comptes AWS.

Résolution

Configurer les autorisations

AWS Systems Manager Agent (SSM Agent) utilise le même rôle Gestion des identités et des accès AWS (AWS IAM) pour s’activer et charger les journaux vers Amazon S3.

Vous pouvez utiliser l'un des rôles IAM suivants :

Pour accorder des autorisations, appliquez les politiques suivantes :

  • Le compte AWS qui est propriétaire du principal IAM doit utiliser une politique IAM pour accorder des autorisations Amazon S3.
  • Le propriétaire du compartiment S3 doit utiliser la politique de clé AWS Key Management Service (AWS KMS) ou la liste de contrôle d'accès (ACL) pour autoriser l'accès à tous les comptes.
  • Si le compartiment est chiffré à l'aide d'une clé AWS KMS, vous devez utiliser une politique IAM.
  • Vous devez associer la politique IAM au rôle qui accorde les autorisations à SSM Agent.
  • Vous devez utiliser une politique de clé KMS pour autoriser l'accès à la clé AWS KMS que vous utilisez pour chiffrer le compartiment.
  • Vous devez utiliser la politique gérée par AWS AmazonSSMManagedInstanceCore pour accéder aux fonctionnalités principales de Systems Manager.

Les autorisations suivantes sont nécessaires afin que Session Manager puisse charger les journaux dans le compartiment S3 :

  • Les autorisations s3:PutObject et s3:PutObjectAcl pour charger des objets chiffrés dans le compartiment S3.
  • Les autorisations kms:Decrypt et kms:GenerateDataKey pour accéder aux clés AWS KMS.
  • L'autorisation aws:PrincipalOrgID: o-xxxxxxx permet de restreindre l'accès aux principaux qui ne correspondent pas à l'identifiant de votre organisation dans AWS Organizations.

Vérifiez la connectivité aux points de terminaison suivants :

  • Points de terminaison Amazon S3 : com.amazonaws.region.s3
  • Points de terminaison de service AWS KMS : com.amazonaws.region.kms
  • Points de terminaison Systems Manager : com.amazonaws.region.ssm
  • Points de terminaison Systems Manager Session Manager : com.amazonaws.region.ssmmessages
  • Points de terminaison Amazon EC2 : com.amazonaws.region.ec2

Créer des clés et une stratégie de clé AWS KMS

Créez des clés AWS KMS pour chiffrer le compartiment S3 et les journaux de Session Manager.

Vous pouvez créer une clé pour chiffrer à la fois les journaux de Session Manager et le chiffrement AWS KMS, ou créer des clés distinctes pour chacun.

Pour chaque clé, ajoutez l'instruction de clé suivante à la politique AWS KMS pour permettre à Session Manager de chiffrer les journaux :

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalOrgID": "o-xxxxxxx"
    }
  }
}

Remarque : Remplacez aws:PrincipalOrgID par l'ID de votre organisation et le principal par l'ARN de votre rôle IAM.

Créer le compartiment S3 et la politique de compartiment

Créez un compartiment S3 pour stocker les journaux de Session Manager. Pour plus d'informations, consultez les sections Création d'un compartiment à usage général et Journalisation des données de session à l'aide d'Amazon S3 (console).

Pour autoriser l'accès aux journaux, ajoutez la politique de ressources suivante au compartiment S3 :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetEncryptionConfiguration",
      "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx"
        }
      }
    }
  ]
}

Pour plus d'informations sur les autorisations d'accès aux journaux, consultez la section Autorisations relatives à la diffusion des journaux.

Créer une politique IAM pour accéder au compartiment S3 et aux clés AWS KMS

Créez une politique IAM qui accorde des autorisations d'accès au compartiment S3 et aux clés AWS KMS.

Associez l'exemple de politique suivant au profil d'instance que vos comptes utilisent pour se connecter au compartiment S3 :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PutObjectsBucket",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*"
    },
    {
      "Sid": "ListBucketAndEncryptionConfig",
      "Action": [
        "s3:GetEncryptionConfiguration"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket"
    },
    {
      "Sid": "S3KMSSessionManagerKMS",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": [
        "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption",
        "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption"
      ]
    }
  ]
}

Remarque : Vous pouvez utiliser une politique en ligne ou une politique gérée par le client. Pour en savoir plus, consultez la section Utilisation de stratégies IAM avec AWS KMS.

(Facultatif) Configurer des profils shell Session Manager pour les journaux

Pour créer un profil shell personnalisé, créez un fichier JSON, supprimez le contenu et remplacez-le par les valeurs suivantes :

{
  "schemaVersion": "1.0",
  "description": "Document to hold regional settings for Session Manager",
  "sessionType": "Standard_Stream",
  "inputs": {
    "s3BucketName": "customer_session_manager_logging_bucket",
    "s3KeyPrefix": "",
    "s3EncryptionEnabled": true,
    "cloudWatchLogGroupName": "",
    "cloudWatchEncryptionEnabled": false,
    "cloudWatchStreamingEnabled": false,
    "kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption",
    "runAsDefaultUser": "",
    "idleSessionTimeout": "20",
    "maxSessionDuration": "",
    "shellProfile": {"windows": "", "linux": ""}
  }
}

Remarque : Remplacez customer_session_manager_logging_bucket par le nom de votre compartiment et YOUR-KMS-FOR-SessionManagerEncryption par la clé que vous avez désignée pour Session Manager.

Exécutez la commande suivante pour enregistrer le fichier en tant que document Session Manager par défaut avec un nom tel que SessionManagerRunShell.json :

aws ssm update-document --name "SSM-SessionManagerRunShell" \
--content "file://SessionManagerRunShell.json" \   
--document-version "\$LATEST"

Vérifier la configuration de journalisation de Session Manager

Ouvrez la console Amazon S3, puis accédez à votre compartiment de journalisation. Dans les paramètres de Compartiment, vérifiez que le chiffrement du compartiment est actif. Vérifiez également que l'ARN de la clé AWS KMS correspond à la clé 1 pour vous assurer que Session Manager utilise la clé de chiffrement correcte.

Pour vérifier les préférences de Session Manager, procédez comme suit :

  1. Ouvrez la console Session Manager.
  2. Sélectionnez votre région AWS.
  3. Vérifiez que vous avez activé le chiffrement.
  4. Entrez l'ARN de la clé 1.
  5. Vérifiez que vous avez configuré le compartiment S3 approprié.

Vérifier que les journaux sont générés dans le compartiment

Pour générer des journaux, utilisez Session Manager dans un autre compte.

Procédez comme suit :

  1. Utilisez Session Manager pour vous connecter à une instance.
  2. Sélectionnez votre région.
  3. Vérifiez que la session se connecte et affiche « Cette session est chiffrée à l'aide d'AWS KMS ».
  4. Saisissez des entrées de test pour générer les journaux, puis mettez fin à la session.

Remarque : Une fois la session terminée, l'affichage des journaux peut prendre au moins 30 secondes. Pour plus d'informations, consultez la section Journalisation des demandes à l'aide de la journalisation des accès au serveur.

Informations connexes

Protection des données grâce au chiffrement côté serveur

Actions, ressources et clés de condition pour Amazon S3

Exemples de politiques de compartiment Amazon S3

Contrôle d'accès dans Amazon S3

AWS OFFICIELA mis à jour il y a un an