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.
Inhaber-Token-Authentifizierung für Metriken einrichten
Anmerkung
Diese Seite behandelt die Inhaber-Token-Authentifizierung für den CloudWatch Metrics OTLP-Endpunkt. Informationen zur CloudWatch Logs-Inhaber-Token-Authentifizierung finden Sie unter Einrichten der Inhaber-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 Metrikberechtigungen CloudWatch
-
Generieren Sie dienstspezifische Anmeldeinformationen (API-Schlüssel)
Wichtig
Wir empfehlen, die SigV4-Authentifizierung mit kurzfristigen Anmeldeinformationen für alle Workloads zu verwenden, sofern dies möglich ist. SigV4 bietet das stärkste Sicherheitsniveau. Beschränken Sie die Verwendung von API-Schlüsseln (Inhaber-Token) auf Szenarien, in denen eine kurzfristige Authentifizierung mit Anmeldeinformationen nicht möglich ist, z. B. das Senden von Metriken von AWS Nicht-Umgebungen, 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). Über einfaches HTTP gesendete Bearer-Token-Anfragen werden abgelehnt. Verwenden Sie diese Option immerhttps://monitoring., wenn Sie Ihren Client konfigurieren.AWS Region.amazonaws.com/v1/metrics
Option 1: Schnellstart mit der AWS Konsole
Die AWS Management Console bietet einen optimierten Arbeitsablauf zum Generieren 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 läuft ab (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 CloudWatchAPIKeyAccess verwaltete 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 dafür entscheiden, ihn im Secrets Manager zu speichern, 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 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 CloudWatchAPIKeyAccess verwaltete Richtlinie an.
Option B: Erstellen Sie eine benutzerdefinierte Richtlinie
Erstellen Sie die folgende IAM-Richtlinie und hängen 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 planen, Metriken an Datensätze zu senden, die vom Kunden verwaltete KMS-Schlüssel (CMK) verwenden. Die Bedingungen beschränken den KMS-Zugriff nur auf Schlüssel, die über den CloudWatch Service für Datensatzressourcen verwendet werden.
Schritt 2: Generieren Sie dienstspezifische Anmeldeinformationen (API-Schlüssel)
Generieren Sie den CloudWatch Metrics-API-Schlüssel mithilfe der CreateServiceSpecificCredential API. 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 ServiceSpecificCredential Objekt. 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 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 Metrik-API-Schlüsseln
Steuerung der Generierung von CloudWatch Metrics-API-Schlüsseln
Die iam:CreateServiceSpecificCredential Aktion 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 dem IAM-Benutzer, der dem Schlüssel zugeordnet ist, eine Richtlinie hinzu, die die cloudwatch:CallWithBearerToken Aktion verweigert.
Anmerkung
Bearer-Token für CloudWatch Metrics können nur zusammen 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 der Abfrage-APIs (,AWS Region.amazonaws.com/v1/metricsDescribeAlarms)GetMetricData, ListMetrics des PromQL-Abfrageendpunkts, des OTLP-Traces-Endpunkts oder des OTLP-Logs-Endpunkts.
Beispielrichtlinien
Verhindern Sie, dass eine Identität Metrics-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-specific Anmeldeinformationen für IAM-Benutzer im IAM-Benutzerhandbuch.
Verhindern Sie, dass eine Identität CloudWatch Metrik-API-Schlüssel verwendet:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } ] }
Erlauben Sie die Erstellung von CloudWatch Metrikschlüsseln nur, wenn diese 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-Token mit dem Collector OpenTelemetry
Wenn Sie Inhaber-Token verwenden, benötigen Sie die sigv4auth Erweiterung nicht. Verwenden Sie die Erweiterung
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
Codieren Sie API-Schlüssel niemals direkt in Collector-Konfigurationsdateien fest. Konfigurationsdateien werden häufig der Versionskontrolle unterzogen oder in Bereitstellungsmanifesten gespeichert. Verwenden Sie diese Option, filename um aus einem bereitgestellten Geheimnis ${env:VAR} zu lesen oder aus einer Umgebungsvariablen zu lesen, die von Ihrem Secrets Manager eingefügt wurde.
Anmerkung
Bei der Bearer-Token-Authentifizierung benötigen Sie weder die sigv4auth Erweiterung noch die AWS Anmeldeinformationsdateien, IAM-Rollen oder die IRSA-Konfiguration. Dadurch ist die Collector-Konfiguration auf jede Umgebung übertragbar — ob AWS lokal oder bei anderen Cloud-Anbietern.
Rotierende API-Schlüssel
Das regelmäßige Rotieren Ihrer API-Schlüssel reduziert das Risiko eines unbefugten Zugriffs. Sie sollten empfehlen, einen Rotationsplan zu erstellen, der den Sicherheitsrichtlinien Ihres Unternehmens entspricht.
Rotationsprozess
Gehen Sie wie folgt vor, um einen API-Schlüssel zu rotieren, ohne die Bereitstellung der Metriken zu unterbrechen:
Um einen API-Schlüssel zu rotieren
-
Erstellen Sie neue (sekundäre) Anmeldeinformationen 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 und 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 der 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 Metriken Ihrer Anwendung überwachen, um sicherzustellen, dass weiterhin Daten eintreffen.
-
Nachdem Sie die erfolgreiche Übertragung mit dem neuen Schlüssel bestätigt haben, löschen Sie die vorherigen Anmeldeinformationen:
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234
Den Ablauf des Schlüssels überwachen
Verwenden Sie den Befehl https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html
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 länger aktiv sind, als es Ihre Rotationsrichtlinie zulässt.
Reaktion auf einen kompromittierten API-Schlüssel
Wenn Sie den Verdacht haben, dass ein API-Schlüssel kompromittiert wurde, gehen Sie sofort wie folgt vor:
Um auf einen kompromittierten API-Schlüssel zu antworten
-
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. Unter Protokollierung der Verwendung des API-Schlüssels mit CloudTrail erfahren Sie, wie Sie die Überwachung der Verwendung von API-Schlüsseln aktivieren.
-
Erstellen Sie einen Ersatzschlüssel gemäß dem unter beschriebenen RotationsprozessRotationsprozess.
-
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 während der Untersuchung sofort den gesamten Inhaber-Token-Zugriff für den IAM-Benutzer blockieren müssen:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } }
Anmerkung
Um diese Aktionen über die API ausführen zu können, 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 mitfilenameoder${env:VAR}, um Geheimnisse zur Laufzeit einzufügen. -
Verwenden Sie einen Geheimnismanager. Speichern Sie API-Schlüssel in AWS Secrets Manager oder einer gleichwertigen Lösung zur Verwaltung von Geheimnissen. Dies ermöglicht eine zentrale Zugriffskontrolle, Auditprotokollierung und automatische Rotation.
-
Legen Sie für alle Schlüssel ein Ablaufdatum fest. Geben Sie beim Erstellen von API-Schlüsseln immer einen
--credential-age-daysWert an. Verwenden Sie deniam:ServiceSpecificCredentialAgeDaysIAM-Bedingungsschlüssel, um in Ihrer gesamten Organisation eine maximale Schlüssellebensdauer durchzusetzen. -
Wenden Sie Berechtigungen mit geringsten Rechten an. Verwenden Sie die verwaltete CloudWatchAPIKeyAccess Richtlinie 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::Dataset. Siehe Protokollierung der Verwendung des API-Schlüssels mit CloudTrail. -
Überwachen Sie mit IAM Access Analyzer. Verwenden Sie IAM Access Analyzer, um ungenutzte Anmeldeinformationen und übermäßig freizügige Richtlinien zu identifizieren, die Ihren API-Schlüssel-IAM-Benutzern zugeordnet sind.
-
Wechseln Sie die Schlüssel regelmäßig. Erstellen Sie einen Rotationsplan und folgen Sie dem unter beschriebenen VerfahrenRotierende API-Schlüssel.
Protokollierung der Verwendung des API-Schlüssels mit CloudTrail
Sie können es verwenden AWS CloudTrail , um Datenereignisse für die OTLP-Erfassung von CloudWatch Metriken zu protokollieren. CloudWatch sendet AWS::CloudWatch::Dataset 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 überwachen können.
Anmerkung
Der S3-Bucket, den Sie für den Trail angeben, muss über eine Bucket-Richtlinie verfügen, die das Schreiben von Protokolldateien CloudTrail in den Bucket ermöglicht. Weitere Informationen finden Sie unter Amazon 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 zum Erfassen 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::Dataset"] }, { "Field": "readOnly", "Equals": ["false"] } ] }]' -
Starten Sie das Trail-Logging:
aws cloudtrail start-logging \ --name cloudwatch-metrics-api-key-audit \ --region us-east-1
Der readOnly: false Filter beschränkt die Protokollierung auf write operations (PutMetricData), was alle OTLP-Ingestion-Aufrufe einschließt. Um die Verwendung von Bearer-Token unter diesen Ereignissen zu ermitteln, fragen Sie Ihre Trail-Logs ab (über Athena oder CloudTrail Lake) und filtern Sie nach dem IAM-Benutzernamen, der Ihrem API-Schlüssel zugeordnet ist (z. B.). cloudwatch-metrics-api-key-user Ereignisse, die sich aus der OTLP-Erfassung ergeben, sind in der Nutzlast des Ereignisses enthaltenAdditionalEventData.protocol. Sie können diese OTLP in Post-hoc-Abfragen verwenden, um sie von klassischen SDK-Aufrufen zu unterscheiden. PutMetricData