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 au porteur pour Metrics
Note
Cette page couvre l'authentification par jeton du porteur pour le point de terminaison CloudWatch Metrics OTLP. Pour l'authentification par jeton porteur de CloudWatch journaux, voir Configuration de l'authentification par jeton de support pour les journaux dans le guide de l'utilisateur CloudWatch des journaux.
Avant de pouvoir envoyer des métriques à l'aide de l'authentification par jeton au porteur avec le point de terminaison CloudWatch OTLP, vous devez :
-
Création d'un utilisateur IAM avec des autorisations CloudWatch Metrics
-
Générer des informations d'identification spécifiques au service (clé API)
Important
Nous vous recommandons d'utiliser l'authentification SIGv4 avec des informations d'identification à court terme pour toutes les charges de travail lorsque cela est possible. 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, comme l'envoi de métriques provenant de AWS non-environnements, de fournisseurs tiers ou de plateformes ne prenant pas en charge le SDK. AWS Lorsque vous êtes prêt à intégrer des CloudWatch métriques dans des applications présentant des exigences de sécurité plus strictes, passez à des informations d'identification à court terme. Pour plus d'informations, consultez la section Alternatives aux clés d'accès à long terme dans le guide de l'utilisateur IAM.
Important
Le point de terminaison CloudWatch OTLP nécessite le protocole TLS (HTTPS). Les demandes de jetons au porteur envoyées via HTTP simple sont rejetées. À toujours utiliser https://monitoring. lors de la configuration de votre client.AWS Region.amazonaws.com/v1/metrics
Option 1 : Démarrage rapide à l'aide du 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 terminaux OTLP.
Pour configurer l'accès aux terminaux OTLP à l'aide de la console
-
Connectez-vous à la console AWS de gestion.
-
Accédez à CloudWatch > Paramètres > Global.
-
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é 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 N'expire jamais (non recommandé).
-
-
Choisissez Générer une clé d’API.
La console automatiquement :
-
Crée un nouvel utilisateur IAM avec les autorisations appropriées
-
Joint la politique CloudWatchAPIKeyAccess gérée (inclut
cloudwatch:PutMetricDataetcloudwatch:CallWithBearerTokenautorisations) -
Génère des informations d'identification spécifiques au service (clé API)
Pour enregistrer et vérifier votre clé API
-
Copiez et enregistrez en toute sécurité les informations d'identification affichées :
-
ID de clé API (Service-specificidentifiant d'identification)
-
Secret de clé API (jeton porteur)
La console offre également la possibilité de stocker votre clé API directement dans AWS Secrets Manager lors de la génération. Si vous choisissez de la stocker dans Secrets Manager, la clé est automatiquement mise à jour lors de la réinitialisation et supprimée lors de la suppression de la clé.
Important
Enregistrez immédiatement le secret de la clé API. Vous ne pourrez pas le récupérer plus tard. Si vous la perdez, vous devez générer une nouvelle clé API.
-
-
Envoyez une métrique de test pour vérifier votre configuration :
curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: BearerYOUR_API_KEY" \ -d '{"resourceMetrics":[]}'
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 OTLP.
Étape 1 : Création d'un utilisateur IAM
Créez un utilisateur IAM pour l'ingestion de métriques :
Pour créer un utilisateur IAM pour l'ingestion de métriques
-
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-metrics-api-key-user). -
Choisissez Suivant.
-
Joignez l'une des politiques IAM suivantes :
Option A : Utiliser la politique gérée (recommandé)
Joignez la politique CloudWatchAPIKeyAccess gérée.
Option B : créer une politique personnalisée
Créez et joignez la politique IAM suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchMetricsAPIs", "Effect": "Allow", "Action": [ "cloudwatch:CallWithBearerToken", "cloudwatch:PutMetricData" ], "Resource": "*" }, { "Sid": "KMSDecryptForCMKDatasets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Condition": { "StringLike": { "kms:ViaService": "cloudwatch.*.amazonaws.com", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:*:*:dataset/*" } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } -
Choisissez Suivant, puis sélectionnez Créer un utilisateur.
Note
Les autorisations KMS sont requises si vous prévoyez d'envoyer des métriques à des ensembles de données qui utilisent des clés KMS gérées par le client (CMK). Les conditions limitent l'accès à KMS aux seules clés utilisées via le CloudWatch service pour les ressources du jeu de données.
Étape 2 : générer des informations d'identification spécifiques au service (clé API)
Générez la clé d'API CloudWatch Metrics à l'aide de l'CreateServiceSpecificCredentialAPI. Vous pouvez également utiliser la commande create-service-specific-credentials
Pour générer une clé API dont l'expiration est de 30 jours :
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 30
La réponse est un ServiceSpecificCredential objet. La ServiceCredentialSecret valeur est votre clé d'API CloudWatch Metrics (jeton porteur).
Important
Stockez la ServiceCredentialSecret valeur en toute sécurité. Vous ne pourrez pas le récupérer plus tard. Si vous la perdez, vous devez générer une nouvelle clé API.
Étape 3 : Envoyer des métriques
Vous pouvez envoyer immédiatement des métriques au point de terminaison OTLP à l'aide de votre jeton porteur :
curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: BearerYOUR_API_KEY" \ -d '{"resourceMetrics":[]}'
Le point de terminaison accepte application/json les deux types de application/x-protobuf contenu.
Contrôlez les autorisations pour la génération et l'utilisation CloudWatch des clés d'API Metrics
Contrôler la génération des clés d'API CloudWatch Metrics
L'iam:CreateServiceSpecificCredentialaction contrôle la génération d'une clé spécifique au service (telle qu'une clé d'API CloudWatch Metrics). 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. -
iam:ServiceSpecificCredentialServiceName— Permet de spécifier, dans la condition, le nom d'un service.
Contrôle de l'utilisation des clés d'API CloudWatch Metrics
L'cloudwatch:CallWithBearerTokenaction contrôle l'utilisation d'une clé d'API CloudWatch Metrics. Pour empêcher une identité d'utiliser CloudWatch les clés d'API Metrics, associez une politique qui refuse l'cloudwatch:CallWithBearerTokenaction à l'utilisateur IAM associé à la clé.
Note
Les jetons porteurs pour les CloudWatch métriques ne peuvent être utilisés qu'avec le point de terminaison d'ingestion de métriques OTLP ()https://monitoring.. Ils ne peuvent pas être utilisés pour appeler une autre CloudWatch API ou un autre point de terminaison, y compris des API de requête (AWS Region.amazonaws.com/v1/metricsGetMetricData,DescribeAlarms)ListMetrics, le point de terminaison de requête ProMQL, le point de terminaison des traces OTLP ou le point de terminaison des journaux OTLP.
Exemples de politiques
Empêcher une identité de générer et d'utiliser CloudWatch des clés d'API Metrics :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWMetricsAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "cloudwatch:CallWithBearerToken" ], "Resource": "*" } ] }
Avertissement
Cette politique empêche 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 les Service-specific informations d'identification des utilisateurs IAM dans le Guide de l'utilisateur IAM.
Empêcher une identité d'utiliser CloudWatch les clés d'API Metrics :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } ] }
Autorisez la création de clés CloudWatch Metrics 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": "cloudwatch.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
Utiliser des jetons au porteur avec le Collectionneur OpenTelemetry
Lorsque vous utilisez des jetons au porteur, vous n'avez pas besoin de l'sigv4authextension. Utilisez l'extension
extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" exporters: otlphttp: tls: insecure: false endpoint: https://monitoring.us-east-1.amazonaws.com/v1/metrics auth: authenticator: bearertokenauth receivers: otlp: protocols: http: endpoint: 0.0.0.0:4318 processors: batch: send_batch_size: 200 timeout: 10s service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
Vous pouvez également référencer une variable d'environnement au lieu d'un fichier :
extensions: bearertokenauth: token: "${env:CW_API_KEY}"
Important
Ne codez jamais en dur les clés d'API directement dans les fichiers de configuration du collecteur. Les fichiers de configuration sont souvent affectés au contrôle de version ou stockés dans des manifestes de déploiement. Utilisez-le filename pour lire à partir d'un secret monté ou ${env:VAR} pour lire à partir d'une variable d'environnement injectée par votre gestionnaire de secrets.
Note
Avec l'authentification par jeton au porteur, vous n'avez pas besoin de l'sigv4authextension, des fichiers AWS d'informations d'identification, des rôles IAM ou de la configuration IRSA. Cela rend la configuration du collecteur portable dans n'importe quel environnement AWS, que ce soit sur site ou auprès d'autres fournisseurs de cloud.
Rotation des clés d'API
La rotation régulière de vos clés API réduit le risque d'accès non autorisé. Vous devriez recommander d'établir un calendrier de rotation conforme aux politiques de sécurité de votre organisation.
Processus de rotation
Pour alterner une clé API sans interrompre la livraison des métriques, procédez comme suit :
Pour effectuer une rotation d'une clé API
-
Créez un nouvel identifiant (secondaire) pour l'utilisateur IAM :
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 90Note
IAM autorise un maximum de 2 informations d'identification spécifiques à un service par utilisateur IAM et par service. Supprimez ou désactivez les anciennes informations d'identification avant d'en créer de nouvelles si vous avez atteint cette limite.
-
(Facultatif) Stockez les nouvelles informations d'identification dans AWS Secrets Manager pour une récupération sécurisée et une rotation automatique.
-
Mettez à jour votre configuration ou votre application OpenTelemetry Collector pour utiliser la nouvelle clé API.
-
Définissez l'identifiant d'origine sur inactif :
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Vérifiez que la livraison métrique n'est pas affectée. Envoyez une demande de test à l'aide de la nouvelle clé et confirmez que vous avez reçu une réponse HTTP 200. Vous pouvez également surveiller les CloudWatch statistiques existantes de votre application pour vous assurer que les données continuent d'arriver.
-
Après avoir confirmé la bonne livraison à l'aide de la nouvelle clé, supprimez les informations d'identification précédentes :
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234
Surveillance de l'expiration des clés
Pour vérifier la date de création et l'état de vos clés d'API existantes, utilisez la commande list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com
La réponse inclut CreateDate et Status pour chaque justificatif d'identité. 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éagir à une clé d'API compromise
Si vous pensez qu'une clé d'API a été compromise, prenez immédiatement les mesures suivantes :
Pour répondre à une clé d'API compromise
-
Désactivez immédiatement la clé pour empêcher toute nouvelle utilisation non autorisée :
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Consultez CloudTrail les journaux pour déterminer l'étendue des accès non autorisés. Découvrez Enregistrement de l'utilisation de la clé 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-idACCA1234EXAMPLE1234 -
Ajoutez une politique de refus si vous devez immédiatement bloquer l'accès à tous les jetons du porteur pour l'utilisateur IAM pendant que vous enquêtez :
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "cloudwatch: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é API CloudWatch Metrics. Les jetons au porteur ne peuvent être utilisés que pour l'ingestion de métriques, pas pour les opérations de gestion IAM.
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é.
Meilleures pratiques en matière de sécurité pour les clés d'API
Suivez ces bonnes pratiques pour protéger vos clés d'API CloudWatch Metrics :
-
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, les fichiers de configuration du collecteur ou les systèmes de contrôle de version. Utilisez l'
bearertokenauthextension avecfilenameou${env:VAR}pour injecter des secrets lors de l'exécution. -
Utilisez un gestionnaire de secrets. Stockez les clés d'API dans AWS Secrets Manager ou dans une solution de gestion de secrets équivalente. Cela permet un contrôle d'accès centralisé, une journalisation 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 dans l'ensemble de votre organisation, utilisez la clé de conditioniam:ServiceSpecificCredentialAgeDaysIAM. -
Appliquez les autorisations de moindre privilège. Utilisez la CloudWatchAPIKeyAccess politique gérée comme point de départ et limitez davantage si nécessaire.
-
Activez la CloudTrail journalisation. Auditez l'utilisation des clés d'API en activant CloudTrail les événements de données pour
AWS::CloudWatch::Dataset. Consultez Enregistrement de l'utilisation de la clé 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 tourner les touches régulièrement. Établissez un calendrier de rotation et suivez le processus décrit dansRotation des clés d'API.
Enregistrement de l'utilisation de la clé API avec CloudTrail
Vous pouvez l'utiliser AWS CloudTrail pour enregistrer les événements de données pour l'ingestion de CloudWatch Metrics OTLP. CloudWatch émet AWS::CloudWatch::Dataset des événements de données pour les appels vers le point de terminaison OTLP, ce qui vous permet d'auditer l'activité d'ingestion de métriques, y compris l'utilisation des clés API.
Note
Le compartiment S3 que vous spécifiez pour le trail 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 CloudTrail dans le Guide de AWS CloudTrail l'utilisateur.
Pour activer la CloudTrail journalisation de l'utilisation de la clé d'API CloudWatch Metrics
-
Créez un parcours :
aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-namemy-cloudtrail-bucket\ --region us-east-1 -
Configurez des sélecteurs d'événements avancés pour capturer CloudWatch les événements d'écriture (ingestion) de données de métriques :
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-metrics-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Metrics write data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::CloudWatch::Dataset"] }, { "Field": "readOnly", "Equals": ["false"] } ] }]' -
Commencez à enregistrer les sentiers :
aws cloudtrail start-logging \ --name cloudwatch-metrics-api-key-audit \ --region us-east-1
Le readOnly: false filtre limite la journalisation aux opérations d'écriture (PutMetricData), qui inclut tous les appels d'ingestion OTLP. Pour identifier l'utilisation du jeton du porteur parmi ces événements, interrogez vos journaux de suivi (via Athena ou CloudTrail Lake) et filtrez en fonction du nom d'utilisateur IAM associé à votre clé API (par exemple). cloudwatch-metrics-api-key-user Les événements issus de l'ingestion d'OTLP incluent la valeur AdditionalEventData.protocol définie OTLP dans la charge utile de l'événement, que vous pouvez utiliser dans des requêtes post-hoc pour les distinguer des appels SDK classiques PutMetricData .