Protokollierung von IAM- und AWS STS API-Aufrufen 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 von IAM- und AWS STS API-Aufrufen mit AWS CloudTrail

IAM und AWS STS sind in einen Dienst integriert AWS CloudTrail, der eine Aufzeichnung der von einem IAM-Benutzer oder einer IAM-Rolle ausgeführten Aktionen bereitstellt. CloudTrail erfasst alle API-Aufrufe für IAM und AWS STS als Ereignisse, einschließlich Aufrufe von der Konsole und von API-Aufrufen. Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Übermittlung von CloudTrail Ereignissen an einen Amazon S3 S3-Bucket aktivieren. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse trotzdem in der CloudTrail Konsole im Ereignisverlauf einsehen. Sie können CloudTrail damit Informationen zu der Anfrage abrufen, die an IAM gestellt wurde oder 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.

IAM und AWS STS Informationen in CloudTrail

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

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS-Konto, einschließlich Ereignissen für IAM 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 hier:

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

Protokollierung von IAM- und API-Anfragen AWS STS

CloudTrail protokolliert alle authentifizierten API-Anfragen für IAM- und AWS STS API-Operationen. 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.

Sie können die protokollierten Informationen verwenden, um Anrufe, die von einem Verbundbenutzer mit einer angenommenen Rolle getätigt wurden, dem ursprünglichen externen Verbundaufrufer 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 benötigen, um die AssumeRole* Anfrage einem bestimmten Verbundbenutzer zuzuordnen. Weitere Informationen finden Sie unter CloudTrail UserIdentity Element 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.

Protokollieren von API-Anforderungen an andere AWS -Services

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

Angenommen, Sie haben eine Anforderung gestellt, um Amazon Amazon EC2-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 Dienst 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 Text des IAM-Benutzernamens 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 für einen 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 Principal temporäre Anmeldeinformationen anfordert, bestimmt der Prinzipaltyp, wie das Ereignis CloudTrail protokolliert wird. Dies kann kompliziert sein, wenn ein Auftraggeber eine Rolle in einem anderen Konto annimmt. Es gibt mehrere API-Aufrufe, durch die Operationen im Zusammenhang mit kontoübergreifenden Rollenoperationen durchgeführt werden. Zunächst ruft der Principal eine AWS STS API auf, um die temporären Anmeldeinformationen abzurufen. Dieser Vorgang wird im aufrufenden Konto und in dem Konto, in dem der AWS STS Vorgang ausgeführt wird, protokolliert. Anschließend verwendet der Auftraggeber die Rolle, um andere API-Aufrufe im Konto der übernommenen 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 Sitzungsnamen 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 der AWS CloudTrail Protokolle zwischen Rollensitzungen für eine Rolle unterscheiden, die von verschiedenen Hauptbenutzern verwendet wird.

Die folgende Tabelle zeigt, wie verschiedene Benutzeridentitätsinformationen für jede der AWS STS APIs CloudTrail protokolliert werden, die temporäre Anmeldeinformationen generieren.

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
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. Beim Protokollieren eines schreibgeschützten Ereignisses 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. Bei den AWS STS APIs CloudTrail wird jedoch AssumeRole AssumeRoleWithSAMLAssumeRoleWithWebIdentity, obwohl sie schreibgeschützt protokolliert wurden, die vollständige Information responseElements in das Protokoll für diese APIs aufgenommen.

Die folgende Tabelle zeigt, wie CloudTrail Protokolle responseElements und readOnly Informationen für jede der AWS STS APIs temporäre Anmeldeinformationen generieren.

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

Beispiel für IAM-API-Ereignisse im Protokoll CloudTrail

CloudTrail Protokolldateien enthalten Ereignisse, die mit JSON formatiert wurden. Ein API-Ereignis stellt eine einzelne API-Anforderung dar und enthält Informationen zum Auftraggeber, der angeforderten Aktion, etwaigen Parametern und dem Datum und der Uhrzeit der Aktion.

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

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anfrage für die IAM-AktionGetUserPolicy.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/JaneDoe", "accountId": "444455556666", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "JaneDoe", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-07-15T21:39:40Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-07-15T21:40:14Z", "eventSource": "iam.amazonaws.com", "eventName": "GetUserPolicy", "awsRegion": "us-east-2", "sourceIPAddress": "signin.amazonaws.com", "userAgent": "signin.amazonaws.com", "requestParameters": { "userName": "JaneDoe", "policyName": "ReadOnlyAccess-JaneDoe-201407151307" }, "responseElements": null, "requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE", "eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE" }

