Funktionsweise von IAM - AWS Identity and Access Management

Funktionsweise von IAM

AWS Identity and Access Management bietet die erforderliche Infrastruktur zur Steuerung der Authentifizierung und Autorisierung für Ihr AWS-Konto.

Zunächst verwendet ein menschlicher Benutzer oder eine Anwendung seine Anmeldeinformationen, um sich bei AWS zu authentifizieren. IAM ordnet die Anmeldeinformationen einem Prinzipal (einem IAM-Benutzer, einem AWS STSVerbundbenutzerprinzipal, einer IAM-Rolle oder einer Anwendung) zu, dem das AWS-Konto vertraut, und authentifiziert die Berechtigung zum Zugriff auf AWS.

Als Nächstes stellt IAM eine Anfrage, um dem Prinzipal Zugriff auf Ressourcen zu gewähren. IAM gewährt oder verweigert den Zugriff als Reaktion auf eine Autorisierungsanfrage. Wenn Sie sich beispielsweise zum ersten Mal bei der Konsole anmelden und sich auf der Startseite der Konsole befinden, greifen Sie nicht auf einen bestimmten Service zu. Wenn Sie einen Service auswählen, senden Sie eine Autorisierungsanfrage für diesen Service an IAM. IAM überprüft, ob Ihre Identität auf der Liste der autorisierten Benutzer steht, ermittelt, welche Richtlinien die gewährte Zugriffsebene steuern und wertet alle anderen möglicherweise geltenden Richtlinien aus. Prinzipale innerhalb Ihres AWS-Konto oder von einem anderen AWS-Konto, dem Sie vertrauen, können Autorisierungsanfragen stellen.

Nach der Autorisierung kann der Prinzipal Aktionen oder Vorgänge mit den Ressourcen in Ihrem AWS-Konto durchführen. Der Prinzipal könnte beispielsweise eine neue Amazon Elastic Compute Cloud-Instance starten, die IAM-Gruppenmitgliedschaft ändern oder Amazon Simple Storage Service-Buckets löschen. Das folgende Diagramm veranschaulicht diesen Prozess anhand der IAM-Infrastruktur:

Dieses Diagramm zeigt, wie ein Prinzipal vom IAM-Service authentifiziert und autorisiert wird, um Aktionen oder Vorgänge auf andere AWS-Services oder -Ressourcen anzuwenden.

Bestandteile einer Anfrage

Wenn ein Auftraggeber versucht, die AWS-Managementkonsole, die AWS-API oder die AWS CLI zu verwenden, sendet dieser Auftraggeber eine Anforderung an AWS. Die Anforderung enthält die folgenden Informationen:

  • Aktionen oder Operationen – Die Aktionen oder Vorgänge, die der Prinzipal ausführen möchte, z. B. eine Aktion in der AWS-Managementkonsole oder ein Vorgang in der AWS CLI oder AWS-API.

  • Ressourcen – Das AWS-Ressourcenobjekt, für das der Prinzipal die Ausführung einer Aktion oder Operation anfordert.

  • Auftraggeber – Die Person oder Anwendung, die eine Entität (Benutzer oder Rolle) verwendet hat, um die Anforderung zu senden. Zu den Informationen zum Prinzipal gehören die Berechtigungsrichtlinien.

  • Umgebungsdaten – Informationen zur IP-Adresse, zum Benutz-Kundendienstmitarbeiter, zum SSL-Aktivierungsstatus und zum Zeitstempel.

  • Ressourcendaten – Daten im Zusammenhang mit der angeforderten Ressource, z. B. ein DynamoDB-Tabellenname oder ein Tag in einer Amazon-EC2-Instance.

AWS erfasst die Anforderungsinformationen in einem Anforderungskontext, den IAM auswertet, um die Anforderung zu autorisieren.

So werden Prinzipale authentifiziert

