Protokollierung IAM und AWS STS API Anrufe mit AWS CloudTrail - AWS Identitäts- und Zugriffsverwaltung

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.

Protokollierung IAM und AWS STS API Anrufe mit AWS CloudTrail

IAMund AWS STS sind in einen Dienst integriert AWS CloudTrail, der eine Aufzeichnung der von einem IAM Benutzer oder einer Rolle ausgeführten Aktionen bereitstellt. CloudTrail erfasst alle API Aufrufe für IAM und AWS STS als Ereignisse, einschließlich Anrufe von der Konsole und von API Anrufen. Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Übermittlung von CloudTrail Ereignissen an einen Amazon S3 S3-Bucket aktivieren. Auch wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse in der CloudTrail-Konsole in Event history (Ereignisverlauf) anzeigen. Sie können CloudTrail damit Informationen über die Anfrage abrufen, die an IAM oder gestellt wurde AWS STS. So können Sie beispielsweise die IP-Adresse, von der aus die Anforderung gestellt wurde, wer die Anforderung gestellt hat, wann sie gestellt wurde und weitere Details einsehen.

Weitere Informationen CloudTrail dazu finden Sie im AWS CloudTrail Benutzerhandbuch.

IAMund AWS STS Informationen in CloudTrail

CloudTrail ist auf Ihrem aktiviert AWS-Konto , wenn Sie das Konto erstellen. Wenn in IAM oder eine Aktivität stattfindet AWS STS, wird diese Aktivität zusammen mit anderen AWS Serviceereignissen im CloudTrail Ereignisverlauf in einem Ereignis aufgezeichnet. Sie können aktuelle Ereignisse in Ihrem anzeigen, suchen und herunterladen AWS-Konto. Weitere Informationen finden Sie unter Ereignisse mit CloudTrail Ereignisverlauf anzeigen.

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS-Konto, einschließlich der Ereignisse für IAM und AWS STS, erstellen Sie einen Trail. Ein Trail ermöglicht CloudTrail die Übermittlung von Protokolldateien an einen Amazon S3 S3-Bucket. Wenn Sie ein Trail in der Konsole anlegen, gilt dieser für alle Regionen. Der Trail protokolliert Ereignisse aus allen Regionen der AWS Partition und übermittelt die Protokolldateien an den von Ihnen angegebenen Amazon S3 S3-Bucket. Darüber hinaus können Sie andere AWS Dienste konfigurieren, um die in den CloudTrail Protokollen gesammelten Ereignisdaten weiter zu analysieren und darauf zu reagieren. Weitere Informationen finden Sie unter:

Alle IAM AWS STS Aktionen werden von der Referenz CloudTrail und der IAMAPIReferenz protokolliert und sind in diesen AWS Security Token Service API dokumentiert.

Protokollierung IAM und AWS STS API Anfragen

CloudTrail protokolliert alle authentifizierten API Anfragen IAM und AWS STS API Vorgänge. CloudTrail protokolliert auch nicht authentifizierte Anfragen zu den AWS STS Aktionen AssumeRoleWithSAML undAssumeRoleWithWebIdentity, und protokolliert die vom Identitätsanbieter bereitgestellten Informationen. Einige nicht authentifizierte AWS STS Anfragen werden jedoch möglicherweise nicht protokolliert, da sie nicht die Mindestanforderung erfüllen, dass sie ausreichend gültig sind, um als legitime Anfrage vertrauenswürdig zu sein. Bei kontoübergreifenden Anfragen zur Rollenübernahme werden abgelehnte AWS STS Anfragen CloudTrail nicht in den Zielkonten protokolliert. CloudTrail

Sie können die protokollierten Informationen verwenden, um Anrufe, die von einem Verbundbenutzer mit einer angenommenen Rolle getätigt wurden, dem ursprünglichen externen Verbundanrufer zuzuordnen. Im Fall von AssumeRole können Sie Anrufe dem ursprünglichen AWS Dienst oder dem Konto des ursprünglichen Benutzers zuordnen. Der userIdentity Abschnitt der JSON Daten im CloudTrail Protokolleintrag enthält die Informationen, die Sie für die Zuordnung der AssumeRole* Anfrage mit einem bestimmten Verbundbenutzer. Weitere Informationen finden Sie unter CloudTrail userIdentityElement im AWS CloudTrail Benutzerhandbuch.

