Wie kann ich Daten erhalten, die bei der Behebung von Fehlern mit verweigertem oder nicht autorisiertem IAM-Zugriff helfen?

Lesedauer: 5 Minute
0

Ich versuche, auf eine AWS-Ressource zuzugreifen und erhalte die Fehlermeldung „access denied (Zugriff verweigert)“ oder „unauthorized (nicht autorisiert)“. Wie kann ich Daten erhalten, die mir bei der Behebung dieser Fehler bei API-Aufrufen von AWS Identity and Access Management (IAM) helfen?

Kurzbeschreibung

Sie können Amazon Athena-Abfragen oder die AWS-Befehlszeilenschnittstelle (AWS CLI) verwenden, um Fehlerprotokolle für fehlgeschlagene IAM-API-Aufrufe zu erhalten. Folgen Sie dann den Anweisungen zurBehebung von Fehlern bei verweigertem Zugriff oder nicht autorisiertem Betrieb mithilfe einer IAM-Richtlinie.

Behebung

**Hinweis:**Wenn beim Ausführen von AWS-CLI-Befehlen Fehler auftreten,stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

Variante 1: Verwenden Sie Athena-Abfragen, um Fehler bei IAM-API-Aufrufen zu beheben, indem Sie CloudTrail-Protokolle durchsuchen

**Hinweis:**Bevor Sie beginnen, müssen Sie einenPfad für die Anmeldungin 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 Pfad an einen Amazon-S3-Bucket übermittelt werden.

1.Folgen Sie den Schritten im AbschnittAthena-Tabelle erstellenunterWie 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 Ihr Amazon-S3-Bucket.

2.Öffnen Sie dieAthena-Konsoleund wählen Sie dann das Pluszeichen**„+“,**um eine neue Abfrage zu erstellen.

3.Geben Sie die folgende Beispielabfrage ein und wählen Sie dannAusführen.

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

Hinweis:Ersetzen Sieyour-arndurch dieIAM-Amazon-Ressourcennamen (ARN)für Ihre Ressourcen undyour-tabledurch den Namen Ihrer 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 die Identität 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.Sie können optional Fehler für alle Benutzer abrufen, indem Sie diese Zeile aus der Beispielabfrage entfernen:

AND userIdentity.arn = 'your-arn'

6.Sie können optional alle Fehler aus einem ausgewählten Zeitraum abrufen, indem Sie diese Zeile aus der Beispielabfrage entfernen:

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

Variante 2: Verwenden Sie die 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 finden Sie unterJSON-Ausgabeformat. Führen Sie für Distributionen, die das Paket yum verwenden, den folgenden Befehl aus:

$ sudo yum install jq

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

Hinweis:Ersetzen Sieyour-arndurch dieIAM-ARNsfür Ihre 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:**Sie können 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) Rufen Sie Fehler für alle Benutzer ab, indem Sie diese Zeile entfernen:

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

4.(Optional) Rufen Sie alle Fehler aus dem ausgewählten Zeitraum ab, indem Sie diese Zeile entfernen:

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

Behebung unzulässiger Fehler

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

IAM-Richtlinien, die den Zugriff verweigern, weil sie eine Verweigerungsanweisung enthält, enthalten in der Fehlermeldung einen bestimmten Satz fürexplizite und implizite Verweigerungen. Explizite Verweigerungsfehler in IAM enthalten den Ausdruck „with an explicit deny in a <type> policy“. Implizite Verweigerungsfehler in IAM enthalten den Satz „because no <type> policy allows the <action> action“.

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

Eine explizite Ablehnung kann bei jedem dieserRichtlinientypenerfolgen. Zum Beispiel identitätsbasierte Richtlinien, ressourcenbasierte Richtlinien, Berechtigungsgrenzen, SCPs von Organisationen und Sitzungsrichtlinien. Explizite Ablehnungsanweisungen haben immer Vorrang vor Zulassungsanweisungen. Die explizite Ablehnung ist in der identitätsbasiertenRichtlinie für IAM-Benutzer enthalten.

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

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

Weitere Informationen darüber, wie IAM-Richtlinien bewertet und verwaltet werden, finden Sie unterLogik der RichtlinienbewertungundVerwaltung von IAM-Richtlinien.


Weitere Informationen

Richtlinien und Berechtigungen in IAM

Probleme mit IAM-Richtlinien beheben