Diesen Ereignisinformationen können Sie im Element ReadOnlyAccess-JaneDoe-201407151307 entnehmen, dass hier die Benutzerrichtlinie JaneDoe für den Benutzer requestParameters angefordert wurde. Außerdem können Sie sehen, dass die Anforderung von dem IAM-Benutzer JaneDoe am 15. Juli 2014 um 21:40 Uhr (UTC) gemacht wurde. In diesem Fall stammt die Anfrage von AWS Management Console, wie Sie dem userAgent Element entnehmen können.

Beispiel für AWS STS API-Ereignisse im CloudTrail Protokoll

CloudTrail Protokolldateien enthalten Ereignisse, die mit JSON formatiert sind. Ein API-Ereignis stellt eine einzelne API-Anforderung dar und enthält Informationen zum Auftraggeber, der angeforderten Aktion, etwaigen Parametern und dem Datum und der Uhrzeit der Aktion.

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

Der JohnDoe im Konto 777788889999 genannte IAM-Benutzer ruft die AWS STS AssumeRole Aktion 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 API-Ereignis zur AWS STS Rollenverkettung 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 AWSAWS STS Service-API-Ereignis in einer Protokolldatei CloudTrail

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anfrage, die von einem AWS Dienst gestellt wurde, der mithilfe von Berechtigungen einer Servicerolle eine andere Service-API 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": "my-test-bucket-cross-account" }, "responseElements": null, "requestID": "EXAMPLE463D56D4C", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "777788889999" }

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

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anforderung, die für die AWS STS AssumeRoleWithSAML Aktion gestellt wurde. Die Anforderung enthält die SAML-Attribute CostCenter und Project, die durch die SAML-Assertion als Sitzungs-Tags ü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 Anforderung enthält außerdem das SAML-Attribut sourceIdentity, 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 AWS STS OIDC-API-Ereignis in der Protokolldatei CloudTrail

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag für eine Anforderung, die für die AWS STS AssumeRoleWithWebIdentity Aktion gestellt wurde. Die Anforderung enthält die Attribute CostCenter und Project, die durch das Identitätsanbietertoken als Sitzungs-Tags ü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.

{ "eventVersion": "1.05", "userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:<id-of-application>.apps.googleusercontent.com:<id-of-user>", "userName": "<id of user>", "identityProvider": "accounts.google.com" }, "eventTime": "2016-03-23T01:39:51Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithWebIdentity", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.3.23 Python/2.7.6 Linux/2.6.18-164.el5", "requestParameters": { "sourceIdentity": "MyWebIdentityUser", "durationSeconds": 3600, "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "roleSessionName": "MyAssignedRoleSessionName" "principalTags": { "CostCenter": "24680", "Project": "Pegasus" }, "transitiveTagKeys": [ "CostCenter", "Project" ], }, "responseElements": { "provider": "accounts.google.com", "subjectFromWebIdentityToken": "<id of user>", "sourceIdentity": "MyWebIdentityUser", "audience": "<id of application>.apps.googleusercontent.com", "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "expiration": "Mar 23, 2016, 2:39:51 AM", "sessionToken": "<encoded session token blob>" }, "assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/MyAssignedRoleSessionName" } }, "resources": [ { "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "accountId": "444455556666", "type": "AWS::IAM::Role" } ], "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "bEXAMPLE-0b30-4246-b28c-e3da3EXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "444455556666" }

Beispiel für Anmeldeereignisse im CloudTrail-Protokoll

CloudTrail Protokolldateien enthalten Ereignisse, die mit JSON formatiert sind. 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 für ein erfolgreiches Anmeldeereignis in der Protokolldatei CloudTrail

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 ein fehlgeschlagenes Anmeldeereignis in der 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. Den Informationen zufolge hat JaneDoe am 8. Juli 2014 um 17:35 Uhr (UTC) versucht, sich bei der Amazon SNS-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" }

IAM-Rolle, Vertrauensrichtlinie, Verhalten

Am 21. September 2022 AWS wurden Änderungen am Verhalten der Vertrauensrichtlinie für Rollen vorgenommen, sodass in einer Richtlinie zur Vertrauensstellung für Rollen ausdrückliche Genehmigungen erforderlich sind, wenn sich eine Rolle von selbst annimmt. IAM-Rollen in der Legacy-Zulassungsliste für Verhaltensmuster verfügen über ein additionalEventData Feld explicitTrustGrant für AssumeRole Ereignisse. Der Wert von explicitTrustGrant ist false, wenn eine Rolle auf der Legacy-Zulassungsliste davon ausgeht, dass sie das alte Verhalten verwendet. Wenn eine Rolle auf der Legacy-Zulassungsliste sich selbst annimmt, das Verhalten der Rollenvertrauensrichtlinie jedoch so aktualisiert wurde, dass die Rolle explizit sich selbst übernehmen kann, explicitTrustGrant ist der Wert von true.

Nur eine sehr geringe 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 erforderlich, dass sich eine IAM-Rolle von 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 IAM-Richtlinien zur Vertrauensstellung in Rollen.