Beispielsweise werden alle Aufrufe von IAMCreateUser, DeleteRoleListGroups, und anderen API Vorgängen protokolliert CloudTrail.

Beispiele für solche Protokolleinträge finden Sie weiter hinten in diesem Thema.

Protokollierung API von Anfragen an andere AWS Dienste

Authentifizierte Anfragen an andere AWS API Dienstvorgänge werden von protokolliert CloudTrail, und diese Protokolleinträge enthalten Informationen darüber, wer die Anfrage generiert hat.

Nehmen wir beispielsweise an, Sie haben eine Anfrage gestellt, um EC2 Amazon-Instances aufzulisten oder eine AWS CodeDeploy Bereitstellungsgruppe zu erstellen. Details über die Person oder Dienstleistung, die die Anforderung gestellt hat, sind im Protokolleintrag dieser Anforderung enthalten. Anhand dieser Informationen können Sie feststellen, ob die Anfrage von dem Root-Benutzer des AWS-Kontos, einem IAM Benutzer, einer Rolle oder einem anderen AWS Service gestellt wurde.

Weitere Informationen zu den Benutzeridentitätsinformationen in CloudTrail Protokolleinträgen finden Sie unter userIdentity Element im AWS CloudTrail Benutzerhandbuch.

Protokollieren von Benutzeranmeldeereignissen

CloudTrail protokolliert Anmeldeereignisse in den AWS Management Console, den AWS Diskussionsforen und AWS Marketplace. CloudTrailprotokolliert erfolgreiche und fehlgeschlagene Anmeldeversuche für IAM Benutzer und Verbundbenutzer.

CloudTrail Beispielereignisse für erfolgreiche und erfolglose Root-Benutzeranmeldungen finden Sie im Benutzerhandbuch unter Beispielereignisdatensätze für Root-Benutzer.AWS CloudTrail

Aus Sicherheitsgründen wird der eingegebene IAM Benutzernamentext AWS nicht protokolliert, wenn der Anmeldefehler auf einen falschen Benutzernamen zurückzuführen ist. Der Benutzername wird durch den Wert HIDDEN_DUE_TO_SECURITY_REASONS maskiert. Ein Beispiel hierzu finden Sie unter Beispiel für eine Anmeldung, die aufgrund eines falschen Benutzernamens fehlgeschlagen ist. an späterer Stelle in diesem Thema. Der Benutzername ist verdeckt, da solche Fehler oftmals von Benutzern begangen werden. Durch die Protokollierung dieser Fehler könnten potenziell sensible Informationen offengelegt werden. Zum Beispiel:

  • Sie haben versehentlich Ihr Passwort in das Feld Benutzername eingegeben.

  • Sie wählen den Link für die Anmeldeseite eines Benutzers aus AWS-Konto, geben dann aber die Kontonummer eines anderen ein. AWS-Konto

  • Ein Benutzer hat vergessen, bei welchem Konto er sich gerade anmeldet, und gibt versehentlich den Kontonamen seines privaten E-Mail-Kontos, seine Bankkontonummer oder eine andere private ID ein.

Protokollieren von Anmeldeereignissen bei temporären Anmeldeinformationen

Wenn ein Prinzipal temporäre Anmeldeinformationen anfordert, bestimmt der Prinzipaltyp, wie das Ereignis von CloudTrail protokolliert wird. Dies kann kompliziert sein, wenn ein Auftraggeber eine Rolle in einem anderen Konto annimmt. Es gibt mehrere API Aufrufe zur Ausführung von Vorgängen im Zusammenhang mit rollenübergreifenden Vorgängen. Zunächst ruft der Principal an an, AWS STS API um die temporären Anmeldeinformationen abzurufen. Dieser Vorgang wird im anrufenden Konto und in dem Konto, in dem der AWS STS Vorgang ausgeführt wird, protokolliert. Anschließend verwendet der Principal die Rolle, um weitere API Aufrufe im Konto der angenommenen Rolle auszuführen.

