View a markdown version of this page

Configuration de l'authentification par jeton porteur pour Metrics - Amazon CloudWatch

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.AWS Region.amazonaws.com/v1/metrics lors de la configuration de votre client.

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
  1. Connectez-vous à la console AWS de gestion.

  2. Accédez à CloudWatch> Paramètres > Global.

  3. Dans la section Clés d'API, choisissez Générer une clé d'API.

  4. 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é).

  5. 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 et cloudwatch:CallWithBearerToken autorisations)

  • Génère des informations d'identification spécifiques au service (clé API)

Pour enregistrer et vérifier votre clé d'API
  1. 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.

  2. 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: Bearer YOUR_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
  1. Connectez-vous à la console AWS de gestion et accédez à IAM.

  2. Dans le volet de navigation de gauche, choisissez Utilisateurs.

  3. Choisissez Create user (Créer un utilisateur).

  4. Entrez un nom d'utilisateur (par exemple,cloudwatch-metrics-api-key-user).

  5. Choisissez Suivant.

  6. 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/*" } ] }
  7. 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 AWS CLI . Pour l'âge des informations d'identification, vous pouvez spécifier une valeur comprise entre 1 et 36 600 jours. Si vous ne spécifiez pas d'âge pour les informations d'identification, la clé d'API n'expirera pas.

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: Bearer YOUR_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 :

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.AWS Region.amazonaws.com/v1/metrics. Ils ne peuvent pas être utilisés pour appeler une autre CloudWatch API ou point de terminaison, y compris les API de requête (GetMetricData,,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 pour fournir en toute sécurité votre clé d'API à partir d'un fichier ou d'une variable d'environnement :

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
  1. 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 90
    Note

    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.

  2. (Facultatif) Stockez les nouvelles informations d'identification dans AWS Secrets Manager pour une récupération sécurisée et une rotation automatique.

  3. Mettez à jour la configuration ou l'application de votre OpenTelemetry collecteur pour utiliser la nouvelle clé d'API.

  4. 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-id ACCA1234EXAMPLE1234 \ --status Inactive
  5. 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.

  6. 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 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
  1. 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-id ACCA1234EXAMPLE1234 \ --status Inactive
  2. 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.

  3. Créez une clé de remplacement en suivant le processus de rotation décrit dansProcessus de rotation.

  4. 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
  5. 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 avec filename ou ${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-days valeur 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 condition iam:ServiceSpecificCredentialAgeDays IAM.

  • 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 pourAWS::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
  1. Créez un parcours :

    aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1
  2. 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"] } ] }]'
  3. 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 .