Direkt zum Inhalt

Wie kann ich Daten erhalten, die mir bei der Behebung von IAM-Fehlern der Zugriffsverweigerung oder des unautorisierten Zugriffs helfen?

Lesedauer: 5 Minute
0

Ich erhalte die Fehlermeldung „access denied“ oder „unauthorized“, wenn ich auf eine AWS-Ressource zugreife. Ich benötige Daten zur Behebung dieser Fehler bei API-Aufrufen von AWS Identity and Access Management (IAM).

Kurzbeschreibung

Verwende Amazon-Athena-Abfragen oder die AWS Command Line Interface (AWS CLI), um Fehlerprotokolle für fehlgeschlagene IAM-API-Aufrufe abzurufen. Befolge dann die Anweisungen zur Behebung von Fehlern bei verweigertem Zugriff oder nicht autorisierten Operationen mithilfe einer IAM-Richtlinie.

Lösung

Hinweis: Wenn du beim Ausführen von AWS-CLI-Befehlen Fehlermeldungen erhältst, stelle sicher, dass du die neueste Version der AWS CLI verwendest.

Verwendung von Athena-Abfragen, um Fehler bei IAM-API-Aufrufen zu beheben, indem du CloudTrail-Protokolle durchsuchst

Hinweis: Bevor du beginnst, musst du einen Trail für die Anmeldung in einem Amazon Simple Storage Service (Amazon S3)-Bucket erstellt haben. Dies liegt daran, dass Athena Ereignisse verwendet, die in AWS-CloudTrail-Protokolldateien aufgezeichnet wurden und für diesen Trail an einen Amazon-S3-Bucket übermittelt werden.

1.    Befolge die Schritte im Abschnitt Athena-Tabelle erstellen unter Wie erstelle ich automatisch Tabellen in Athena, um AWS-CloudTrail-Protokolle zu durchsuchen?

Hinweis: Athena-Tabellen, die automatisch erstellt werden, befinden sich in derselben AWS-Region wie dein Amazon-S3-Bucket.

2.    Öffne die Athena-Konsole und wähle dann das Pluszeichen**„+“**, um eine neue Abfrage zu erstellen.

3.    Gib die folgende Beispielabfrage ein und wähle dann Ausführen.

In dieser Beispielabfrage verwendet das Zeitformat das ISO-8601-Basisformat mit der Z-Variablen für UTC.

Hinweis: Ersetze your-arndurch dieIAM-Amazon-Ressourcennamen (ARN) für deine Ressourcen und your-table durch den Namen deiner Tabelle.

SELECT from_iso8601_timestamp(eventTime) AS "Time", useridentity.arn AS "Identity ARN", eventID AS "Event ID",
         eventsource AS "Service", eventname AS "Action", errorCode AS "Error", errorMessage AS "Message"
FROM your-table
WHERE from_iso8601_timestamp(eventtime) >= from_iso8601_timestamp('2019-10-29T06:40:00Z')
        AND from_iso8601_timestamp(eventtime) < from_iso8601_timestamp('2019-10-29T06:55:00Z')
        AND userIdentity.arn = 'your-arn'
        AND eventType = 'AwsApiCall'
        AND errorCode is not null
        AND (lower(errorCode) LIKE '%accessdenied%' OR lower(errorCode) LIKE '%unauthorized%')
ORDER BY eventTime desc

4.    In dieser Beispieltabelle werden Berechtigungsfehler für den Identitäts-ARN aufgeführt:

| Time                        | Event ID                             | Service                  | Action       | Error        | Message                                                                                                              |
|-----------------------------|--------------------------------------|--------------------------|--------------|--------------|----------------------------------------------------------------------------------------------------------------------|
| 2019-10-29 06:52:45.000 UTC | 0406f0c1-47a8-4f71-8a94-18267b84042a | cloudtrail.amazonaws.com | LookupEvents | AccessDenied | User: arn:aws:iam::account:user/username is not authorized to perform: cloudtrail:LookupEvents with an explicit deny in an identity-based policy |
| 2019-10-29 06:41:48.000 UTC | 14e5e77c-f682-45e1-8c88-12d15af293dd | cloudtrail.amazonaws.com | LookupEvents | AccessDenied | User: arn:aws:iam::account:user/username is not authorized to perform: cloudtrail:LookupEvents because no identity-based policy allows the cloudtrail:LookupEvents action |

Hinweis: Bei der Ausgabe von CloudTrail-Ereignissen kann es bis zu 15 Minuten dauern, bis Ergebnisse geliefert werden.

5.    Du kannst optional Fehler für alle Benutzer abrufen, indem du diese Zeile aus der Beispielabfrage entfernst:

AND userIdentity.arn = 'your-arn'

6.    Du kannst optional alle Fehler aus einem ausgewählten Zeitraum abrufen, indem du diese Zeile aus der Beispielabfrage entfernst:

AND (lower(errorCode) LIKE '%accessdenied%' OR lower(errorCode) LIKE '%unauthorized%')