Sie können den sts:SourceIdentity-Bedingungsschlüssel in der Rollenvertrauensrichtlinie verwenden, damit Benutzer einen Sitzungsnamen angeben müssen, wenn sie eine Rolle übernehmen. Sie können beispielsweise verlangen, dass IAM Benutzer ihren eigenen Benutzernamen als Quellidentität angeben. Auf diese Weise können Sie feststellen, welcher Benutzer eine bestimmte Aktion in AWS ausgeführt hat. Weitere Informationen finden Sie unter sts:SourceIdentity. Sie können auch sts:RoleSessionName verwenden, um von den Benutzern zu verlangen, dass sie einen Sitzungsnamen angeben, wenn sie eine Rolle übernehmen. Auf diese Weise können Sie bei der Überprüfung von AWS CloudTrail Protokollen zwischen Rollensitzungen für eine Rolle unterscheiden, die von verschiedenen Hauptbenutzern verwendet wird.

Die folgende Tabelle zeigt, wie verschiedene Benutzeridentitätsinformationen für jedes Element CloudTrail protokolliert werden AWS STS APIs, das temporäre Anmeldeinformationen generiert.

Auftraggebertyp STS API Benutzeridentität im CloudTrail Protokoll für das Konto des Anrufers Benutzeridentität im CloudTrail Protokoll für das Konto der angenommenen Rolle Benutzeridentität im CloudTrail Protokoll für die nachfolgenden API Aufrufe der Rolle
Root-Benutzer des AWS-Kontos Anmeldeinformationen GetSessionToken Stammbenutzeridentität Die Rolle beinhaltendes Konto ist mit aufrufendem Konto identisch Stammbenutzeridentität
Root-Benutzer des AWS-Kontos Referenzen AssumeRoot Root-Benutzer-Sitzung Kontonummer und Prinzipal-ID (bei Benutzern) Root-Benutzer-Sitzung
IAM-Benutzer GetSessionToken IAM-Benutzeridentität Die Rolle beinhaltendes Konto ist mit aufrufendem Konto identisch IAM-Benutzeridentität
IAM-Benutzer GetFederationToken IAM-Benutzeridentität Die Rolle beinhaltendes Konto ist mit aufrufendem Konto identisch IAM-Benutzeridentität
IAM-Benutzer AssumeRole IAM-Benutzeridentität Kontonummer und Prinzipal-ID (falls es sich um einen Benutzer handelt) oder AWS Dienstprinzipal Nur Rollenidentität (kein Benutzer)
Extern authentifizierter Benutzer AssumeRoleWithSAML SAML-Benutzeridentität Nur Rollenidentität (kein Benutzer)
Extern authentifizierter Benutzer AssumeRoleWithWebIdentity OIDC/Web-Benutzeridentität Nur Rollenidentität (kein Benutzer)

CloudTrail betrachtet eine Aktion als schreibgeschützt, wenn sie keine mutierende Wirkung auf eine Ressource hat. Wenn ein Ereignis protokolliert wird, das nur lesbar ist, werden die Informationen im Protokoll CloudTrail geschwärzt. responseElements Wenn ein Ereignis CloudTrail protokolliert wird, das nicht schreibgeschützt ist, wird die vollständige Information im responseElements Protokolleintrag angezeigt. Für die, und werden jedoch AWS STS APIs AssumeRole AssumeRoleWithSAMLAssumeRoleWithWebIdentity, obwohl sie schreibgeschützt protokolliert wurden, den vollständigen Inhalt responseElements in CloudTrail das Protokoll für diese aufgenommen. APIs

In der folgenden Tabelle wird dargestellt, wie CloudTrail Protokolle responseElements und readOnly Informationen für jedes dieser Elemente temporäre AWS STS APIs Anmeldeinformationen generieren.

