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 pour Metrics
Note
Cette page couvre l'authentification par jeton 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 de CloudWatch Logs.
Avant de pouvoir envoyer des métriques à l'aide de l'authentification par jeton 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 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, tels que 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é accrues, passez 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.
Important
Le point de terminaison CloudWatch OTLP nécessite le protocole TLS (HTTPS). Les demandes de jeton porteur envoyées via HTTP standard sont rejetées. Utilisez-le toujours 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 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 CloudWatchAPIKeyAccessgérée (
cloudwatch:PutMetricDatainclusions etcloudwatch:CallWithBearerTokenautorisations) -
Génère des informations d'identification spécifiques au service (clé API)
Pour enregistrer et vérifier votre clé d'API
-
Copiez et enregistrez en toute sécurité les informations d'identification affichées :
-
ID de clé d'API (Service-specificidentifiant d'identification)
-
Secret de la clé API (jeton porteur)
La console offre également la possibilité de stocker votre clé d'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é d'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 devez personnaliser les autorisations, vous pouvez configurer manuellement l'accès au point de terminaison OTLP.
Étape 1 : créer un utilisateur IAM
Créez un utilisateur IAM pour l'ingestion des 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ée)
Joignez la politique CloudWatchAPIKeyAccessgérée.
Option B : créer une politique personnalisée
Créez et attachez 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 Next, puis Create user.
Note
Les autorisations KMS sont requises si vous prévoyez d'envoyer des métriques à des ensembles de données utilisant 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é API CloudWatch Metrics à 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-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 30
La réponse est un ServiceSpecificCredentialobjet. 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é d'API.
Étape 3 : Envoyer des métriques
Vous pouvez immédiatement envoyer 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 à la fois application/json les types de application/x-protobuf contenu.
Autorisations de contrôle pour la génération et l'utilisation CloudWatch des clés d'API Metrics
Contrôle de 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 de l'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 des métriques OTLP ()https://monitoring.. Ils ne peuvent pas être utilisés pour appeler une autre CloudWatch API ou point de terminaison, y compris les API de requête (AWS Region.amazonaws.com/v1/metricsGetMetricData,,DescribeAlarms)ListMetrics, le point de terminaison de requête ProMQL, le point de terminaison de traces OTLP ou le point de terminaison de journalisation OTLP.
Exemples de politiques
Empêcher une identité de générer et d'utiliser CloudWatch les 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 au service. Pour plus d'informations, consultez les Service-specificinformations d'identification des utilisateurs IAM dans le guide de l'utilisateur IAM.
Empêcher une identité d'utiliser CloudWatch les clés de l'API Metrics :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } ] }
Autorisez la création de clés de CloudWatch métriques 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 Collector OpenTelemetry
Lorsque vous utilisez des jetons au porteur, vous n'avez pas besoin de l'sigv4authextension. Utilisez l'extension bearertokenauth
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 confiés au contrôle de version ou stockés dans des manifestes de déploiement. filenameÀ utiliser pour lire à partir d'un secret monté ou ${env:VAR} à partir d'une variable d'environnement injectée par votre gestionnaire de secrets.
Note
Avec l'authentification par jeton porteur, vous n'avez pas besoin de l'sigv4authextension, des fichiers AWS d'identification, des rôles IAM ou de la configuration IRSA. Cela rend la configuration du collecteur portable dans n'importe quel environnement AWS, qu'il soit sur site ou auprès d'autres fournisseurs de cloud.
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 des métriques, procédez comme suit :
Pour faire pivoter une clé d'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 au 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 la configuration ou l'application de votre OpenTelemetry collecteur 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-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Vérifiez que la livraison des métriques n'est pas affectée. Envoyez une demande de test à l'aide de la nouvelle clé et confirmez que vous recevez une réponse HTTP 200. Vous pouvez également surveiller les CloudWatch indicateurs existants de votre application pour confirmer que les données continuent d'arriver.
-
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-idACCA1234EXAMPLE1234
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 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 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 :
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 -
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-idACCA1234EXAMPLE1234 -
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": "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é d'API CloudWatch Metrics. Les jetons Bearer ne peuvent être utilisés que pour l'ingestion de métriques, et non 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é.
Bonnes pratiques 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 des secrets é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. -
Appliquez les autorisations du moindre privilège. Utilisez la CloudWatchAPIKeyAccesspolitique 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::Metric. 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 pour l'ingestion de CloudWatch Metrics OTLP. CloudWatch émet AWS::CloudWatch::Metric 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 des métriques, y compris l'utilisation des clés d'API.
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 CloudTrail dans le guide de AWS CloudTrail l'utilisateur.
Pour activer la CloudTrail journalisation de l'utilisation des clés de l'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 liés à l'écriture (ingestion) des données de Metrics :
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::Metric"] }, { "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 incluent tous les appels d'ingestion OTLP. Pour identifier l'utilisation du jeton porteur parmi ces événements, interrogez vos journaux de suivi (via Athena CloudTrail ou Lake) et filtrez en fonction du nom d'utilisateur IAM associé à votre clé d'API (par exemple,). cloudwatch-metrics-api-key-user Les événements issus de l'ingestion OTLP sont inclus AdditionalEventData.protocol OTLP dans la charge utile des événements, que vous pouvez utiliser dans les requêtes post-hoc pour les distinguer des appels SDK classiques PutMetricData .