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.
Configuration de l'authentification par jeton porteur
Avant de pouvoir envoyer des journaux à l'aide de l'authentification par jeton porteur avec l'un des points de terminaison d'ingestion HTTP, vous devez :
Création d'un utilisateur IAM avec des autorisations CloudWatch Logs
Générer des informations d'identification spécifiques au service (jeton porteur)
Création d'un groupe de journaux et d'un flux de journaux
Activer l'authentification par jeton porteur sur le groupe de journaux
Important
Nous recommandons d'utiliser l'authentification SigV4 avec des informations d'identification à court terme pour toutes les charges de travail lorsque cela est possible. Le SigV4 fournit la meilleure posture de sécurité. Limitez l'utilisation de clés d'API (jetons porteurs) aux scénarios dans lesquels l'authentification à court terme basée sur les informations d'identification n'est pas possible. Lorsque vous êtes prêt à intégrer les CloudWatch journaux dans des applications présentant des exigences de sécurité plus strictes, vous devez passer aux informations d'identification à court terme. Pour plus d'informations, consultez la section Alternatives aux clés d'accès longue durée dans le guide de l'utilisateur IAM.
Option 1 : démarrage rapide à l'aide de la AWS console
La console AWS de gestion fournit un flux de travail rationalisé pour générer des clés d'API pour l'accès aux points de terminaison HTTP.
Pour configurer l'accès au point de terminaison HTTP à l'aide de la console
Connectez-vous à la console AWS de gestion.
Accédez à CloudWatch> Paramètres > Journaux.
-
Dans la section Clés d'API, choisissez Générer une clé d'API.
-
Pour Epiration de la clé d’API, effectuez l’une des actions suivantes :
Sélectionnez une durée d'expiration de la clé d'API de 1, 5, 30, 90 ou 365 jours.
Choisissez Durée personnalisée pour spécifier une date d’expiration personnalisée pour la clé d’API.
Sélectionnez Ne jamais expirer (non recommandé).
-
Choisissez Générer une clé d’API.
La console :
Crée un nouvel utilisateur IAM doté des autorisations appropriées
Joint la politique CloudWatchLogsAPIKeyd'accès géré (
logs:PutLogEventsinclusions etlogs:CallWithBearerTokenautorisations)Génère des informations d'identification spécifiques au service (clé API)
-
Copiez et enregistrez en toute sécurité les informations d'identification affichées :
ID de clé d'API (ID d'identification spécifique au service)
Secret de la clé API (jeton porteur)
Important
Enregistrez immédiatement le secret de la clé API. Vous ne pourrez pas la récupérer ultérieurement. Si vous la perdez, vous devrez générer une nouvelle clé d'API.
-
Créez le groupe de journaux et le flux de journaux dans lesquels vos journaux seront stockés :
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1 -
Activez l'authentification par jeton porteur sur le groupe de journaux :
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1Vérifiez la configuration :
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Autorisations incluses : L'utilisateur IAM créé automatiquement disposera des autorisations suivantes :
logs:PutLogEvents— Envoie les événements du journal à CloudWatch Logslogs:CallWithBearerToken— Authentifiez-vous à l'aide d'un jeton porteurkms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Accédez à des groupes de journaux chiffrés par KMS (avec une condition se limitant au service de journaux)
Option 2 : Configuration manuelle
Si vous préférez mieux contrôler la configuration IAM ou si vous avez besoin de personnaliser les autorisations, vous pouvez configurer manuellement l'accès au point de terminaison HTTP.
Étape 1 : créer un utilisateur IAM
Créez un utilisateur IAM qui sera utilisé pour l'ingestion des journaux :
Connectez-vous à la console AWS de gestion et accédez à IAM.
Dans le volet de navigation de gauche, choisissez Utilisateurs.
Choisissez Create user (Créer un utilisateur).
Entrez un nom d'utilisateur (par exemple,
cloudwatch-logs-hlc-user).Choisissez Suivant.
-
Joignez l'une des politiques IAM suivantes :
Option A : utiliser la politique gérée (recommandée)
Joignez la politique de gestion des CloudWatchLogsAPIKeyaccès.
Option B : créer une politique personnalisée
Créez et attachez la politique IAM suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LogsAPIs", "Effect": "Allow", "Action": [ "logs:CallWithBearerToken", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "KMSAPIs", "Effect": "Allow", "Action": [ "kms:Describe*", "kms:GenerateDataKey*", "kms:Decrypt" ], "Condition": { "StringEquals": { "kms:ViaService": [ "logs.*.amazonaws.com" ] } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } Choisissez Suivant, puis Créer un utilisateur.
Note
Les autorisations KMS sont requises si vous prévoyez d'envoyer des journaux à des groupes de journaux chiffrés par KMS. La condition limite l'accès KMS aux seules clés utilisées via le service CloudWatch Logs.
Étape 2 : générer des informations d'identification spécifiques au service (clé API)
Générez la clé CloudWatch d'API Logs à l'aide de l'CreateServiceSpecificCredentialAPI. Vous pouvez également utiliser la commande create-service-specific-credential
Pour générer une clé d'API dont l'expiration est de 30 jours, procédez comme suit :
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
La réponse est un ServiceSpecificCredentialobjet. La ServiceCredentialSecret valeur est votre clé CloudWatch d'API Logs (jeton porteur).
Important
Stockez la valeur ServiceCredentialSecret en toute sécurité, car vous ne pourrez pas la récupérer ultérieurement. Si vous la perdez, vous devrez générer une nouvelle clé d'API.
Étape 3 : créer un groupe de journaux et un flux de journaux
Créez le groupe de journaux et le flux de journaux dans lesquels vos journaux seront stockés :
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1
Étape 4 : activer l'authentification par jeton porteur
Activez l'authentification par jeton porteur sur le groupe de journaux :
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1
Vérifiez la configuration :
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Autorisations de contrôle pour la génération et l'utilisation CloudWatch des clés d'API Logs
La génération et l'utilisation des clés d'API CloudWatch Logs sont contrôlées par des actions et des clés de condition dans les services CloudWatch Logs et IAM.
Contrôle de la génération des clés d'API CloudWatch Logs
L'CreateServiceSpecificCredentialaction iam : contrôle la génération d'une clé spécifique au service (telle qu'une clé d'API CloudWatch Logs). Vous pouvez étendre cette action aux utilisateurs IAM en tant que ressource afin de limiter le nombre d’utilisateurs pour lesquels une clé peut être générée.
Vous pouvez utilisez les clés de condition suivantes pour imposer des conditions à l’autorisation pour l’action iam:CreateServiceSpecificCredential :
iam : ServiceSpecificCredentialAgeDays — Permet de spécifier, dans la condition, le délai d'expiration de la clé en jours. Par exemple, vous pouvez utiliser cette clé de condition pour autoriser uniquement des clés API qui expirent au terme d’un délai de 90 jours.
iam : ServiceSpecificCredentialServiceName — Permet de spécifier, dans la condition, le nom d'un service. Par exemple, vous pouvez utiliser cette clé de condition pour autoriser uniquement la création de clés d'API pour les CloudWatch journaux et non pour d'autres services.
Contrôle de l'utilisation des clés d'API CloudWatch Logs
L'logs:CallWithBearerTokenaction contrôle l'utilisation d'une clé d'API CloudWatch Logs. Pour empêcher une identité d'utiliser CloudWatch les clés de l'API Logs, associez une politique qui refuse l'logs:CallWithBearerTokenaction à l'utilisateur IAM associé à la clé.
Exemples de politiques
Empêcher une identité de générer et d'utiliser CloudWatch les clés d'API Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs:CallWithBearerToken" ], "Resource": "*" } ] }
Avertissement
Cette politique empêchera la création d'informations d'identification pour tous les AWS services qui prennent en charge la création d'informations d'identification spécifiques à un service. Pour plus d’informations, consultez Informations d’identification spécifiques au service pour les utilisateurs IAM.
Empêcher une identité d'utiliser CloudWatch les clés de l'API Logs
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Autoriser la création de clés CloudWatch Logs uniquement si elles expirent dans les 90 jours
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceSpecificCredential", "Resource": "arn:aws:iam::123456789012:user/username", "Condition": { "StringEquals": { "iam:ServiceSpecificCredentialServiceName": "logs.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
Rotation des clés API
La rotation régulière de vos clés d'API réduit le risque d'accès non autorisé. Nous vous recommandons d'établir un calendrier de rotation conforme aux politiques de sécurité de votre organisation.
Processus de rotation
Pour faire pivoter une clé d'API sans interrompre la livraison du journal, procédez comme suit :
-
Créez un nouvel identifiant (secondaire) pour l'utilisateur IAM :
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 90 (Facultatif) Stockez les nouvelles informations d'identification AWS Secrets Manager pour une récupération sécurisée et une rotation automatique.
Importez les nouvelles informations d'identification dans le portail de votre fournisseur ou mettez à jour la configuration de votre application pour utiliser la nouvelle clé d'API.
-
Définissez les informations d'identification d'origine sur inactive :
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive Vérifiez que la livraison des journaux n'est pas affectée en surveillant la
IncomingBytesmétrique relative à votre groupe de connexions CloudWatch. Pour plus d'informations, consultez la section Surveillance à l'aide de CloudWatch métriques.-
Après avoir confirmé la livraison réussie avec la nouvelle clé, supprimez les informations d'identification précédentes :
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Surveillance de l'expiration des clés
Pour vérifier la date de création et le statut de vos clés d'API existantes, utilisez la list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com
La réponse inclut CreateDate et Status pour chaque identifiant. Utilisez ces informations pour identifier les clés qui arrivent à expiration ou qui sont actives depuis plus longtemps que ne le permet votre politique de rotation.
Répondre à une clé d'API compromise
Si vous pensez qu'une clé d'API a été compromise, prenez immédiatement les mesures suivantes :
-
Désactivez immédiatement la clé pour empêcher toute nouvelle utilisation non autorisée :
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive Passez en revue les CloudTrail journaux pour déterminer l'étendue des accès non autorisés. Découvrez Enregistrement de l'utilisation des clés d'API avec CloudTrail comment activer l'audit de l'utilisation des clés d'API.
Créez une clé de remplacement en suivant le processus de rotation décrit dansProcessus de rotation.
-
Supprimez la clé compromise une fois que la clé de remplacement est en place :
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234 Ajoutez une politique de refus si vous devez immédiatement bloquer l'accès à tout jeton porteur pour l'utilisateur IAM pendant que vous étudiez :
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } }
Note
Pour effectuer ces actions via l'API, vous devez vous authentifier à l'aide AWS d'informations d'identification et non à l'aide d'une clé d'API CloudWatch Logs.
Vous pouvez également utiliser les opérations d'API IAM suivantes pour gérer les clés compromises :
ResetServiceSpecificCredential— Réinitialisez la clé pour générer un nouveau mot de passe sans supprimer les informations d'identification. La clé ne doit pas avoir expiré.
Bonnes pratiques de sécurité pour les clés d'API
Suivez ces bonnes pratiques pour protéger vos clés CloudWatch d'API Logs :
N'intégrez jamais de clés d'API dans le code source. Ne codez pas en dur les clés d'API dans le code de l'application et ne les validez pas dans les systèmes de contrôle de version. Si une clé est accidentellement validée dans un dépôt public, le scan AWS automatique peut la signaler et vous devez immédiatement faire pivoter la clé.
Utilisez un gestionnaire de secrets. Stockez les clés d'API dans une solution de gestion des secrets AWS Secrets Managerou dans une solution équivalente. Cela permet un contrôle d'accès centralisé, un enregistrement des audits et une rotation automatique.
Définissez une date d'expiration pour toutes les clés. Spécifiez toujours une
--credential-age-daysvaleur lors de la création de clés d'API. Pour appliquer une durée de vie maximale des clés au sein de votre organisation, utilisez la clé de conditioniam:ServiceSpecificCredentialAgeDaysIAM. Pour obtenir un exemple, consultez Autoriser la création de clés CloudWatch Logs uniquement si elles expirent dans les 90 jours.Appliquez les autorisations du moindre privilège. Étendez les autorisations de l'utilisateur IAM uniquement aux groupes de journaux et aux actions requises. Utilisez la politique CloudWatchLogsAPIKeyd'accès géré comme point de départ et limitez davantage selon les besoins.
Activez la CloudTrail journalisation. Auditez l'utilisation des clés d'API en activant CloudTrail les événements de données pour
AWS::Logs::LogGroupAuthorization. Consultez Enregistrement de l'utilisation des clés d'API avec CloudTrail.Surveillez avec IAM Access Analyzer. Utilisez IAM Access Analyzer pour identifier les informations d'identification non utilisées et les politiques trop permissives associées aux utilisateurs IAM de votre clé d'API.
Faites pivoter les touches régulièrement. Établissez un calendrier de rotation et suivez le processus décrit dansRotation des clés API.
Enregistrement de l'utilisation des clés d'API avec CloudTrail
Vous pouvez l'utiliser AWS CloudTrail pour enregistrer les événements de données liés à l'utilisation des clés de l'API CloudWatch Logs. CloudWatch Logs émet AWS::Logs::LogGroupAuthorization des événements de données pour les CallWithBearerToken appels, ce qui vous permet de vérifier quand et comment les clés d'API sont utilisées pour envoyer des journaux.
Pour activer la CloudTrail journalisation pour l'utilisation des clés de l'API CloudWatch Logs :
Note
Le compartiment S3 que vous spécifiez pour le suivi doit disposer d'une politique de compartiment qui CloudTrail permet d'y écrire des fichiers journaux. Pour plus d'informations, consultez la politique relative aux compartiments Amazon S3 pour CloudTrail.
-
Créez un parcours :
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Configurez des sélecteurs d'événements avancés pour capturer CloudWatch les événements d'autorisation des groupes de journaux journaux :
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-logs-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Logs API key authorization events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] } ] }]' -
Commencez à enregistrer les sentiers :
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1