STS API Informationen zu Antwortelementen Read-only
AssumeRole Enthalten true
AssumeRoleWithSAML Enthalten true
AssumeRoleWithWebIdentity Enthalten true
AssumeRoot Enthalten false
GetFederationToken Enthalten false
GetSessionToken Enthalten false

IAMAPIBeispielereignisse im CloudTrail Protokoll

CloudTrail Protokolldateien enthalten Ereignisse, die wie folgt JSON formatiert sind. Ein API Ereignis stellt eine einzelne API Anforderung dar und enthält Informationen über den Prinzipal, die angeforderte Aktion, etwaige Parameter sowie Datum und Uhrzeit der Aktion.

Beispiel für IAM API ein Ereignis in einer CloudTrail Protokolldatei

Das folgende Beispiel zeigt einen CloudTrail -Protokolleintrag für eine Anforderung für die IAM-GetUserPolicy-Aktion.

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:Role-Session-Name", "arn": "arn:aws:sts::111122223333:assumed-role/Role-Name/Role-Session-Name", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-09-09T17:50:16Z", "mfaAuthenticated": "false" } } }, "eventTime": "2024-09-09T17:51:44Z", "eventSource": "iam.amazonaws.com", "eventName": "GetUserPolicy", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.16.96 Python/2.7.8 Linux/10 botocore/1.12.86", "requestParameters": { "userName": "ExampleIAMUserName", "policyName": "ExamplePoliccyName" }, "responseElements": null, "requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE", "eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE", "readOnly": true, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "iam.amazonaws.com" } }

Diesen Ereignisinformationen können Sie im Element ReadOnlyAccess-JaneDoe-201407151307 entnehmen, dass hier die Benutzerrichtlinie JaneDoe für den Benutzer requestParameters angefordert wurde. Sie können auch sehen, dass die Anfrage von einem IAM Benutzer mit dem Namen JaneDoe am 15. Juli 2014 um 21:40 Uhr gestellt wurde (UTC). In diesem Fall hat die Anfrage ihren Ursprung in AWS Management Console, wie Sie dem userAgent Element entnehmen können.

AWS STS APIBeispielereignisse im CloudTrail Protokoll

CloudTrail Protokolldateien enthalten Ereignisse, die wie folgt JSON formatiert sind. Ein API Ereignis stellt eine einzelne API Anforderung dar und enthält Informationen über den Prinzipal, die angeforderte Aktion, etwaige Parameter sowie Datum und Uhrzeit der Aktion.

Beispiel für kontoübergreifende AWS STS API Ereignisse in CloudTrail Protokolldateien

Der JohnDoe im Konto 777788889999 genannte IAM Benutzer ruft die AWS STS AssumeRoleAktion auf, um die Rolle im Konto 111122223333 anzunehmen. EC2-dev Der Kontoadministrator verlangt, dass Benutzer eine Quellidentität festlegen, die ihrem Benutzernamen entspricht, wenn sie die Rolle übernehmen. Der Benutzer gibt den Wert der Quellidentität von JohnDoe.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:user/JohnDoe", "accountId": "777788889999", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "JohnDoe" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "expiration": "Jul 18, 2023, 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "resources": [ { "ARN": "arn:aws:iam::111122223333:role/EC2-dev", "accountId": "111122223333", "type": "AWS::IAM::Role" } ], "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

Das zweite Beispiel zeigt den Protokolleintrag des angenommenen Rollenkontos (111122223333) für dieselbe Anfrage. CloudTrail

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "accountId": "777788889999" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "expiration": "Jul 18, 2014, 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE" }

