Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichtung der Bearer-Token-Authentifizierung für Metrics
Anmerkung
Diese Seite behandelt die Bearer-Token-Authentifizierung für den CloudWatch Metrics OTLP-Endpunkt. Informationen zur Authentifizierung mit CloudWatch Log-Träger-Tokens finden Sie unter Einrichten der Bearer-Token-Authentifizierung für Logs im CloudWatch Logs-Benutzerhandbuch.
Bevor Sie Metriken mithilfe der Bearer-Token-Authentifizierung mit dem CloudWatch OTLP-Endpunkt senden können, müssen Sie:
-
Erstellen Sie einen IAM-Benutzer mit Metrics-Berechtigungen CloudWatch
-
Generieren Sie dienstspezifische Anmeldeinformationen (API-Schlüssel)
Wichtig
Wir empfehlen, für alle Workloads, bei denen dies möglich ist, die SigV4-Authentifizierung mit kurzfristigen Anmeldeinformationen zu verwenden. SigV4 bietet die stärkste Sicherheitslage. Beschränken Sie die Verwendung von API-Schlüsseln (Bearer-Token) auf Szenarien, in denen eine kurzfristige Authentifizierung auf der Grundlage von Anmeldeinformationen nicht möglich ist, z. B. das Senden von Metriken aus AWS Umgebungen, von Drittanbietern oder Plattformen, die das SDK nicht unterstützen. AWS Wenn Sie bereit sind, CloudWatch Metriken in Anwendungen mit höheren Sicherheitsanforderungen zu integrieren, wechseln Sie zu kurzfristigen Anmeldeinformationen. Weitere Informationen finden Sie im IAM-Benutzerhandbuch unter Alternativen zu langfristigen Zugriffsschlüsseln.
Wichtig
Der CloudWatch OTLP-Endpunkt erfordert TLS (HTTPS). Bearer-Token-Anfragen, die über einfaches HTTP gesendet werden, werden zurückgewiesen. Verwenden Sie diese Option immerhttps://monitoring., wenn Sie Ihren Client konfigurieren.AWS Region.amazonaws.com/v1/metrics
Option 1: Schnellstart mit dem AWS Konsole
Die AWS Management Console bietet einen optimierten Arbeitsablauf zur Generierung von API-Schlüsseln für den OTLP-Endpunktzugriff.
So richten Sie den OTLP-Endpunktzugriff mithilfe der Konsole ein
-
Melden Sie sich bei der AWS Management Console an.
-
Navigieren Sie zu CloudWatch> Einstellungen > Global.
-
Wählen Sie im Abschnitt API-Schlüssel die Option API-Schlüssel generieren aus.
-
Für den Ablauf des API-Schlüssels haben Sie folgende Möglichkeiten:
-
Wählen Sie eine Ablaufdauer für den API-Schlüssel von 1, 5, 30, 90 oder 365 Tagen aus.
-
Wählen Sie Benutzerdefinierte Dauer aus, um ein benutzerdefiniertes Ablaufdatum für den API-Schlüssel festzulegen.
-
Wählen Sie Nie abläuft aus (nicht empfohlen).
-
-
Wählen Sie API-Schlüssel generieren aus.
Die Konsole automatisch:
-
Erstellt einen neuen IAM-Benutzer mit den entsprechenden Berechtigungen
-
Hängt die CloudWatchAPIKeyAccessverwaltete Richtlinie an (einschließlich
cloudwatch:PutMetricDataundcloudwatch:CallWithBearerTokenBerechtigungen) -
Generiert dienstspezifische Anmeldeinformationen (API-Schlüssel)
Um Ihren API-Schlüssel zu speichern und zu verifizieren
-
Kopieren Sie die angezeigten Anmeldeinformationen und speichern Sie sie sicher:
-
API-Schlüssel-ID (Service-specificAnmeldeinformations-ID)
-
Geheimer API-Schlüssel (Inhaber-Token)
Die Konsole bietet auch die Möglichkeit, Ihren API-Schlüssel während der Generierung direkt im AWS Secrets Manager zu speichern. Wenn Sie sich für die Speicherung im Secrets Manager entscheiden, wird der Schlüssel beim Zurücksetzen automatisch aktualisiert und beim Löschen des Schlüssels gelöscht.
Wichtig
Speichern Sie das API-Schlüsselgeheimnis sofort. Sie können es später nicht mehr abrufen. Wenn Sie ihn verlieren, müssen Sie einen neuen API-Schlüssel generieren.
-
-
Senden Sie eine Testmetrik, um Ihr Setup zu überprüfen:
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: Manuelle Einrichtung
Wenn Sie mehr Kontrolle über die IAM-Konfiguration bevorzugen oder die Berechtigungen anpassen müssen, können Sie den OTLP-Endpunktzugriff manuell einrichten.
Schritt 1: Erstellen Sie einen IAM-Benutzer
Erstellen Sie einen IAM-Benutzer für die Erfassung von Metriken:
So erstellen Sie einen IAM-Benutzer für die Erfassung von Metriken
-
Melden Sie sich bei der AWS Management Console an und navigieren Sie zu IAM.
-
Wählen Sie im linken Navigationsbereich Benutzer aus.
-
Wählen Sie Create user (Benutzer erstellen) aus.
-
Geben Sie einen Benutzernamen ein (z. B.
cloudwatch-metrics-api-key-user). -
Wählen Sie Weiter aus.
-
Hängen Sie eine der folgenden IAM-Richtlinien an:
Option A: Verwenden Sie die verwaltete Richtlinie (empfohlen)
Hängen Sie die CloudWatchAPIKeyAccessverwaltete Richtlinie an.
Option B: Erstellen Sie eine benutzerdefinierte Richtlinie
Erstellen Sie die folgende IAM-Richtlinie und fügen Sie sie an:
{ "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/*" } ] } -
Wählen Sie Weiter und dann Benutzer erstellen aus.
Anmerkung
Die KMS-Berechtigungen sind erforderlich, wenn Sie Metriken an Datensätze senden möchten, die vom Kunden verwaltete KMS-Schlüssel (CMK) verwenden. Die Bedingungen beschränken den KMS-Zugriff nur auf Schlüssel, die über den CloudWatch Dienst für Datensatzressourcen verwendet werden.
Schritt 2: Generieren Sie dienstspezifische Anmeldeinformationen (API-Schlüssel)
Generieren Sie den CloudWatch Metrics-API-Schlüssel mithilfe der CreateServiceSpecificCredentialAPI. Sie können auch den Befehl create-service-specific-credential
Um einen API-Schlüssel mit einem Ablauf von 30 Tagen zu generieren:
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 30
Die Antwort ist ein ServiceSpecificCredentialObjekt. Der ServiceCredentialSecret Wert ist Ihr CloudWatch Metrics-API-Schlüssel (Bearer-Token).
Wichtig
Speichern Sie den ServiceCredentialSecret Wert sicher. Sie können ihn später nicht mehr abrufen. Wenn Sie ihn verlieren, müssen Sie einen neuen API-Schlüssel generieren.
Schritt 3: Metriken senden
Mit Ihrem Bearer-Token können Sie sofort Metriken an den OTLP-Endpunkt senden:
curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: BearerYOUR_API_KEY" \ -d '{"resourceMetrics":[]}'
Der Endpunkt akzeptiert sowohl Inhaltstypen als auch application/json application/x-protobuf Inhaltstypen.
Steuern Sie die Berechtigungen für die Generierung und Verwendung von CloudWatch Metrics-API-Schlüsseln
Steuerung der Generierung von CloudWatch Metrics-API-Schlüsseln
Die iam:CreateServiceSpecificCredentialAktion steuert die Generierung eines dienstspezifischen Schlüssels (z. B. eines CloudWatch Metrics-API-Schlüssels). Sie können diese Aktion auf IAM-Benutzer als Ressource beschränken, um die Anzahl der Benutzer einzuschränken, für die ein Schlüssel generiert werden kann.
Mit den folgenden Bedingungsschlüsseln können Sie Bedingungen mit der Berechtigung für die Aktion iam:CreateServiceSpecificCredential verknüpfen:
-
iam:ServiceSpecificCredentialAgeDays— Ermöglicht es Ihnen, in der Bedingung die Ablaufzeit des Schlüssels in Tagen anzugeben. -
iam:ServiceSpecificCredentialServiceName— Ermöglicht es Ihnen, in der Bedingung den Namen eines Dienstes anzugeben.
Steuerung der Verwendung von CloudWatch Metrics-API-Schlüsseln
Die cloudwatch:CallWithBearerToken Aktion steuert die Verwendung eines CloudWatch Metrics-API-Schlüssels. Um zu verhindern, dass eine Identität CloudWatch Metrics-API-Schlüssel verwendet, fügen Sie eine Richtlinie hinzu, die dem IAM-Benutzer, der mit dem Schlüssel verknüpft ist, die cloudwatch:CallWithBearerToken Aktion verweigert.
Anmerkung
Trägertoken für CloudWatch Metriken können nur mit dem Endpunkt für die Erfassung von OTLP-Metriken () verwendet werden. https://monitoring. Sie können nicht verwendet werden, um andere CloudWatch APIs oder Endpunkte aufzurufen, einschließlich Abfrage-APIs (,,AWS Region.amazonaws.com/v1/metricsDescribeAlarms)GetMetricData, ListMetrics des PromQL-Abfrageendpunkts, des OTLP-Traces-Endpunkts oder des OTLP-Log-Endpunkts.
Beispielrichtlinien
Verhindern Sie, dass eine Identität Metrik-API-Schlüssel generiert und verwendet CloudWatch:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWMetricsAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "cloudwatch:CallWithBearerToken" ], "Resource": "*" } ] }
Warnung
Diese Richtlinie verhindert die Erstellung von Anmeldeinformationen für alle AWS Dienste, die die Erstellung dienstspezifischer Anmeldeinformationen unterstützen. Weitere Informationen finden Sie unter Service-specificAnmeldeinformationen für IAM-Benutzer im IAM-Benutzerhandbuch.
Verhindern Sie, dass eine Identität CloudWatch Metrics-API-Schlüssel verwendet:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } ] }
Erlaube die Erstellung von CloudWatch Metrics-Schlüsseln nur, wenn sie innerhalb von 90 Tagen ablaufen:
{ "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" } } } ] }
Verwendung von Inhaber-Tokens mit dem Collector OpenTelemetry
Wenn Sie Inhaber-Token verwenden, benötigen Sie die sigv4auth Erweiterung nicht. Verwenden Sie die Erweiterung 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]
Alternativ können Sie statt einer Datei auf eine Umgebungsvariable verweisen:
extensions: bearertokenauth: token: "${env:CW_API_KEY}"
Wichtig
Kodieren Sie API-Schlüssel niemals direkt in den Collector-Konfigurationsdateien fest. Konfigurationsdateien werden häufig der Versionskontrolle übergeben oder in Bereitstellungsmanifesten gespeichert. Wird verwendetfilename, um aus einem bereitgestellten geheimen Schlüssel oder aus einer Umgebungsvariablen ${env:VAR} zu lesen, die von Ihrem Secrets-Manager eingegeben wurde.
Anmerkung
Bei der Bearer-Token-Authentifizierung benötigen Sie weder die sigv4auth Erweiterung noch die AWS Anmeldeinformationsdateien, die IAM-Rollen oder die IRSA-Konfiguration. Dadurch ist die Collector-Konfiguration in jeder Umgebung portabel — ob AWS lokal oder bei anderen Cloud-Anbietern.
Rotierende API-Schlüssel
Durch die regelmäßige Rotation Ihrer API-Schlüssel wird das Risiko eines unbefugten Zugriffs verringert. Wir empfehlen, einen Rotationsplan aufzustellen, der den Sicherheitsrichtlinien Ihres Unternehmens entspricht.
Ablauf der Rotation
Gehen Sie wie folgt vor, um einen API-Schlüssel zu rotieren, ohne die Bereitstellung von Metriken zu unterbrechen:
Um einen API-Schlüssel zu rotieren
-
Erstellen Sie einen neuen (sekundären) Berechtigungsnachweis für den IAM-Benutzer:
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 90Anmerkung
IAM erlaubt maximal 2 dienstspezifische Anmeldeinformationen pro IAM-Benutzer pro Dienst. Löschen oder deaktivieren Sie alte Anmeldeinformationen, bevor Sie neue erstellen, wenn Sie dieses Limit erreicht haben.
-
(Optional) Speichern Sie die neuen Anmeldeinformationen in AWS Secrets Manager für einen sicheren Abruf und eine automatische Rotation.
-
Aktualisieren Sie Ihre OpenTelemetry Collector-Konfiguration oder -Anwendung, um den neuen API-Schlüssel zu verwenden.
-
Setzen Sie die ursprünglichen Anmeldeinformationen auf inaktiv:
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Stellen Sie sicher, dass die Bereitstellung von Metriken nicht beeinträchtigt wird. Senden Sie eine Testanfrage mit dem neuen Schlüssel und bestätigen Sie, dass Sie eine HTTP 200-Antwort erhalten. Sie können auch die vorhandenen CloudWatch Messwerte Ihrer Anwendung überwachen, um sicherzustellen, dass weiterhin Daten eintreffen.
-
Nachdem Sie die erfolgreiche Bereitstellung mit dem neuen Schlüssel bestätigt haben, löschen Sie die vorherigen Anmeldeinformationen:
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234
Ablauf des Schlüssels überwachen
Verwenden Sie den Befehl list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com
Die Antwort beinhaltet CreateDate und für jeden Berechtigungsnachweis. Status Verwenden Sie diese Informationen, um Schlüssel zu identifizieren, die bald ablaufen oder die schon länger aktiv sind, als es Ihre Rotationsrichtlinie zulässt.
Reaktion auf einen kompromittierten API-Schlüssel
Wenn Sie vermuten, dass ein API-Schlüssel kompromittiert wurde, führen Sie sofort die folgenden Schritte durch:
Um auf einen kompromittierten API-Schlüssel zu reagieren
-
Deaktivieren Sie den Schlüssel sofort, um eine weitere unbefugte Verwendung zu verhindern:
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Überprüfen Sie die CloudTrail Protokolle, um den Umfang des unbefugten Zugriffs zu ermitteln. Weitere Informationen Protokollierung der Verwendung von API-Schlüsseln mit CloudTrail zur Aktivierung der Überwachung der API-Schlüsselnutzung finden Sie unter.
-
Erstellen Sie nach dem unter beschriebenen Rotationsprozess einen ErsatzschlüsselAblauf der Rotation.
-
Löschen Sie den kompromittierten Schlüssel, nachdem der Ersatzschlüssel installiert wurde:
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234 -
Fügen Sie eine Ablehnungsrichtlinie hinzu, wenn Sie sofort den gesamten Zugriff auf Inhaber-Tokens für den IAM-Benutzer sperren müssen, während Sie die folgenden Untersuchungen durchführen:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } }
Anmerkung
Um diese Aktionen über die API auszuführen, müssen Sie sich mit AWS Anmeldeinformationen und nicht mit einem CloudWatch Metrics-API-Schlüssel authentifizieren. Bearer-Token können nur für die Erfassung von Metriken verwendet werden, nicht für IAM-Verwaltungsvorgänge.
Sie können auch die folgenden IAM-API-Operationen verwenden, um kompromittierte Schlüssel zu verwalten:
-
ResetServiceSpecificCredential— Setzen Sie den Schlüssel zurück, um ein neues Passwort zu generieren, ohne die Anmeldeinformationen zu löschen. Der Schlüssel darf nicht abgelaufen sein.
Bewährte Sicherheitsmethoden für API-Schlüssel
Folgen Sie diesen bewährten Methoden, um Ihre CloudWatch Metrics-API-Schlüssel zu schützen:
-
Betten Sie niemals API-Schlüssel in den Quellcode ein. Codieren Sie API-Schlüssel nicht fest in Anwendungscode, Collector-Konfigurationsdateien oder Versionskontrollsystemen. Verwenden Sie die
bearertokenauthErweiterung zusammen mitfilenameoder${env:VAR}, um Geheimnisse zur Laufzeit einzufügen. -
Verwenden Sie einen Secrets-Manager. Speichern Sie API-Schlüssel in AWS Secrets Manager oder einer gleichwertigen Secrets-Management-Lösung. Dies ermöglicht eine zentrale Zugriffskontrolle, Auditprotokollierung und automatisierte Rotation.
-
Legen Sie für alle Schlüssel ein Ablaufdatum fest. Geben Sie bei der Erstellung von API-Schlüsseln immer einen
--credential-age-daysWert an. Verwenden Sie deniam:ServiceSpecificCredentialAgeDaysIAM-Bedingungsschlüssel, um eine maximale Gültigkeitsdauer von Schlüsseln in Ihrer Organisation durchzusetzen. -
Wenden Sie Berechtigungen mit den geringsten Rechten an. Verwenden Sie die verwaltete CloudWatchAPIKeyAccessRichtlinie als Ausgangspunkt und schränken Sie sie bei Bedarf weiter ein.
-
Aktivieren Sie die CloudTrail Protokollierung. Überwachen Sie die Verwendung von API-Schlüsseln, indem Sie CloudTrail Datenereignisse für aktivieren
AWS::CloudWatch::Metric. Siehe Protokollierung der Verwendung von API-Schlüsseln mit CloudTrail. -
Überwachen Sie mit IAM Access Analyzer. Verwenden Sie IAM Access Analyzer, um ungenutzte Anmeldeinformationen und übermäßig freizügige Richtlinien im Zusammenhang mit Ihren API-Schlüssel-IAM-Benutzern zu identifizieren.
-
Wechseln Sie die Schlüssel regelmäßig. Legen Sie einen Rotationsplan fest und folgen Sie dem unter beschriebenen VerfahrenRotierende API-Schlüssel.
Protokollierung der Verwendung von API-Schlüsseln mit CloudTrail
Sie können es verwenden AWS CloudTrail , um Datenereignisse für die OTLP-Erfassung von CloudWatch Metrics zu protokollieren. CloudWatch sendet AWS::CloudWatch::Metric Datenereignisse für Aufrufe an den OTLP-Endpunkt aus, sodass Sie die Aktivitäten zur Erfassung von Metriken, einschließlich der Verwendung von API-Schlüsseln, überprüfen können.
Anmerkung
Der S3-Bucket, den Sie für den Trail angeben, muss über eine Bucket-Richtlinie verfügen, die das Schreiben von CloudTrail Protokolldateien in ihn ermöglicht. Weitere Informationen finden Sie unter Amazon S3 S3-Bucket-Richtlinie für CloudTrail im AWS CloudTrail Benutzerhandbuch.
Um die CloudTrail Protokollierung für die Verwendung von CloudWatch Metrics API-Schlüsseln zu aktivieren
-
Erstellen Sie einen Trail:
aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-namemy-cloudtrail-bucket\ --region us-east-1 -
Konfigurieren Sie erweiterte Event-Selektoren zur Erfassung von CloudWatch Metrik-Schreib- (Ingestions-) Datenereignissen:
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"] } ] }]' -
Starten Sie die Trail-Protokollierung:
aws cloudtrail start-logging \ --name cloudwatch-metrics-api-key-audit \ --region us-east-1
Der readOnly: false Filter beschränkt die Protokollierung auf Schreiboperationen (PutMetricData), was alle OTLP-Aufnahmerufe einschließt. Um die Verwendung von Inhaber-Tokens unter diesen Ereignissen zu identifizieren, fragen Sie Ihre Trail-Logs ab (über Athena oder CloudTrail Lake) und filtern Sie nach dem IAM-Benutzernamen, der mit Ihrem API-Schlüssel verknüpft ist (z. B.). cloudwatch-metrics-api-key-user Ereignisse aus der OTLP-Erfassung sind OTLP in der Event-Payload auf AdditionalEventData.protocol festgelegt, was Sie in Post-hoc-Abfragen verwenden können, um sie von klassischen SDK-Aufrufen zu unterscheiden. PutMetricData