Ein Prinzipal meldet sich bei AWS mit seinen Anmeldeinformationen an, die von IAM authentifiziert werden, um dem Prinzipal das Senden einer Anfrage an AWS zu ermöglichen. Einige Services, wie etwa Amazon S3 und AWS STS, erlauben bestimmte Anfragen von anonymen Benutzern. Sie stellen jedoch die Ausnahme von der Regel dar. Jeder Benutzertyp durchläuft eine Authentifizierung.

  • Root-Benutzer – Ihre zur Authentifizierung verwendeten Anmeldedaten sind die E-Mail-Adresse, die Sie bei der Erstellung des AWS-Konto verwendet haben, und das damals von Ihnen angegebene Passwort .

  • Verbundprinzipal – Ihr Identitätsanbieter authentifiziert Sie und übergibt Ihre Anmeldeinformationen an AWS. Sie müssen sich nicht direkt bei AWS anmelden. Sowohl IAM Identity Center als auch IAM unterstützen den Identitätsverbund.

  • Benutzer in AWS-IAM-Identity-Center-Verzeichnis(nicht im Verbund) – Direkt im Standardverzeichnis des IAM Identity Center erstellte Benutzer melden sich über das AWS-Zugriffsportal an und geben Ihren Benutzernamen und Ihr Passwort ein.

  • IAM-Benutzer – Sie melden sich an, indem Sie Ihre Konto-ID oder Ihren Alias, Ihren Benutzernamen und Ihr Passwort angeben. Zum Authentifizieren von Workloads über die API oder AWS CLI können Sie temporäre Anmeldeinformationen verwenden, indem Sie eine Rolle übernehmen, oder Sie können langfristige Anmeldeinformationen verwenden, indem Sie Ihren Zugriffsschlüssel und Ihren geheimen Schlüssel angeben.

    Weitere Informationen zu den IAM-Entitäten finden Sie unter IAM-Benutzer und IAM-Rollen.

AWS empfiehlt Ihnen, für alle Benutzer die Multi-Faktor-Authentifizierung (MFA) zu verwenden, um die Sicherheit Ihres Kontos zu erhöhen. Weitere Informationen zu MFA finden Sie unter AWS-Multi-Faktor-Authentifizierung in IAM.

Grundlagen der Autorisierungs- und Berechtigungsrichtlinie

Autorisierung bezieht sich darauf, dass der Prinzipal über die erforderlichen Berechtigungen zum Vervollständigen seiner Anfrage verfügt. Während der Autorisierung identifiziert IAM anhand von Werten aus dem Anforderungskontext die für die Anforderung geltenden Richtlinien. Anschließend wird anhand der Richtlinien festgelegt, ob die Anforderung zugelassen oder abgelehnt werden soll. IAM speichert die meisten Berechtigungsrichtlinien als JSON-Dokumente, die die Berechtigungen für Prinzipal-Entitäten angeben.Übersicht über JSON-Richtlinien

Es gibt verschiedene Arten von Richtlinien, die sich auf eine Autorisierungsanfrage auswirken können. Um Ihren Benutzern Berechtigungen für den Zugriff auf die AWS-Ressourcen in Ihrem Konto zu gewähren, können Sie identitätsbasierte Richtlinien verwenden. Ressourcenbasierte Richtlinien können kontenübergreifenden Zugriff gewähren. Wenn Sie eine Anfrage in einem anderen Konto initiieren müssen, muss eine Richtlinie in dem anderen Konto Ihnen den Zugriff auf die Ressource gewähren und die IAM-Entität, die Sie zum Erstellen der Anfrage verwenden, muss über eine identitätsbasierte Richtlinie verfügen, die die Anfrage erlaubt.