Beispiel für ein AWS STS API Rollenverkettungsereignis in einer Protokolldatei CloudTrail

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anfrage von John Doe im Konto 111111111111. John verwendete zuvor seinen JohnDoe-Benutzer, um die JohnRole1-Rolle zu übernehmen. Für diese Anforderung verwendet er die Anmeldeinformationen dieser Rolle, um die JohnRole2-Rolle zu übernehmen. Dies wird als Rollenverkettung bezeichnet. Die Quellidentität, die er bei der Übernahme der JohnDoe1-Rolle festgelegt hat, bleibt bei der Anforderung, JohnRole2 zu übernehmen, bestehen. Wenn John versucht, bei der Übernahme der Rolle eine andere Quellidentität festzulegen, wird die Anforderung abgelehnt. John übergibt zwei Sitzungs-Tags in die Anforderung. Er setzt diese beiden Tags als transitiv fest. Die Anforderung übernimmt das Department-Tag als transitiv, weil John es als transitiv festgelegt hat, als JohnRole1 übernommen hat. Weitere Informationen zu Quellidentität finden Sie unter Überwachen und Steuern von Aktionen mit übernommenen Rollen. Weitere Hinweise zu transitiven Schlüsseln in Rollenketten finden Sie unter Verkettung von Rollen mit Sitzungs-Tags.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIN5ATK5U7KEXAMPLE:JohnRole1", "arn": "arn:aws:sts::111111111111:assumed-role/JohnDoe/JohnRole1", "accountId": "111111111111", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-10-02T21:50:54Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIN5ATK5U7KEXAMPLE", "arn": "arn:aws:iam::111111111111:role/JohnRole1", "accountId": "111111111111", "userName": "JohnDoe" }, "sourceIdentity": "JohnDoe" } }, "eventTime": "2019-10-02T22:12:29Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "123.145.67.89", "userAgent": "aws-cli/1.16.248 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.239", "requestParameters": { "incomingTransitiveTags": { "Department": "Engineering" }, "tags": [ { "value": "johndoe@example.com", "key": "Email" }, { "value": "12345", "key": "CostCenter" } ], "roleArn": "arn:aws:iam::111111111111:role/JohnRole2", "roleSessionName": "Role2WithTags", "sourceIdentity": "JohnDoe", "transitiveTagKeys": [ "Email", "CostCenter" ], "durationSeconds": 3600 }, "responseElements": { "credentials": { "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "expiration": "Oct 2, 2019, 11:12:29 PM", "sessionToken": "AgoJb3JpZ2luX2VjEB4aCXVzLXdlc3QtMSJHMEXAMPLETOKEN+//rJb8Lo30mFc5MlhFCEbubZvEj0wHB/mDMwIgSEe9gk/Zjr09tZV7F1HDTMhmEXAMPLETOKEN/iEJ/rkqngII9///////////ARABGgw0MjgzMDc4NjM5NjYiDLZjZFKwP4qxQG5sFCryASO4UPz5qE97wPPH1eLMvs7CgSDBSWfonmRTCfokm2FN1+hWUdQQH6adjbbrVLFL8c3jSsBhQ383AvxpwK5YRuDE1AI/+C+WKFZb701eiv9J5La2EXAMPLETOKEN/c7S5Iro1WUJ0q3Cxuo/8HUoSxVhQHM7zF7mWWLhXLEQ52ivL+F6q5dpXu4aTFedpMfnJa8JtkWwG9x1Axj0Ypy2ok8v5unpQGWych1vwdvj6ez1Dm8Xg1+qIzXILiEXAMPLETOKEN/vQGqu8H+nxp3kabcrtOvTFTvxX6vsc8OGwUfHhzAfYGEXAMPLETOKEN/L6v1yMM3B1OwFOrQBno1HEjf1oNI8RnQiMNFdUOtwYj7HUZIOCZmjfN8PPHq77N7GJl9lzvIZKQA0Owcjg+mc78zHCj8y0siY8C96paEXAMPLETOKEN/E3cpksxWdgs91HRzJWScjN2+r2LTGjYhyPqcmFzzo2mCE7mBNEXAMPLETOKEN/oJy+2o83YNW5tOiDmczgDzJZ4UKR84yGYOMfSnF4XcEJrDgAJ3OJFwmTcTQICAlSwLEXAMPLETOKEN" }, "assumedRoleUser": { "assumedRoleId": "AROAIFR7WHDTSOYQYHFUE:Role2WithTags", "arn": "arn:aws:sts::111111111111:assumed-role/test-role/Role2WithTags" }, "sourceIdentity": "JohnDoe" }, "requestID": "b96b0e4e-e561-11e9-8b3f-7b396EXAMPLE", "eventID": "1917948f-3042-46ec-98e2-62865EXAMPLE", "resources": [ { "ARN": "arn:aws:iam::111111111111:role/JohnRole2", "accountId": "111111111111", "type": "AWS::IAM::Role" } ], "eventType": "AwsApiCall", "recipientAccountId": "111111111111" }

