Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Considérations de sécurité pour les scripts Canary Synthetics
Les sections suivantes expliquent les problèmes de sécurité que vous devez prendre en compte lors de la création et de l'exécution de scripts Canary dans Synthetics.
Utiliser des connexions sécurisées
Étant donné que le code du script Canary et les résultats des tests peuvent contenir des informations sensibles, ne vous connectez pas aux points de terminaison via des connexions non chiffrées. Utilisez toujours des connexions chiffrées, telles que celles qui commencent par https://
.
Considérations relatives à la dénomination des scripts Canary
Le nom de ressource Amazon (ARN) d'un canari est inclus dans l'en-tête de l'agent utilisateur dans le cadre des appels sortants effectués depuis le navigateur Chromium piloté par Puppeteer et inclus dans la bibliothèque de wrappers Synthetics. CloudWatch Cela permet d'identifier le trafic CloudWatch des canaris de Synthetics et de le relier aux canaris qui passent des appels.
Le canari ARN inclut le nom de canari. Choisissez des noms de scripts Canary qui ne révèlent pas d'informations exclusives.
En outre, assurez-vous de pointer vos scripts Canary uniquement vers les sites web et les points de terminaison que vous contrôlez.
Secrets et informations sensibles dans le code canary
Si vous transmettez votre code Canary directement au Canary à l'aide d'un fichier zip, le contenu du script est visible dans AWS CloudTrail journaux.
Si vous avez des informations sensibles ou des secrets (tels que des clés d'accès ou des informations d'identification de base de données) dans un script canary, nous vous recommandons fortement de stocker le script comme un objet versionné dans Amazon S3 et de transmettre l'emplacement Amazon S3 dans le canary, au lieu de transmettre le code canary par un fichier zip.
Si vous utilisez un fichier zip pour transmettre le script canary, nous vous recommandons fortement de ne pas inclure de secrets ou d'informations sensibles dans votre code source canary. Pour plus d'informations sur l'utilisation AWS Secrets Manager pour protéger vos secrets, consultez Qu'est-ce que AWS Secrets Manager?.
Considérations relatives aux autorisations
Nous vous recommandons de restreindre l'accès aux ressources créées ou utilisées par CloudWatch Synthetics. Utilisez des autorisations strictes sur les compartiments Amazon S3 où les scripts Canary stockent les résultats des tests et d'autres artefacts, tels que les journaux et les captures d'écran.
De même, utilisez des autorisations strictes pour les emplacements où votre code source de script Canary est stocké, de sorte qu'aucun utilisateur ne supprime accidentellement ou de façon malveillante les couches Lambda ou les fonctions Lambda utilisées pour le script Canary.
Pour vous assurer que vous exécutez le code de script Canary voulu, vous pouvez utiliser le contrôle de version d'objet sur le compartiment Amazon S3 où votre code de script Canary est stocké. Ensuite, lorsque vous spécifiez ce code à exécuter en tant que script Canary, vous pouvez inclure l'objet versionId
dans le chemin d'accès, comme dans les exemples suivants.
https://
bucket
.s3.amazonaws.com/path
/object
.zip?versionId=version-id
https://s3.amazonaws.com/bucket
/path
/object
.zip?versionId=version-id
https://bucket
.s3-region
.amazonaws.com/path
/object
.zip?versionId=version-id
Traces de pile et messages d'exception
Par défaut, CloudWatch les canaris Synthetics capturent toutes les exceptions générées par votre script Canary, que le script soit personnalisé ou qu'il provienne d'un plan. CloudWatch Synthetics enregistre à la fois le message d'exception et le suivi de la pile à trois emplacements :
Retournez dans le service CloudWatch Synthetics pour accélérer le débogage lorsque vous décrivez les essais
Dans CloudWatch les journaux selon la configuration avec laquelle vos fonctions Lambda sont créées
Dans le fichier journal Synthetics, qui est un fichier en texte brut téléchargé dans l'emplacement Amazon S3 spécifié par la valeur que vous définissez pour le
resultsLocation
du script Canary
Si vous souhaitez envoyer et stocker moins d'informations, vous pouvez capturer les exceptions avant qu'elles ne retournent dans la bibliothèque de CloudWatch wrappers Synthetics.
Vous pouvez également avoir une demande URLs dans vos erreurs. CloudWatch Synthetics analyse URLs toute erreur générée par votre script et en supprime les paramètres URL restreints en fonction de la configuration. restrictedUrlParameters Si vous enregistrez des messages d'erreur dans votre script, vous pouvez les getSanitizedErrorMessage supprimer URLs avant de vous connecter.
Délimitez vos IAM rôles
Nous vous recommandons de ne pas configurer votre Canary pour qu'il visite des terminaux URLs ou des terminaux potentiellement malveillants. Le fait de pointer votre script Canary vers des sites web ou des points de terminaison non fiables ou inconnus pourrait exposer votre code de fonction Lambda à des scripts d'utilisateurs malveillants. En supposant qu'un site web malveillant puisse sortir de Chromium, il pourrait avoir accès à votre code Lambda comme si vous vous y étiez connecté à l'aide d'un navigateur Internet.
Exécutez votre fonction Lambda avec un rôle d'IAMexécution doté d'autorisations limitées. Ainsi, si votre fonction Lambda est compromise par un script malveillant, elle est limitée dans les actions qu'elle peut effectuer lorsqu'elle est exécutée sous le nom de Canary AWS .
Lorsque vous utilisez la CloudWatch console pour créer un canari, celui-ci est créé avec un rôle d'IAMexécution limité.
Expurgation des données sensibles
CloudWatch Synthetics URLs capture le code d'état, la raison de l'échec (le cas échéant), ainsi que les en-têtes et le corps des demandes et des réponses. Cela permet à un utilisateur d'un script Canary de comprendre, de surveiller et de déboguer les Canary.
Les configurations décrites dans les sections suivantes peuvent être définies à tout moment de l'exécution des scripts Canary. Vous pouvez également choisir d'appliquer différentes configurations à différentes étapes de synthèse.
Demande URLs
Par défaut, CloudWatch Synthetics enregistre les URLs demandes, les codes d'état et la raison de leur statut dans Canary LogsURL. La demande URLs peut également apparaître dans les rapports d'exécution de Canary, HAR les fichiers, etc. Votre demande URL peut contenir des paramètres de requête sensibles, tels que des jetons d'accès ou des mots de passe. Vous pouvez supprimer les informations sensibles afin qu'elles ne soient pas enregistrées par CloudWatch Synthetics.
Pour supprimer des informations sensibles, définissez la propriété restrictedUrlParametersde configuration. Pour de plus amples informations, veuillez consulter SyntheticsConfiguration classe. Cela oblige CloudWatch Synthetics à URL biffer les paramètres, y compris les valeurs des paramètres de chemin et de requête, en fonction de ce qui précède la journalisation. restrictedUrlParameters Si vous vous connectez URLs à votre script, vous pouvez l'utiliser getSanitizedUrl(url, stepConfig = nul) pour le supprimer URLs avant de vous connecter. Pour de plus amples informations, veuillez consulter SyntheticsLogHelper classe.
En-têtes
Par défaut, CloudWatch Synthetics n'enregistre pas les en-têtes de demande/réponse. Pour les scripts Canary de l'interface utilisateur, il s'agit du comportement par défaut pour les scripts Canary utilisant la version d'exécution syn-nodejs-puppeteer-3.2
et version ultérieure.
Si vos en-têtes ne contiennent pas d'informations sensibles, vous pouvez activer les en-têtes dans les HAR fichiers et les HTTP rapports en définissant les includeResponseHeaderspropriétés includeRequestHeaderset sur. true
Vous pouvez activer tous les en-têtes, mais choisir de restreindre les valeurs des clés d'en-tête sensibles. Par exemple, vous pouvez choisir de ne masquer que les en-têtes Authorization
des artefacts produits par des scripts Canary.
Corps de la demande et de la réponse
Par défaut, CloudWatch Synthetics n'enregistre pas le corps de la demande/réponse dans les journaux ou les rapports Canary. Ces informations sont particulièrement utiles pour les API canaris. Synthetics capture HTTP toutes les demandes et peut afficher les en-têtes, les corps des demandes et des réponses. Pour de plus amples informations, veuillez consulter executeHttpStep(stepNamerequestOptions, [rappel], [stepConfig]). Vous pouvez choisir d'activer le corps de la demande/réponse en définissant les propriétés includeRequestBodyet includeResponseBodysur. true