IAM überprüft jede Richtlinie, die auf den Kontext Ihrer Anfrage zutrifft. Bei der Auswertung der IAM-Richtlinien wird eine explizite Verweigerung verwendet. Dies bedeutet, dass IAM die gesamte Anfrage ablehnt und die Auswertung beendet, wenn eine einzelne Berechtigungsrichtlinie eine verweigerte Aktion enthält. Da Anfragen standardmäßig abgelehnt werden, müssen die geltenden Berechtigungsrichtlinien jeden Teil Ihrer Anfrage zulassen, damit IAM Ihre Anfrage autorisieren kann. Die Auswertungslogik für eine Anfrage innerhalb eines einzelnen Kontos folgt diesen Grundregeln:

  • Standardmäßig werden alle Anforderungen verweigert. (Anforderungen, die mit Root-Benutzer des AWS-Kontos-Anmeldeinformationen für Ressourcen im Konto gesendet werden, werden im Allgemeinen erlaubt.)

  • Eine explizite Zugriffserlaubnis in einer Berechtigungsrichtlinie (identitätsbasiert oder ressourcenbasiert) hat Vorrang vor diesem Standardwert.

  • Das Vorhandensein einer AWS Organizations-Service-Kontrollrichtlinie (SCP) oder Ressourcen-Kontrollrichtlinie (RCP) einer Organisation, einer IAM-Berechtigungsgrenze oder einer Sitzungsrichtlinie überschreibt die Zulassung. Wenn eine oder mehrere dieser Richtlinienarten vorhanden sind, müssen sie alle die Anfrage zulassen. Andernfalls wird es implizit abgelehnt. Weitere Informationen zu SCPs und RCPs finden Sie unter Autorisierungsrichtlinien in AWS Organizations im AWS Organizations-Benutzerhandbuch.

  • Eine explizite Verweigerung in einer Richtlinie überschreibt alle Genehmigungen in einer Richtlinie.

Weitere Informationen hierzu finden Sie unter Auswertungslogik für Richtlinien.

Nachdem IAM den Prinzipal authentifiziert und autorisiert hat, genehmigt IAM die Aktionen oder Vorgänge in seiner Anfrage, indem es die für den Prinzipal geltende Berechtigungsrichtlinie auswertet. Jeder AWS-Service definiert die von ihm unterstützten Aktionen (Vorgänge) und umfasst Dinge, die Sie mit einer Ressource tun können, z. B. das Anzeigen, Erstellen, Bearbeiten und Löschen dieser Ressource. Die für den Prinzipal geltende Berechtigungsrichtlinie muss die für die Durchführung einer Operation erforderlichen Aktionen enthalten. Weitere Informationen zur Auswertung von Berechtigungsrichtlinien durch IAM finden Sie unter Auswertungslogik für Richtlinien.

Der Service definiert eine Reihe von Aktionen, die ein Prinzipal für jede Ressource ausführen kann. Stellen Sie beim Erstellen von Berechtigungsrichtlinien sicher, dass Sie die Aktionen einschließen, die der Benutzer ausführen darf. Beispielsweise unterstützt IAM über 40 Aktionen für eine Benutzerressource, darunter die folgenden grundlegenden Aktionen:

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

Darüber hinaus können Sie in Ihrer Berechtigungsrichtlinie Bedingungen angeben, die Zugriff auf Ressourcen gewähren, wenn die Anforderung die angegebenen Bedingungen erfüllt. Sie möchten beispielsweise, dass eine Richtlinienanweisung nach einem bestimmten Datum wirksam wird oder den Zugriff steuert, wenn ein bestimmter Wert in einer API angezeigt wird. Zum Angeben von Bedingungen verwenden Sie das Condition-Element einer Richtlinienanweisung.

Nachdem IAM die Vorgänge in einer angeforderten Anfrage genehmigt hat, kann der Prinzipal mit den zugehörigen Ressourcen in Ihrem Konto arbeiten. Eine Ressource ist ein Objekt, das innerhalb eines Services existiert. Beispiele sind eine Amazon EC2-Instance, ein IAM-Benutzer und ein Amazon S3-Bucket. Wenn der Prinzipal eine Anfrage zur Durchführung einer Aktion für eine Ressource erstellt, die nicht in der Berechtigungsrichtlinie enthalten ist, lehnt der Service die Anfrage ab. Wenn Sie beispielsweise über die Berechtigung zum Löschen einer IAM-Rolle verfügen, aber das Löschen einer IAM-Gruppe anfordern, schlägt die Anforderung fehl, wenn Sie nicht über die Berechtigung zum Löschen von IAM-Gruppen verfügen. Weitere Informationen zu den von den verschiedenen AWS-Services unterstützten Aktionen, Ressourcen und Bedingungsschlüsseln finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS-Services.