Beispiel für ein Dienstereignis AWS in einer Protokolldatei AWS STS API CloudTrail

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anfrage, die von einem AWS Dienst gestellt wurde, der einen anderen Dienst API mit den Berechtigungen einer Servicerolle aufruft. Es zeigt den CloudTrail Protokolleintrag für die Anfrage, die im Konto 777788889999 gestellt wurde.

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AROAQRSTUVWXYZEXAMPLE:devdsk", "arn": "arn:aws:sts::777788889999:assumed-role/AssumeNothing/devdsk", "accountId": "777788889999", "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2016-11-14T17:25:26Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:role/AssumeNothing", "accountId": "777788889999", "userName": "AssumeNothing" } } }, "eventTime": "2016-11-14T17:25:45Z", "eventSource": "s3.amazonaws.com", "eventName": "DeleteBucket", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.1", "userAgent": "[aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67]", "requestParameters": { "bucketName": "amzn-s3-demo-bucket" }, "responseElements": null, "requestID": "EXAMPLE463D56D4C", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "777788889999" }

Beispiel für ein Ereignis in der Protokolldatei SAML AWS STS API CloudTrail

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anforderung, die für die AWS STS AssumeRoleWithSAMLAktion gestellt wurde. Die Anfrage enthält die SAML Attribute CostCenter und Project die als Sitzungs-Tags durch die SAML Assertion übergeben werden. Diese Tags werden als transitiv festgelegt, so dass sie in Rollenverkettungsszenarien bestehen bleiben. Die Anfrage enthält den optionalen API ParameterDurationSeconds, der wie durationSeconds im CloudTrail Protokoll dargestellt wird, und ist auf 1800 Sekunden festgelegt. Die Anfrage enthält auch das SAML AttributsourceIdentity, das in der SAML Assertion übergeben wird. Wenn jemand die resultierenden Anmeldeinformationen für die Rollensitzung verwendet, um eine andere Rolle zu übernehmen, bleibt diese Quellidentität bestehen.