Verwendung der AWS CLI, um Fehler bei API-Aufrufen von IAM-Berechtigungen zu beheben

Hinweis: Für dieses AWS-CLI-Skript ist der JSON-Befehlszeilenprozessor jq erforderlich. Das Tutorial und Anweisungen zum Herunterladen findest du unterJSON-Ausgabeformat. Führe bei Distributionen, die das yum-Paket verwenden, den folgenden Befehl aus:

$ sudo yum install jq

1.    Führe den folgenden AWS-CLI-Befehl aus:

Hinweis: Ersetze your-arn durch die IAM-ARNs für deine Ressourcen.

( echo "Time,Identity ARN,Event ID,Service,Action,Error,Message";
  aws cloudtrail lookup-events --start-time "2019-10-29T06:40:00Z" --end-time "2019-10-29T06:55:00Z" --query "Events[*].CloudTrailEvent" --output text \
    | jq -r ". | select(.userIdentity.arn == \"your-arn\" and .eventType == \"AwsApiCall\" and .errorCode != null
    and (.errorCode | ascii_downcase | (contains(\"accessdenied\") or contains(\"unauthorized\"))))
    | [.eventTime, .userIdentity.arn, .eventID, .eventSource, .eventName, .errorCode, .errorMessage] | @csv"
) | column -t -s'",'

Hinweis: Die Anzahl der Suchanfragen an CloudTrail ist auf zwei Anfragen pro Sekunde, pro Konto und pro Region begrenzt. Wenn dieser Grenzwert überschritten wird, tritt ein Drosselungsfehler auf.

2.    In dieser Beispieltabelle werden Berechtigungsfehler für den Identitäts-ARN aus dem angegebenen Zeitraum aufgelistet.

Hinweis: Du kannst nach Ereignissen suchen, die in den letzten 90 Tagen in einer Region aufgetreten sind.

Time                  Event ID                              Service                   Action        Error         Message
2019-10-29T06:52:45Z  0406f0c1-47a8-4f71-8a94-18267b84042a  cloudtrail.amazonaws.com  LookupEvents  AccessDenied  User: arn:aws:iam::account:user/username is not authorized to perform: cloudtrail:LookupEvents with an explicit deny in an identity-based policy
2019-10-29T06:41:48Z  14e5e77c-f682-45e1-8c88-12d15af293dd  cloudtrail.amazonaws.com  LookupEvents  AccessDenied  User: arn:aws:iam::account:user/username is not authorized to perform: cloudtrail:LookupEvents because no identity-based policy allows the cloudtrail:LookupEvents action

3.    (Optional) Rufe Fehler für alle Benutzer ab, indem du diese Zeile entfernst:

.userIdentity.arn == \"your-arn\" and

4.    (Optional) Rufe alle Fehler aus dem ausgewählten Zeitraum ab, indem du diese Zeile entfernst:

and (.errorCode | ascii_downcase | (contains(\"accessdenied\") or contains(\"unauthorized\")))

Behebung Fehler nicht autirisierten Zugriffs

Athena und die vorherigen AWS-CLI-Beispielausgaben sind für LookupEvents-API-Aufrufe von CloudTrail relevant.

IAM-Richtlinien, die den Zugriff verweigern, weil sie eine Verweigerungsanweisung enthalten, enthalten in der Fehlermeldung eine bestimmte Formulierung für explizite und implizite Verweigerung. Fehler der expliziten Verweigerung in IAM enthalten den Ausdruck „with an explicit deny in a <type> policy“. Fehler der impliziten Verweigerung in IAM enthalten den Satz „because no <type> policy allows the <action> action“.

Die Ausgabe cloudtrail:LookupEvents mit einer expliziten Verweigerungs-Ausgabe weist darauf hin, dass eine zugehörige IAM-Richtlinie falsch ist.

Eine explizite Zugriffsverweigerung kann bei jedem dieser Richtlinientypen erfolgen. Zum Beispiel bei identitätsbasierten Richtlinien, ressourcenbasierten Richtlinien, Berechtigungsgrenzen, SCPs von Organisationen und Sitzungsrichtlinien. Anweisungen der expliziten Verweigerung haben immer Vorrang vor Zulassungsanweisungen. Die explizite Verweigerung ist in der identitätsbasierten Richtlinie für IAM-Benutzer enthalten.

Die Ausgabe cloudtrail:LookupEvents because no identity-based policy allows zeigt an, dass die identitätsbasierte Richtlinie diese API-Aktion nicht zulässt, was zu einer impliziten Verweigerung führt. In der identitätsbasierten Richtlinie fehlt eine explizite Zulassungsanweisung für die API-Aktion cloudtrail:LookupEvents.

Folgende Richtlinientypen wurden von AWS ausgewertet, um den Zugriff sicherzustellen:

Weitere Informationen darüber, wie IAM-Richtlinien bewertet und verwaltet werden, findest du unter Logik der Richtlinienbewertung und Verwaltung von IAM-Richtlinien.

Ähnliche Informationen

Richtlinien und Berechtigungen in IAM

Probleme mit IAM-Richtlinien beheben