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
Bevor Sie Protokolle mithilfe der Bearer-Token-Authentifizierung mit einem der HTTP-Ingestion-Endpunkte senden können, müssen Sie:
Erstellen Sie einen IAM-Benutzer mit Logs-Berechtigungen CloudWatch
Generieren Sie dienstspezifische Anmeldeinformationen (Bearer-Token)
Erstellen Sie eine Protokollgruppe und einen Protokollstream
Aktivieren Sie die Bearer-Token-Authentifizierung für die Protokollgruppe
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. Wenn Sie bereit sind, CloudWatch Logs in Anwendungen mit höheren Sicherheitsanforderungen zu integrieren, sollten Sie auf kurzfristige Anmeldedaten umsteigen. Weitere Informationen finden Sie unter Alternativen zu langfristigen Zugriffsschlüsseln im IAM-Benutzerhandbuch.
Option 1: Schnellstart mit der Konsole AWS
Die AWS Management Console bietet einen optimierten Arbeitsablauf zur Generierung von API-Schlüsseln für den HTTP-Endpunktzugriff.
So richten Sie den HTTP-Endpunktzugriff mithilfe der Konsole ein
Melden Sie sich bei der AWS Management Console an.
Navigieren Sie zu CloudWatch> Einstellungen > Protokolle.
-
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 verwaltete CloudWatchLogsAPIKeyAccess-Richtlinie an (einschließlich
logs:PutLogEventsundlogs:CallWithBearerTokenBerechtigungen)Generiert dienstspezifische Anmeldeinformationen (API-Schlüssel)
-
Kopieren Sie die angezeigten Anmeldeinformationen und speichern Sie sie sicher:
API-Schlüssel-ID (dienstspezifische Anmeldeinformations-ID)
Geheimer API-Schlüssel (Inhaber-Token)
Wichtig
Speichern Sie das API-Schlüsselgeheimnis sofort. Er kann später nicht mehr abgerufen werden. Wenn Sie ihn verlieren, müssen Sie einen neuen API-Schlüssel generieren.
-
Erstellen Sie die Protokollgruppe und den Protokollstream, in denen Ihre Protokolle gespeichert werden:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1 -
Aktivieren Sie die Bearer-Token-Authentifizierung für die Protokollgruppe:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1Überprüfen Sie die Konfiguration:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Enthaltene Berechtigungen: Der automatisch erstellte IAM-Benutzer verfügt über die folgenden Berechtigungen:
logs:PutLogEvents— Sendet Protokollereignisse an CloudWatch Logslogs:CallWithBearerToken— Authentifizieren Sie sich mit dem Bearer-Tokenkms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Greifen Sie auf KMS-verschlüsselte Protokollgruppen zu (mit einer Bedingung, die auf den Protokolldienst beschränkt ist)
Option 2: Manuelle Einrichtung
Wenn Sie mehr Kontrolle über die IAM-Konfiguration bevorzugen oder die Berechtigungen anpassen müssen, können Sie den HTTP-Endpunktzugriff manuell einrichten.
Schritt 1: Erstellen Sie einen IAM-Benutzer
Erstellen Sie einen IAM-Benutzer, der für die Protokollaufnahme verwendet wird:
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-logs-hlc-user).Wählen Sie Weiter aus.
-
Fügen Sie eine der folgenden IAM-Richtlinien hinzu:
Option A: Verwenden Sie die verwaltete Richtlinie (empfohlen)
Hängen Sie die verwaltete CloudWatchLogsAPIKeyAccess-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": "LogsAPIs", "Effect": "Allow", "Action": [ "logs:CallWithBearerToken", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "KMSAPIs", "Effect": "Allow", "Action": [ "kms:Describe*", "kms:GenerateDataKey*", "kms:Decrypt" ], "Condition": { "StringEquals": { "kms:ViaService": [ "logs.*.amazonaws.com" ] } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } Wählen Sie Weiter und dann Benutzer erstellen.
Anmerkung
Die KMS-Berechtigungen sind erforderlich, wenn Sie Protokolle an KMS-verschlüsselte Protokollgruppen senden möchten. Die Bedingung beschränkt den KMS-Zugriff nur auf Schlüssel, die über CloudWatch den Logs-Dienst verwendet werden.
Schritt 2: Generieren Sie dienstspezifische Anmeldeinformationen (API-Schlüssel)
Generieren Sie den CloudWatch Logs-API-Schlüssel mithilfe der CreateServiceSpecificCredentialAPI. Sie können auch den 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-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
Die Antwort ist ein ServiceSpecificCredentialObjekt. Der ServiceCredentialSecret Wert ist Ihr CloudWatch Logs-API-Schlüssel (Bearer-Token).
Wichtig
Speichern Sie den Wert „ServiceCredentialSecret“ sicher, da Sie ihn später nicht mehr abrufen können. Wenn Sie ihn verlieren, müssen Sie einen neuen API-Schlüssel generieren.
Schritt 3: Erstellen Sie eine Protokollgruppe und einen Protokollstream
Erstellen Sie die Protokollgruppe und den Protokollstream, in denen Ihre Protokolle gespeichert werden:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1
Schritt 4: Aktivieren Sie die Bearer-Token-Authentifizierung
Aktivieren Sie die Bearer-Token-Authentifizierung für die Protokollgruppe:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1
Überprüfen Sie die Konfiguration:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Steuern Sie die Berechtigungen für die Generierung und Verwendung von CloudWatch Logs-API-Schlüsseln
Die Generierung und Verwendung von CloudWatch Logs-API-Schlüsseln wird durch Aktionen und Bedingungsschlüssel sowohl in den CloudWatch Logs- als auch in den IAM-Diensten gesteuert.
Steuerung der Generierung von CloudWatch Logs-API-Schlüsseln
Die CreateServiceSpecificCredential Aktion iam: steuert die Generierung eines dienstspezifischen Schlüssels (z. B. eines CloudWatch Logs-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. Sie können diesen Bedingungsschlüssel zum Beispiel verwenden, um nur das Erstellen von API-Schlüsseln zu erlauben, die innerhalb von 90 Tagen ablaufen.
iam: ServiceSpecificCredentialServiceName — Ermöglicht es Ihnen, in der Bedingung den Namen eines Dienstes anzugeben. Sie können diesen Bedingungsschlüssel beispielsweise verwenden, um nur die Erstellung von API-Schlüsseln für CloudWatch Logs und nicht für andere Dienste zuzulassen.
Steuerung der Verwendung von CloudWatch Logs-API-Schlüsseln
Die logs:CallWithBearerToken Aktion steuert die Verwendung eines CloudWatch Logs-API-Schlüssels. Um zu verhindern, dass eine Identität CloudWatch Logs-API-Schlüssel verwendet, fügen Sie eine Richtlinie hinzu, die dem IAM-Benutzer, der dem Schlüssel zugeordnet ist, die logs:CallWithBearerToken Aktion verweigert.
Beispielrichtlinien
Verhindern Sie, dass eine Identität CloudWatch Logs-API-Schlüssel generiert und verwendet
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs: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 Servicespezifische Anmeldeinformationen für IAM-Benutzer.
Verhindern Sie, dass eine Identität CloudWatch Logs-API-Schlüssel verwendet
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Erlauben Sie die Erstellung von CloudWatch Logs-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": "logs.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
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.
Rotationsprozess
Gehen Sie wie folgt vor, um einen API-Schlüssel zu rotieren, ohne die Protokollzustellung zu unterbrechen:
-
Erstellen Sie einen neuen (sekundären) Berechtigungsnachweis für den IAM-Benutzer:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 90 (Optional) Speichern Sie die neuen Anmeldeinformationen AWS Secrets Manager für einen sicheren Abruf und eine automatische Rotation.
Importieren Sie die neuen Anmeldeinformationen in das Portal Ihres Anbieters oder aktualisieren Sie Ihre Anwendungskonfiguration, 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-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive Stellen Sie sicher, dass die Protokollzustellung nicht beeinträchtigt wird, indem Sie die
IncomingBytesMetrik für Ihre Protokollgruppe in überwachen. CloudWatch Weitere Informationen finden Sie unter Überwachung mit CloudWatch Metriken.-
Nachdem Sie die erfolgreiche Zustellung mit dem neuen Schlüssel bestätigt haben, löschen Sie die vorherigen Anmeldeinformationen:
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Ablauf des Schlüssels überwachen
Verwenden Sie den folgenden list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com
Die Antwort beinhaltet CreateDate und Status für jeden Berechtigungsnachweis. 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:
-
Deaktivieren Sie den Schlüssel sofort, um eine weitere unbefugte Verwendung zu verhindern:
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --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üsselRotationsprozess.
-
Löschen Sie den kompromittierten Schlüssel, nachdem der Ersatzschlüssel installiert wurde:
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234 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": "logs:CallWithBearerToken", "Resource": "*" } }
Anmerkung
Um diese Aktionen über die API auszuführen, müssen Sie sich mit AWS Anmeldeinformationen und nicht mit einem CloudWatch Logs-API-Schlüssel authentifizieren.
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 Logs-API-Schlüssel zu schützen:
Betten Sie niemals API-Schlüssel in den Quellcode ein. Codieren Sie API-Schlüssel nicht fest im Anwendungscode und übergeben Sie sie nicht an Versionskontrollsysteme. Wenn ein Schlüssel versehentlich in ein öffentliches Repository übertragen wird, wird er möglicherweise AWS durch automatisiertes Scannen gekennzeichnet. Sie sollten den Schlüssel sofort wechseln.
Verwenden Sie einen Secrets-Manager. Speichern Sie API-Schlüssel in AWS Secrets Manageroder einer gleichwertigen Lösung zur Verwaltung von Geheimnissen. Dies ermöglicht eine zentrale Zugriffskontrolle, Auditprotokollierung und automatisierte 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 eine maximale Gültigkeitsdauer von Schlüsseln in Ihrer Organisation durchzusetzen. Ein Beispiel finden Sie unter Erlauben Sie die Erstellung von CloudWatch Logs-Schlüsseln nur, wenn sie innerhalb von 90 Tagen ablaufen.Wenden Sie Berechtigungen mit den geringsten Rechten an. Beschränken Sie die Berechtigungen des IAM-Benutzers nur auf die erforderlichen Protokollgruppen und Aktionen. Verwenden Sie die Managed CloudWatchLogsAPIKeyAccess-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::Logs::LogGroupAuthorization. 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 AWS CloudTrail es verwenden, um Datenereignisse für die Verwendung von CloudWatch Logs API-Schlüsseln zu protokollieren. CloudWatch Logs sendet AWS::Logs::LogGroupAuthorization Datenereignisse für CallWithBearerToken Aufrufe aus, sodass Sie überprüfen können, wann und wie API-Schlüssel zum Senden von Protokollen verwendet werden.
So aktivieren Sie die CloudTrail Protokollierung für die Verwendung von CloudWatch Logs-API-Schlüsseln:
Anmerkung
Der S3-Bucket, den Sie für den Trail angeben, muss über eine Bucket-Richtlinie verfügen, die CloudTrail das Schreiben von Protokolldateien in ihn ermöglicht. Weitere Informationen finden Sie unter Amazon S3 S3-Bucket-Richtlinie für CloudTrail.
-
Erstellen Sie einen Trail:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Konfigurieren Sie erweiterte Event-Selektoren, um Logs zu CloudWatch protokollieren, Gruppenautorisierungsereignisse zu protokollieren:
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-logs-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Logs API key authorization events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] } ] }]' -
Starten Sie die Trailprotokollierung:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1