{ "eventVersion": "1.08", "userIdentity": { "type": "SAMLUser", "principalId": "SampleUkh1i4+ExamplexL/jEvs=:SamlExample", "userName": "SamlExample", "identityProvider": "bdGOnTesti4+ExamplexL/jEvs=" }, "eventTime": "2023-08-28T18:30:58Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithSAML", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "aws-internal/3 aws-sdk-java/1.12.479 Linux/5.10.186-157.751.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/17.0.7+11 java/17.0.7 kotlin/1.3.72 vendor/Amazon.com_Inc. cfg/retry-mode/standard", "requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyAssignedRoleSessionName", "sourceIdentity": "MySAMLUser", "principalTags": { "CostCenter": "987654", "Project": "Unicorn", "Department": "Engineering" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "roleArn": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::444455556666:saml-provider/Shibboleth", "durationSeconds": 1800 }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "<encoded session token blob>", "expiration": "Aug 28, 2023, 7:00:58 PM" }, "assumedRoleUser": { "assumedRoleId": "AROAD35QRSTUVWEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/SAMLTestRoleShibboleth/MyAssignedRoleSessionName" }, "packedPolicySize": 1, "subject": "SamlExample", "subjectType": "transient", "issuer": "https://server.example.com/idp/shibboleth", "audience": "https://signin.aws.amazon.com/saml", "nameQualifier": "bdGOnTesti4+ExamplexL/jEvs=", "sourceIdentity": "MySAMLUser" }, "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "readOnly": true, "resources": [ { "accountId": "444455556666", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth" }, { "accountId": "444455556666", "type": "AWS::IAM::SAMLProvider", "ARN": "arn:aws:iam::444455556666:saml-provider/test-saml-provider" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "444455556666", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.2", "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256", "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com" } }

Beispiel für ein OIDC AWS STS API Ereignis in der CloudTrail Protokolldatei

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anforderung, die für die AWS STS AssumeRoleWithWebIdentityAktion gestellt wurde. Die Anfrage enthält die Attribute CostCenter und Project die als Sitzungs-Tags über das OpenID Connect (OIDC) Identity Provider (IdP) -Token übergeben werden. Diese Tags werden als transitiv festgelegt, so dass sie in Rollenverkettungsszenarien bestehen bleiben. Die Anforderung enthält das sourceIdentity-Attribut aus dem Token des Identitätsanbieters. Wenn jemand die resultierenden Anmeldeinformationen für die Rollensitzung verwendet, um eine andere Rolle zu übernehmen, bleibt diese Quellidentität bestehen.

Der CloudTrail Protokolleintrag enthält auch ein additionalEventData Feld mit einem identityProviderConnectionVerificationMethod Attribut. Dieses Attribut gibt die AWS Methode an, mit der die Verbindung mit dem OIDC Anbieter überprüft wurde. Der Attributwert ist entweder IAMTrustStore oder Thumbprint. Der IAMTrustStore Wert gibt an, dass die Verbindung mit dem OIDC IdP mithilfe unserer Bibliothek vertrauenswürdiger Stammzertifizierungsstellen (CAs) AWS erfolgreich verifiziert wurde. Der Thumbprint Wert gibt an, dass ein in der IdP-Konfiguration festgelegter Fingerabdruck des Zertifikats AWS verwendet wurde, um das IdP-Serverzertifikat zu verifizieren. OIDC

{ "eventVersion": "1.08", "userIdentity": { "type": "WebIdentityUser", "principalId": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>:<id of application>:<id of user>", "userName": "<id of user>", "identityProvider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>" }, "eventTime": "2024-07-09T15:41:37Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithWebIdentity", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/2.13.29 Python/3.11.6 Windows/10 exe/AMD64 prompt/off command/sts.assume-role-with-web-identity", "requestParameters": { "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "roleSessionName": "<assigned role session name>", "sourceIdentity": "MyWebIdentityUser", "durationSeconds": 3600, "principalTags": { "CostCenter": "24680", "Project": "Pegasus" }, "transitiveTagKeys": [ "CostCenter", "Project" ] }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "<encoded session token blob>", "expiration": "Jul 9, 2024, 4:41:37 PM" }, "subjectFromWebIdentityToken": "<id of user>", "sourceIdentity": "MyWebIdentityUser", "assumedRoleUser": { "assumedRoleId": "AROA123456789EXAMPLE:<assigned role session name>", "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/<assigned role session name>" }, "provider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>", "audience": "<id of application>" }, "additionalEventData": { "identityProviderConnectionVerificationMethod": "IAMTrustStore" }, "requestID": "aEXAMPLE-0b26-40df-8973-c7012EXAMPLE", "eventID": "aEXAMPLE-ee29-4ac0-a0ed-3f5c5EXAMPLE", "readOnly": true, "resources": [ { "accountId": "444455556666", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "444455556666", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com" } }

Beispiel für Anmeldeereignisse im CloudTrail-Protokoll

CloudTrail Protokolldateien enthalten Ereignisse, die mit formatiert sind. JSON Ein Anmeldeereignis stellt eine einzelne Anmeldeanforderung dar und enthält Informationen über den Anmelde-Auftraggeber, die Region sowie das Datum und die Uhrzeit der Aktion.

Beispiel eines erfolgreichen Anmeldeereignisses in einer CloudTrail -Protokolldatei

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für ein erfolgreiches Anmeldeereignis.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JohnDoe", "accountId": "111122223333", "userName": "JohnDoe" }, "eventTime": "2014-07-16T15:49:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.110", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/s3/", "MFAUsed": "No" }, "eventID": "3fcfb182-98f8-4744-bd45-10a395ab61cb" }

Weitere Informationen zu den in CloudTrail Protokolldateien enthaltenen Informationen finden Sie unter CloudTrail Event Reference im AWS CloudTrail Benutzerhandbuch.

Beispiel für eine Anmeldefehlerereignis in einer CloudTrail -Protokolldatei

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für ein fehlgeschlagenes Anmeldeereignis.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JaneDoe", "accountId": "111122223333", "userName": "JaneDoe" }, "eventTime": "2014-07-08T17:35:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.100", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "Failed authentication", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/sns", "MFAUsed": "No" }, "eventID": "11ea990b-4678-4bcd-8fbe-62509088b7cf" }

Anhand dieser Informationen können Sie feststellen, dass der Anmeldeversuch von einer IAM-Benutzerin namens JaneDoe unternommen wurde, wie auch im userIdentity-Element zu sehen ist. Außerdem können Sie dem Element responseElements entnehmen, dass die Anmeldung fehlgeschlagen ist. Sie können sehen, dass am 8. Juli 2014 um 17:35 Uhr (UTC) JaneDoe versucht wurde, sich bei der SNS Amazon-Konsole anzumelden.

Beispiel für eine Anmeldung, die aufgrund eines falschen Benutzernamens fehlgeschlagen ist.

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für ein fehlgeschlagenes Anmeldeereignis, das dadurch verursacht wurde, dass der Benutzer einen falschen Benutzernamen eingegeben hat. AWS maskiert den userName Text mitHIDDEN_DUE_TO_SECURITY_REASONS, um zu verhindern, dass potenziell vertrauliche Informationen preisgegeben werden.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "accountId": "123456789012", "accessKeyId": "", "userName": "HIDDEN_DUE_TO_SECURITY_REASONS" }, "eventTime": "2015-03-31T22:20:42Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "No username found in supplied account", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "LoginTo": "https://console.aws.amazon.com/console/home?state=hashArgs%23&isauthcode=true", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "a7654656-0417-45c6-9386-ea8231385051", "eventType": "AwsConsoleSignin", "recipientAccountId": "123456789012" }

IAMRolle, Vertrauen, Politik, Verhalten

Am 21. September 2022 AWS wurden Änderungen am Verhalten in Bezug auf IAM Rollenvertrauensrichtlinien vorgenommen, sodass in einer Vertrauensrichtlinie für Rollen ausdrückliche Genehmigungen erforderlich sind, wenn sich eine Rolle von selbst annimmt. IAMRollen in der Legacy-Zulassungsliste haben ein additionalEventData Feld explicitTrustGrant für AssumeRole Ereignisse. Der Wert von explicitTrustGrant ist falsch, wenn eine Rolle auf der Legacy-Zulassungsliste das Legacy-Verhalten verwendet. Wenn eine Rolle auf der Legacy-Zulassungsliste sich selbst annimmt, das Verhalten der Rollenvertrauensrichtlinie jedoch aktualisiert wurde, um der Rolle ausdrücklich zu erlauben, sich selbst anzunehmen, ist der Wert von explicitTrustGrant wahr.

Nur eine sehr kleine Anzahl von IAM Rollen steht auf der Zulassungsliste für das veraltete Verhalten, und dieses Feld ist in den CloudTrail Protokollen für diese Rollen nur vorhanden, wenn sie sich selbst übernehmen. In den meisten Fällen ist es nicht notwendig, dass eine IAM Rolle sich selbst übernimmt. AWS empfiehlt, Ihre Prozesse, Ihren Code oder Ihre Konfigurationen zu aktualisieren, um dieses Verhalten zu beseitigen, oder Ihre Richtlinien für die Vertrauensstellung von Rollen zu aktualisieren, um dieses Verhalten ausdrücklich zuzulassen. Weitere Informationen finden Sie unter Ankündigung einer Aktualisierung des Verhaltens der Richtlinien zur IAM Rollenvertrauensstellung.